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
Basic Roundtrip
Minimal One-Way
< 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 >
See all 50 lines
Best Practices
Always include flight details (airline, number, airports, and times) for each leg so operations can allocate the correct transfer.
Provide passenger ages for every passenger group; pricing uses age, not just category.
Use valid property codes for hotel Pickup/DropOff (LocationType Code="11" UniqueId=...).
Roundtrip searches : send two Location blocks (inbound and outbound) with correct RPH ordering.
Use ISO 8601 datetimes (YYYY-MM-DDThh:mm:ss) and IATA airport codes.
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.