OTA_GroundAvailRS (Ground Availability Response) returns available ground transfer services in response to an OTA_GroundAvailRQ. Use it to read priced service options, conditions, and any applicable fees or penalties.
Structure – Root Element
<OTA_GroundAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="1912GBEZGBQ9" Version="2016.2">
...
</OTA_GroundAvailRS>
{
"OTA_GroundAvailRS": {
"xmlns": "http://www.opentravel.org/OTA/2003/05",
"EchoToken": "1912GBEZGBQ9",
"Version": "2016.2"
}
}
Success | Errors | GroundServices | Warnings (if products are OnRequest).
Success & Errors
- On success, the message may include an empty
<Success/>and populated<GroundServices>. - If no suitable services are found, the response returns
<Errors>withCode="14"andShortText="calculation error". Error Scenarios.
<OTA_GroundAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="1912GBEZGBQ9" Version="2016.2">
<GroundServices/>
<Errors>
<Error ShortText="calculation error" Code="14">No suitable services found</Error>
<Error ShortText="calculation error" Code="14">No suitable services found</Error>
</Errors>
</OTA_GroundAvailRS>
{
"OTA_GroundAvailRS": {
"xmlns": "http://www.opentravel.org/OTA/2003/05",
"EchoToken": "1912GBEZGBQ9",
"Version": "2016.2",
"GroundServices": {},
"Errors": [
{
"ShortText": "calculation error",
"Code": "14"
},
{
"ShortText": "calculation error",
"Code": "14"
}
]
}
}
Structure - Core Elements
GroundServices is a container of one or moreGroundService items, each representing a priced transfer option and its rules.
GroundService
ServiceInfo
High‑level details for the service.- Attributes:
DisabilityVehicleInd(boolean),ServiceType(e.g.,AirportTransfer),MaximumPassengers(integer),ShortDescription(string). - Children:
ServiceLevel(vehicle/contract code),VehicleType(OTA vehicle descriptor).
<ServiceInfo DisabilityVehicleInd="false" ServiceType="AirportTransfer" MaximumPassengers="99" ShortDescription="Airport PMI to Resorts PMI/Shared">
<ServiceLevel Code="S0000"/>
<VehicleType Code="3" Description="Bus"/>
</ServiceInfo>
{
"ServiceInfo": {
"DisabilityVehicleInd": false,
"ServiceType": "AirportTransfer",
"MaximumPassengers": 99,
"ShortDescription": "Airport PMI to Resorts PMI/Shared",
"ServiceLevel": {
"Code": "S0000"
},
"VehicleType": {
"Code": 3,
"Description": "Bus"
}
}
}
RateQualifier
Shows the transfer stock code and the promotion (IN, OT or both).<RateQualifier RateQualifier="TRESPMIPMI" PromotionCode="IN/OT"/>
{
"RateQualifier": {
"RateQualifier": "TRESPMIPMI",
"PromotionCode": "IN/OT"
}
}
Restrictions
Operational/financial flags at search time.CalculationPenaltyInd="true"indicates cancellations may incur a penalty, specified underPaymentRules.
<Restrictions CalculationPenaltyInd="true"/>
{
"Restrictions": {
"CalculationPenaltyInd": true
}
}
TotalCharge
Total price (currency and amount) for the service option in the search response.<TotalCharge CurrencyCode="EUR" Amount="45.00"/>
{
"TotalCharge": {
"CurrencyCode": "EUR",
"Amount": "45.00"
}
}
Extras
Optional or mandatory extras available. UseRequiredInd to distinguish if they are mandatory or not:
<Fees>
<Fee RequiredInd="false" Description="Golf Clubs/IN" IncludedInRate="false" CurrencyCode="EUR" Amount="12.50"/>
</Fees>
{
"Fees": [
{
"RequiredInd": false,
"Description": "Golf Clubs/IN",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 12.50
}
]
}
PaymentRules
Cancellation rules (RuleType="1" = Cancel). When multiple rules apply, the one nearest to the service start date is used.
<PaymentRules>
<PaymentRule RuleType="1" Amount="10.00" CurrencyCode="EUR" AbsoluteDeadline="2025-07-06T00:00:00"/>
<PaymentRule RuleType="1" Amount="20.00" CurrencyCode="EUR" AbsoluteDeadline="2025-07-09T00:00:00"/>
</PaymentRules>
{
"PaymentRules": [
{
"RuleType": 1,
"Amount": 10.00,
"CurrencyCode": "EUR",
"AbsoluteDeadline": "2025-07-06T00:00:00"
},
{
"RuleType": 1,
"Amount": 20.00,
"CurrencyCode": "EUR",
"AbsoluteDeadline": "2025-07-09T00:00:00"
}
]
}
Shuttle (GeoCode Searches)
When the request used GeoCodes, services may includeShuttle/ServiceLocation entries. PickupInd marks direction membership; hotel candidates are sorted by distance from the provided GeoCode. If the distributor is Giata‑licensed, ResourceName can carry the Giata code.
<Shuttle>
<ServiceLocation PickupInd="true" Sequence="1">
<Address Latitude="3.12345" Longitude="6.12345" Distance="8">
<LocationType Code="11" UniqueId="AMTSES1234" ResourceName="54123" DescriptionDetail="Hotel Happy 1"/>
</Address>
</ServiceLocation>
<ServiceLocation PickupInd="true" Sequence="2">
<Address Latitude="3.12366" Longitude="6.565" Distance="34">
<LocationType Code="11" UniqueId="AMTSES1235" ResourceName="54163" DescriptionDetail="Hotel Happy 2"/>
</Address>
</ServiceLocation>
</Shuttle>
{
"Shuttle": [
{
"ServiceLocation": {
"PickupInd": true,
"Sequence": 1,
"Address": {
"Latitude": 3.12345,
"Longitude": 6.12345,
"Distance": 8,
"LocationType": {
"Code": 11,
"UniqueId": "AMTSES1234",
"ResourceName": "54123",
"DescriptionDetail": "Hotel Happy 1"
}
}
}
},
{
"ServiceLocation": {
"PickupInd": true,
"Sequence": 2,
"Address": {
"Latitude": 3.12366,
"Longitude": 6.565,
"Distance": 34,
"LocationType": {
"Code": 11,
"UniqueId": "AMTSES1235",
"ResourceName": "54163",
"DescriptionDetail": "Hotel Happy 2"
}
}
}
}
]
}
Per‑Resort Searches
If the search is per‑resort, the response may list available hotels underTPA_Extensions/Properties.
<TPA_Extensions>
<Properties>
<Property HotelCode="AMTSES0M1C" HotelName="Central Park" HotelCodeContext="35252"/>
<Property HotelCode="AMTSES2EWO" HotelName="Anibal Hostal" HotelCodeContext="47988"/>
</Properties>
</TPA_Extensions>
{
"TPA_Extensions": {
"Properties": [
{
"Property": {
"HotelCode": "AMTSES0M1C",
"HotelName": "Central Park",
"HotelCodeContext": "35252"
}
},
{
"Property": {
"HotelCode": "AMTSES2EWO",
"HotelName": "Anibal Hostal",
"HotelCodeContext": "47988"
}
}
]
}
}
Warnings
When the request asks to include OnRequest products, the response includes warnings noting the service status.<Warnings>
<Warning Type="3" Code="507">Service S0000/S0000 is OnRequest</Warning>
<Warning Type="3" Code="507">Service P0000/P0000 is OnRequest</Warning>
</Warnings>
{
"Warnings": [
{
"Type": 3,
"Code": 507,
"Message": "Service S0000/S0000 is OnRequest"
},
{
"Type": 3,
"Code": 507,
"Message": "Service P0000/P0000 is OnRequest"
}
]
}
Complete Examples
- Basic
- GeoCode search (shuttle + candidates)
<?xml version="1.0" encoding="UTF-8"?>
<OTA_GroundAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="2016.2">
<Success/>
<GroundServices>
<GroundService>
<ServiceInfo DisabilityVehicleInd="false" ServiceType="AirportTransfer" MaximumPassengers="99" ShortDescription="Airport PMI to Resorts PMI/Shared">
<ServiceLevel Code="S0000"/>
<VehicleType Code="3" Description="Bus"/>
</ServiceInfo>
<TotalCharge Amount="45.00" CurrencyCode="EUR"/>
<Restrictions CalculationPenaltyInd="true"/>
<PaymentRules>
<PaymentRule RuleType="1" Amount="10.00" CurrencyCode="EUR" AbsoluteDeadline="2025-10-16T00:00:00"/>
<PaymentRule RuleType="1" Amount="20.00" CurrencyCode="EUR" AbsoluteDeadline="2025-10-17T00:00:00"/>
</PaymentRules>
<Fees>
<Fee RequiredInd="false" Description="Golf Clubs/IN" IncludedInRate="false" CurrencyCode="EUR" Amount="12.50"/>
<Fee RequiredInd="false" Description="Surf Board/OT" IncludedInRate="false" CurrencyCode="EUR" Amount="12.50"/>
</Fees>
</GroundService>
</GroundServices>
</OTA_GroundAvailRS>
{
"OTA_GroundAvailRS": {
"Success": {},
"GroundServices": {
"GroundService": [
{
"ServiceInfo": {
"MaximumPassengers": 99,
"ShortDescription": "Airport PMI to Resorts PMI/Shared Economy",
"ServiceLevel": {
"Code": "SE000"
},
"VehicleType": {
"value": "",
"Code": "26",
"Description": "Shared Economy"
},
"DisabilityVehicleInd": false,
"ServiceType": "AirportTransfer"
},
"RateQualifier": [
{
"RateQualifier": "TRESPMIPMI",
"PromotionCode": "IN/OT"
}
],
"Restrictions": [
{
"CancellationPenaltyInd": false
}
],
"ServiceCharge": [
{
"ChargePurpose": {
"Code": "35",
"Description": "Base Rate",
"DescriptionDetail": "Per Pax"
},
"Calculation": [
{
"Quantity": 6,
"UnitName": "SERVICE"
}
],
"Amount": 32.64,
"CurrencyCode": "EUR"
}
],
"Fees": {
"Fee": [
{
"Description": "Luggage/IN",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 5.00,
"RequiredInd": false
},
{
"Description": "Luggage/OT",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 5.00,
"RequiredInd": false
}
]
},
"TotalCharge": {
"EstimatedTotalAmount": 32.64,
"CurrencyCode": "EUR"
}
},
{
"ServiceInfo": {
"MaximumPassengers": 99,
"ShortDescription": "Airport PMI to Resorts PMI/Shared",
"ServiceLevel": {
"Code": "S0000"
},
"VehicleType": {
"value": "",
"Code": "3",
"Description": "Shared"
},
"DisabilityVehicleInd": false,
"ServiceType": "AirportTransfer"
},
"RateQualifier": [
{
"RateQualifier": "TRESPMIPMI",
"PromotionCode": "IN/OT"
}
],
"Restrictions": [
{
"CancellationPenaltyInd": false
}
],
"ServiceCharge": [
{
"ChargePurpose": {
"Code": "35",
"Description": "Base Rate",
"DescriptionDetail": "Per Pax"
},
"Calculation": [
{
"Quantity": 6,
"UnitName": "SERVICE"
}
],
"Amount": 57.12,
"CurrencyCode": "EUR"
}
],
"Fees": {
"Fee": [
{
"Description": "Luggage/IN",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 5.00,
"RequiredInd": false
},
{
"Description": "Luggage/OT",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 5.00,
"RequiredInd": false
}
]
},
"TotalCharge": {
"EstimatedTotalAmount": 57.12,
"CurrencyCode": "EUR"
}
},
{
"ServiceInfo": {
"MaximumPassengers": 99,
"ShortDescription": "Airport PMI to Resorts PMI/Shared Speedy",
"ServiceLevel": {
"Code": "SS000"
},
"VehicleType": {
"value": "",
"Code": "26",
"Description": "Shared Speedy"
},
"DisabilityVehicleInd": false,
"ServiceType": "AirportTransfer"
},
"RateQualifier": [
{
"RateQualifier": "TRESPMIPMI",
"PromotionCode": "IN/OT"
}
],
"Restrictions": [
{
"CancellationPenaltyInd": false
}
],
"ServiceCharge": [
{
"ChargePurpose": {
"Code": "35",
"Description": "Base Rate",
"DescriptionDetail": "Per Pax"
},
"Calculation": [
{
"Quantity": 6,
"UnitName": "SERVICE"
}
],
"Amount": 81.60,
"CurrencyCode": "EUR"
}
],
"Fees": {
"Fee": [
{
"Description": "Luggage/IN",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 5.00,
"RequiredInd": false
},
{
"Description": "Luggage/OT",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 5.00,
"RequiredInd": false
}
]
},
"TotalCharge": {
"EstimatedTotalAmount": 81.60,
"CurrencyCode": "EUR"
}
},
{
"ServiceInfo": {
"MaximumPassengers": 4,
"ShortDescription": "Airport PMI to Resorts PMI/Private",
"ServiceLevel": {
"Code": "P0000"
},
"VehicleType": {
"value": "",
"Code": "26",
"Description": "Private"
},
"DisabilityVehicleInd": false,
"ServiceType": "AirportTransfer"
},
"RateQualifier": [
{
"RateQualifier": "TRESPMIPMI",
"PromotionCode": "IN/OT"
}
],
"Restrictions": [
{
"CancellationPenaltyInd": false
}
],
"ServiceCharge": [
{
"ChargePurpose": {
"Code": "35",
"Description": "Base Rate",
"DescriptionDetail": "Per Unit 1-4"
},
"Calculation": [
{
"Quantity": 6,
"UnitName": "SERVICE"
}
],
"Amount": 163.20,
"CurrencyCode": "EUR"
}
],
"Fees": {
"Fee": [
{
"Description": "Pet - Large Size/IN",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 20.00,
"RequiredInd": false
},
{
"Description": "Water 50cl/IN",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 2.00,
"RequiredInd": false
},
{
"Description": "Pet - Large Size/OT",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 20.00,
"RequiredInd": false
},
{
"Description": "Water 50cl/OT",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 2.00,
"RequiredInd": false
}
]
},
"TotalCharge": {
"EstimatedTotalAmount": 163.20,
"CurrencyCode": "EUR"
}
},
{
"ServiceInfo": {
"MaximumPassengers": 4,
"ShortDescription": "Airport PMI to Resorts PMI/Private Wheelchair adapted",
"ServiceLevel": {
"Code": "PW000"
},
"VehicleType": {
"value": "",
"Code": "26",
"Description": "Private Wheelchair adapted"
},
"DisabilityVehicleInd": false,
"ServiceType": "AirportTransfer"
},
"RateQualifier": [
{
"RateQualifier": "TRESPMIPMI",
"PromotionCode": "IN/OT"
}
],
"Restrictions": [
{
"CancellationPenaltyInd": false
}
],
"ServiceCharge": [
{
"ChargePurpose": {
"Code": "35",
"Description": "Base Rate",
"DescriptionDetail": "Per Unit 1-4"
},
"Calculation": [
{
"Quantity": 6,
"UnitName": "SERVICE"
}
],
"Amount": 204.00,
"CurrencyCode": "EUR"
}
],
"Fees": {
"Fee": [
{
"Description": "Water 50cl/IN",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 2.00,
"RequiredInd": false
},
{
"Description": "Water 50cl/OT",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 2.00,
"RequiredInd": false
}
]
},
"TotalCharge": {
"EstimatedTotalAmount": 204.00,
"CurrencyCode": "EUR"
}
},
{
"ServiceInfo": {
"MaximumPassengers": 8,
"ShortDescription": "Airport PMI to Resorts PMI/Private Limousine",
"ServiceLevel": {
"Code": "P0L00"
},
"VehicleType": {
"value": "",
"Code": "26",
"Description": "Private Limousine"
},
"DisabilityVehicleInd": false,
"ServiceType": "AirportTransfer"
},
"RateQualifier": [
{
"RateQualifier": "TRESPMIPMI",
"PromotionCode": "IN/OT"
}
],
"Restrictions": [
{
"CancellationPenaltyInd": false
}
],
"ServiceCharge": [
{
"ChargePurpose": {
"Code": "35",
"Description": "Base Rate",
"DescriptionDetail": "Per Unit 1-8"
},
"Calculation": [
{
"Quantity": 6,
"UnitName": "SERVICE"
}
],
"Amount": 1224.00,
"CurrencyCode": "EUR"
}
],
"Fees": {
"Fee": [
{
"Description": "VIP Treatment/IN",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 1000.00,
"RequiredInd": false
},
{
"Description": "Pet - Large Size/IN",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 20.00,
"RequiredInd": false
},
{
"Description": "VIP Treatment/OT",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 1000.00,
"RequiredInd": false
},
{
"Description": "Pet - Large Size/OT",
"IncludedInRate": false,
"CurrencyCode": "EUR",
"Amount": 20.00,
"RequiredInd": false
}
]
},
"TotalCharge": {
"EstimatedTotalAmount": 1224.00,
"CurrencyCode": "EUR"
}
}
]
},
"Version": 2016.2,
"TransactionIdentifier": "1-6/6"
}
}
<OTA_GroundAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" EchoToken="geocode-xyz" Version="2016.2">
<Success/>
<GroundServices>
<GroundService>
<ServiceInfo DisabilityVehicleInd="false" ServiceType="AirportTransfer" MaximumPassengers="99" ShortDescription="Airport PMI to Resorts PMI/Shared">
<ServiceLevel Code="S0000"/>
<VehicleType Code="3" Description="Bus"/>
</ServiceInfo>
<Shuttle>
<ServiceLocation PickupInd="true" Sequence="1">
<Address Latitude="3.12345" Longitude="6.12345" Distance="8">
<LocationType Code="11" UniqueId="AMTSES1234" ResourceName="54123" DescriptionDetail="Hotel Happy 1"/>
</Address>
</ServiceLocation>
<ServiceLocation PickupInd="true" Sequence="2">
<Address Latitude="3.12366" Longitude="6.565" Distance="34">
<LocationType Code="11" UniqueId="AMTSES1235" ResourceName="54163" DescriptionDetail="Hotel Happy 2"/>
</Address>
</ServiceLocation>
</Shuttle>
<TotalCharge CurrencyCode="EUR" Amount="45.00"/>
</GroundService>
</GroundServices>
<Warnings>
<Warning Type="3" Code="507">Service S0000/S0000 is OnRequest</Warning>
</Warnings>
</OTA_GroundAvailRS>
{
"OTA_GroundAvailRS": {
"Success": "",
"GroundServices": {
"GroundService": [
{
"ServiceInfo": {
"ServiceLevel": {
"Code": "S0000"
},
"VehicleType": {
"Code": "3",
"Description": "Bus"
},
"DisabilityVehicleInd": "false",
"ServiceType": "AirportTransfer",
"MaximumPassengers": "99",
"ShortDescription": "Airport PMI to Resorts PMI/Shared"
},
"Shuttle": {
"ServiceLocation": [
{
"Address": {
"LocationType": {
"Code": "11",
"UniqueId": "AMTSES1234",
"ResourceName": "54123",
"DescriptionDetail": "Hotel Happy 1"
},
"Latitude": "3.12345",
"Longitude": "6.12345",
"Distance": "8"
},
"PickupInd": "true",
"Sequence": "1"
},
{
"Address": {
"LocationType": {
"Code": "11",
"UniqueId": "AMTSES1235",
"ResourceName": "54163",
"DescriptionDetail": "Hotel Happy 2"
},
"Latitude": "3.12366",
"Longitude": "6.565",
"Distance": "34"
},
"PickupInd": "true",
"Sequence": "2"
}
]
},
"TotalCharge": {
"CurrencyCode": "EUR",
"Amount": "45.00"
}
}
]
},
"Warnings": {
"Warning": {
"Type": "3",
"Code": "507",
"_text": "Service S0000/S0000 is OnRequest"
}
},
"xmlns": "http://www.opentravel.org/OTA/2003/05",
"EchoToken": "geocode-xyz",
"Version": "2016.2"
}
}
Best Practices
- Always echo the request token in
EchoToken. - Validate totals before booking—
TotalChargeis authoritative at search time. - Cancellations: apply the rule with the deadline closest to the service start date.
- Extras: treat
RequiredInd="true"as mandatory and auto‑include in pricing.

