> ## Documentation Index
> Fetch the complete documentation index at: https://docs.axisdata.net/llms.txt
> Use this file to discover all available pages before exploring further.

# OTA_GroundAvailRQ

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.

<Tip>Already know OTA ground messages? Jump straight into testing.</Tip>

<Card title="OTA_GroundAvailRQ API call" icon="magnifying-glass" href="/api-reference/endpoint/transfer/availability" arrow="true" horizontal>
  Skip & Hit the Playground.
</Card>

## 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

```xml theme={null}
<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).

```xml theme={null}
<POS>
  <Source>
    <RequestorID Instance="MF0000" ID_Context="AxisData" ID="TEST" Type="22"/>
  </Source>
  <Source>
    <RequestorID Type="88" ID="TEST" MessagePassword="testpass"/>
  </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.

<Tip> Use Hotel or Airport as Pickup/DropOff as needed. </Tip>

#### AirportInfo

Provide flight **Arrival**/**Departure** with IATA airport codes and ISO 8601 datetimes. Include the **Airline** (code and flight number) when known.

```xml theme={null}
<Pickup>
  <AirportInfo>
    <Arrival CodeContext="IATA" LocationCode="PMI" 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.

```xml theme={null}
<DropOff>
  <Address>
    <LocationType Code="11" UniqueId="AESPMI5L46"/>
  </Address>
</DropOff>
```

For now, only LocationType Code = 11 is supported.

<Tip> If the OTS hotel code is unknown, it is possible to add the GIATA ID at `UniqueId`</Tip>

### 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`

```xml theme={null}
<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.

```xml theme={null}
<ServiceType Code="TRANSFER"/>
```

### DisabilityInfo

Flag if an adapted vehicle is required.

```xml theme={null}
<DisabilityInfo RequiredInd="false"/>
```

### Vehicle Preferences

Optional node. Constrain response to a specific service/vehicle level when needed.

```xml theme={null}
<VehiclePrefs>
  <ServiceLevel Code="P0000"/>
</VehiclePrefs>
```

### GeoCodes

If the exact hotel code is unknown, search by **latitude/longitude** and radius to get candidate hotels.

```xml theme={null}
<Address Latitude="6.12345" Longitude="8.12345" Radius="100" MaxServiceLocations="15">
  <LocationType Code="11"/>
</Address>
```

<Warning>GeoCode search is only available for airport/port ↔ hotel combinations (not for inter-resort transfers).</Warning>

## Complete Examples

<CodeGroup>
  ```xml Basic Roundtrip expandable theme={null}
  <OTA_GroundAvailRQ Version="2016.2" xmlns="http://www.opentravel.org/OTA/2003/05">
    <POS>
      <Source>
        <RequestorID Instance="MF0000" ID_Context="AxisData" ID="TEST" Type="22"/>
      </Source>
      <Source>
        <RequestorID Type="88" ID="TEST" MessagePassword="testpass"/>
      </Source>
    </POS>
    <Service>
      <Locations>
        <Location RPH="1">
          <Pickup>
            <AirportInfo>
              <Arrival CodeContext="IATA" LocationCode="PMI" 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="AESPMI5L46"/>
            </Address>
          </DropOff>
        </Location>
        <Location RPH="2">
          <Pickup>
            <Address>
              <LocationType Code="11" UniqueId="AESPMI5L46"/>
            </Address>
          </Pickup>
          <DropOff>
            <AirportInfo>
              <Arrival CodeContext="IATA" LocationCode="MAN" DateTime="2026-07-24T23:10:00"/>
              <Departure CodeContext="IATA" LocationCode="PMI" 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>
  ```

  ```xml Minimal One-Way expandable theme={null}
  <OTA_GroundAvailRQ Version="2016.2" xmlns="http://www.opentravel.org/OTA/2003/05">
    <POS>
      <Source>
        <RequestorID ID="TEST" Instance="MF0000" Type="22" ID_Context="AxisData"/>
      </Source>
      <Source>
        <RequestorID ID="TEST" Type="88" MessagePassword="testpass"/>
      </Source>
    </POS>
    <Service>
      <Locations>
        <Location RPH="1">
          <Pickup>
            <AirportInfo>
              <Arrival CodeContext="IATA" LocationCode="PMI" DateTime="2026-07-17T12:00:00"/>
            </AirportInfo>
          </Pickup>
          <DropOff>
            <Address>
              <LocationType Code="11" UniqueId="AESPMI5L46"/>
            </Address>
          </DropOff>
        </Location>
      </Locations>
    </Service>
    <Passengers Quantity="2" Age="30">
      <Category Code="10"/>
    </Passengers>
    <Passengers Quantity="1" Age="9">
      <Category Code="8"/>
    </Passengers>
    <ServiceType Code="TRANSFER"/>
    <DisabilityInfo RequiredInd="false"/>
  </OTA_GroundAvailRQ>
  ```
</CodeGroup>

## 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

<Card title="OTA_GroundAvailRQ API call" icon="magnifying-glass" href="/api-reference/endpoint/transfer/availability" arrow="true" horizontal>
  Try our API playground in real time.
</Card>

<Tip>Use any example in the playground to test against our sandbox.         </Tip>
