Skip to main content
The OTA_GroundAvailRQ (Transfer Availability Request) is used to search available transfer services (e.g., airport ↔ hotel, port ↔ hotel), returning priced options according to the distributor’s agreements.
Already know OTA ground messages? Jump straight into testing.

OTA_GroundAvailRQ API call

Skip & Hit the Playground.

Purpose

This request allows you to:
  • Identify transfer services between two points (airport/port ↔ hotel).
  • Send mandatory flight details needed to operate the transfer.
  • Specify passenger mix and special requirements (e.g., disability).
  • Optionally narrow by vehicle/service level.

Structure – Root Element

<OTA_GroundAvailRQ Version="2016.2" xmlns="http://www.opentravel.org/OTA/2003/05">
  ...
</OTA_GroundAvailRQ>
Key Attributes:
  • Version: OTA Ground pack supported from 2012.2 and higher. Use the latest supported version (e.g., 2016.2).
  • xmlns: http://www.opentravel.org/OTA/2003/05
  • EchoToken: optional but recommended for idempotency and tracing.

Structure – Core Elements

POS (Point of Sale)

Identifies the requesting party and credentials. Use Instance to control availability behavior (e.g., include OnRequest products).
<POS>
  <Source>
    <RequestorID Instance="MF0000" ID_Context="AxisData" ID="TST1" Type="22"/>
  </Source>
  <Source>
    <RequestorID Type="88" ID="TST1" MessagePassword="TST1password?"/>
  </Source>
</POS>
OnRequest Switch: set Instance="MF0001" to include OnRequest products in search results (otherwise use MF0000). The response will include warnings indicating OnRequest services.

Service → Location

A Service defines the transfer and contains one or two Location blocks. One Location = one-way; two Locations = roundtrip. Locations are ordered by RPH and composed of:
  • Pickup: where the service starts for that leg.
  • DropOff: where the service ends for that leg.
Use Hotel or Airport as Pickup/DropOff as needed.

AirportInfo

Provide flight Arrival/Departure with IATA airport codes and ISO 8601 datetimes. Include the Airline (code and flight number) when known.
<Pickup>
  <AirportInfo>
    <Arrival CodeContext="IATA" LocationCode="ACE" DateTime="2026-07-17T20:55:00"/>
    <Departure CodeContext="IATA" LocationCode="MAN" DateTime="2026-07-17T17:15:00"/>
  </AirportInfo>
  <Airline FlightNumber="3445" Code="FR"/>
</Pickup>

Address

Use hotel/property codes for hotel points; other location types use OTA IPC (Index Point Code) values.
<DropOff>
  <Address>
    <LocationType Code="11" UniqueId="AMTSES08UI"/>
  </Address>
</DropOff>
If the OTS hotel code is unknown, it is possible to add the GIATA ID at UniqueId
Typical LocationType Code values:
  • 5 City (Resort)
  • 7 Rail station
  • 11 Hotel
  • 18 Car Rental location
  • 25 Port

Passengers

Define each passenger group with Quantity and mandatory Age, and classify via Category/Code using OTA AQC values:
  • Adults → 10
  • Children → 8
  • Infants → 7
<Passengers Quantity="2" Age="30">
  <Category Code="10"/>
</Passengers>
<Passengers Quantity="1" Age="9">
  <Category Code="8"/>
</Passengers>

ServiceType

Classifies the request as a transfer search.
<ServiceType Code="TRANSFER"/>

DisabilityInfo

Flag if an adapted vehicle is required.
<DisabilityInfo RequiredInd="false"/>

Vehicle Preferences

Optional node. Constrain response to a specific service/vehicle level when needed.
<VehiclePrefs>
  <ServiceLevel Code="P0000"/>
</VehiclePrefs>

GeoCodes

If the exact hotel code is unknown, search by latitude/longitude and radius to get candidate hotels (only hotel LocationType Code="11" supported).
<Address Latitude="6.12345" Longitude="8.12345" Radius="100" MaxServiceLocations="15">
  <LocationType Code="11"/>
</Address>
GeoCode search is only available for airport/port ↔ hotel combinations (not for inter-resort transfers).

Complete Examples

<OTA_GroundAvailRQ Version="2016.2" xmlns="http://www.opentravel.org/OTA/2003/05">
  <POS>
    <Source>
      <RequestorID Instance="MF0000" ID_Context="AxisData" ID="TST1" Type="22"/>
    </Source>
    <Source>
      <RequestorID Type="88" ID="TST1" MessagePassword="TST1password?"/>
    </Source>
  </POS>
  <Service>
    <Locations>
      <Location RPH="1">
        <Pickup>
          <AirportInfo>
            <Arrival CodeContext="IATA" LocationCode="ACE" DateTime="2026-07-17T20:55:00"/>
            <Departure CodeContext="IATA" LocationCode="MAN" DateTime="2026-07-17T17:15:00"/>
          </AirportInfo>
          <Airline FlightNumber="3445" Code="FR"/>
        </Pickup>
        <DropOff>
          <Address>
            <LocationType Code="11" UniqueId="AMTSES08UI"/>
          </Address>
        </DropOff>
      </Location>
      <Location RPH="2">
        <Pickup>
          <Address>
            <LocationType Code="11" UniqueId="AMTSES08UI"/>
          </Address>
        </Pickup>
        <DropOff>
          <AirportInfo>
            <Arrival CodeContext="IATA" LocationCode="MAN" DateTime="2026-07-24T23:10:00"/>
            <Departure CodeContext="IATA" LocationCode="ACE" DateTime="2026-07-24T21:30:00"/>
          </AirportInfo>
          <Airline FlightNumber="3446" Code="FR"/>
        </DropOff>
      </Location>
    </Locations>
  </Service>
  <Passengers Quantity="2" Age="30">
    <Category Code="10"/>
  </Passengers>
  <Passengers Quantity="1" Age="2">
    <Category Code="8"/>
  </Passengers>
  <ServiceType Code="TRANSFER"/>
  <DisabilityInfo RequiredInd="false"/>
</OTA_GroundAvailRQ>

Best Practices

  1. Always include flight details (airline, number, airports, and times) for each leg so operations can allocate the correct transfer.
  2. Provide passenger ages for every passenger group; pricing uses age, not just category.
  3. Use valid property codes for hotel Pickup/DropOff (LocationType Code="11" UniqueId=...).
  4. Roundtrip searches: send two Location blocks (inbound and outbound) with correct RPH ordering.
  5. Use ISO 8601 datetimes (YYYY-MM-DDThh:mm:ss) and IATA airport codes.
  6. Switch to MF0001 when you want to include OnRequest products in the results.

Playground

OTA_GroundAvailRQ API call

Try our API playground in real time.
Use any example in the playground to test against our sandbox.