Skip to main content
The OTA_HotelAvailRS (Hotel Availability Response) returns bookable options and related context for one or more properties in reply to an OTA_HotelAvailRQ. It is compatible with enrichment switches and multi-room behavior defined for the availability workflow.

Purpose

  • Confirm successful processing (<Success/>) or return error diagnostics (<Errors/>). Error Scenarios.
  • Deliver one or more <RoomStay> items with pricing, guest counts, and property references.
  • Optionally include contextual blocks (HotelStays, Areas, amenities/descriptions) controlled by InfoSource.

Structure – Root Element

<OTA_HotelAvailRS xmlns="http://www.opentravel.org/OTA/2003/05" Version="2016.2" EchoToken="1">
  <Success/>
  ...
</OTA_HotelAvailRS>
The EchoToken is useful to identify transactions.
Success Indicates the request was processed without fatal errors. When absent, see Errors. Errors Container for one or more Error items describing non-recoverable issues in the request. Error Scenarios. Warnings Used for non-fatal guidance. Example: when a multi-room search cannot satisfy every candidate, a warning like Code="14" with text Not all rooms in the request do have a suitable candidate may be present.

Structure - Core Elements

HotelStays

Portfolio-level hotel facts that can accompany availability (e.g., BasicPropertyInfo with HotelCode, HotelName, AreaID, optional VendorMessages, Award). Example
    <HotelStays>
        <HotelStay>
            <BasicPropertyInfo HotelCode="AMTSES08UI" HotelName="Caserio de Lanzarote" HotelCodeContext="11111" AreaID="1012SA">
                <Award Rating="2 Stars"/>
            </BasicPropertyInfo>
        </HotelStay>
    </HotelStays>
HotelCodeContext returns the GIATA code if the client is licensed

Areas

Geographical labels corresponding to the AreaID linkage. Example
<Areas>
	<Area AreaID="1012SA">
		<AreaDescription Name="Country">
			<Text>Spain</Text>
		</AreaDescription>
		<AreaDescription Name="CountryCode">
			<Text>ES</Text>
		</AreaDescription>
		<AreaDescription Name="TravelDestination">
			<Text>ACE</Text>
		</AreaDescription>
		<AreaDescription Name="Destination">
			<Text>Canarian Islands</Text>
		</AreaDescription>
		<AreaDescription Name="Region">
			<Text>Lanzarote</Text>
		</AreaDescription>
		<AreaDescription Name="Resort">
			<Text>San Bartolome</Text>
		</AreaDescription>
		<AreaDescription Name="ResortCode">
			<Text>1012SA</Text>
		</AreaDescription>
		<AreaDescription Name="Airport">
			<Text>ACE</Text>
		</AreaDescription>
	</Area>
</Areas>

RoomStays

Each RoomStay conveys a bookable option (room/board/rateplan) for a given hotel.
  • RoomStay@RoomStayCandidateRPH echoes the corresponding room candidate index from the request.
  • Grouping Semantics
    • Standard searches: multiple room/board combinations for the same hotel may share the same RPH for grouping purposes.
    • Multi-room mode: each RoomStay carries a unique RPH (one per returned option) to help client-side combination logic.
<RoomStay RoomStayCandidateRPH="0" RPH="0" ResponseType="PropertyList">

RoomType

Specifies the room code of the returned product.
<RoomTypes>
	<RoomType RoomTypeCode="RMSD000000"/>
</RoomTypes>
The room codes breakdown can be found at Mapping codes

RoomRates

  • Pricing appears under RoomRates/RoomRate/Rates/Rate as Base and Total (amounts after tax, currency).
  • Availability for each option is indicated at RoomRate@NumberOfUnits (omitted when free sales apply).
  • The ChargeType code on Rate reflects the original contract rate basis (OTA CHG codelist):
    • 19 → Per Unit
    • 21 → Per Person
  • Features/Feature/Description/Text indicates the board for the returned rate.
<RoomRates>
	<RoomRate RoomTypeCode="RMSD000000" NumberOfUnits="99">
		<Rates>
			<Rate ChargeType="21">
				<Base AmountAfterTax="900.00" CurrencyCode="EUR"/>
				<Total AmountAfterTax="900.00" CurrencyCode="EUR"/>
			</Rate>
		</Rates>
		<Features>
			<Feature>
				<Description>
					<Text>BB</Text>
				</Description>
			</Feature>
		</Features>
	</RoomRate>
</RoomRates>

GuestCounts

Shows the pax count for the returned product:
  • AgeQualifyingCode values:
    • 10: Adult
    • 8: Child
    • 7: Infant
<GuestCounts>
	<GuestCount AgeQualifyingCode="10" Age="30" Count="2"/>
</GuestCounts>

TimeSpan

Indicates the dates for which the service is available.
<TimeSpan Start="2026-07-17" End="2026-07-24"/>

BasicPropertyInfo

Shows the hotel code for the returned room stay. Vendor Messages can also be displayed at this section. Check Vendor Messages
<BasicPropertyInfo HotelCode="AMTSES08UI">
	<VendorMessages>
		<VendorMessage Title="Free Stay Offers" InfoType="3">
			<SubSection SubTitle="100" SubCode="Value">
				<Paragraph>
					<Text>Free Stay Offers 100</Text>
				</Paragraph>
			</SubSection>
			<SubSection SubTitle="FSO" SubCode="OTS"/>
		</VendorMessage>
		<VendorMessage Title="FreeCancellationConditions" InfoType="2">
			<SubSection SubTitle="FCP-RATE" SubCode="DRV"/>
			<SubSection SubTitle="FCP-P7D" SubCode="DRV"/>
		</VendorMessage>
	</VendorMessages>
</BasicPropertyInfo>

Rules and Features

Enrichment via InfoSource

The response can be enriched beyond RoomStays depending on the InfoSource value used in the request:
ValueMeaning
(not set)Full enrichment (equivalent to 1234)
0No enrichment – only RoomStays are included
1Include HotelStays only
2Include Areas only
3Include room Amenities only
4Include RoomDescription only
5Include BoardDescription only
Combination is supported (e.g., InfoSource="12" returns HotelStays + Areas).

Multi-Room Specifics

  • Up to 5 room candidates per request are supported.
  • Response returns one RoomStay per option that fits each candidate; combine client‑side using RoomStayCandidateRPH, RPH, and NumberOfUnits.
  • If one or more candidates cannot be satisfied, a warning is returned.

Complete Examples

<OTA_HotelAvailRS
    xmlns="http://www.opentravel.org/OTA/2003/05" Version="2008.1" TransactionIdentifier="1-1/1">
    <Success/>
    <HotelStays>
        <HotelStay>
            <BasicPropertyInfo HotelCode="AMTSES08UI" HotelName="Caserio de Lanzarote" HotelCodeContext="11111" AreaID="1012SA">
                <Award Rating="2 Stars"/>
            </BasicPropertyInfo>
        </HotelStay>
    </HotelStays>
    <RoomStays>
        <RoomStay RoomStayCandidateRPH="0" RPH="0" ResponseType="PropertyList">
            <RoomTypes>
                <RoomType RoomTypeCode="RMSD000000"/>
            </RoomTypes>
            <RoomRates>
                <RoomRate RoomTypeCode="RMSD000000" NumberOfUnits="99">
                    <Rates>
                        <Rate ChargeType="21">
                            <Base AmountAfterTax="900.00" CurrencyCode="EUR"/>
                            <Total AmountAfterTax="900.00" CurrencyCode="EUR"/>
                        </Rate>
                    </Rates>
                    <Features>
                        <Feature>
                            <Description>
                                <Text>BB</Text>
                            </Description>
                        </Feature>
                    </Features>
                </RoomRate>
            </RoomRates>
            <GuestCounts>
                <GuestCount AgeQualifyingCode="10" Age="30" Count="2"/>
            </GuestCounts>
            <TimeSpan Start="2026-07-17" End="2026-07-24"/>
            <BasicPropertyInfo HotelCode="AMTSES08UI">
                <VendorMessages>
                    <VendorMessage Title="Free Stay Offers" InfoType="3">
                        <SubSection SubTitle="100" SubCode="Value">
                            <Paragraph>
                                <Text>Free Stay Offers 100</Text>
                            </Paragraph>
                        </SubSection>
                        <SubSection SubTitle="FSO" SubCode="OTS"/>
                    </VendorMessage>
                    <VendorMessage Title="FreeCancellationConditions" InfoType="2">
                        <SubSection SubTitle="FCP-RATE" SubCode="DRV"/>
                        <SubSection SubTitle="FCP-P7D" SubCode="DRV"/>
                    </VendorMessage>
                </VendorMessages>
            </BasicPropertyInfo>
            <Reference Type="22" ID="TST1" ID_Context="TST1"/>
        </RoomStay>
        <RoomStay RoomStayCandidateRPH="0" RPH="1" ResponseType="PropertyList">
            <RoomTypes>
                <RoomType RoomTypeCode="RMSD000000"/>
            </RoomTypes>
            <RoomRates>
                <RoomRate RoomTypeCode="RMSD000000" NumberOfUnits="99">
                    <Rates>
                        <Rate ChargeType="21">
                            <Base AmountAfterTax="1050.00" CurrencyCode="EUR"/>
                            <Total AmountAfterTax="1050.00" CurrencyCode="EUR"/>
                        </Rate>
                    </Rates>
                    <Features>
                        <Feature>
                            <Description>
                                <Text>HB</Text>
                            </Description>
                        </Feature>
                    </Features>
                </RoomRate>
            </RoomRates>
            <GuestCounts>
                <GuestCount AgeQualifyingCode="10" Age="30" Count="2"/>
            </GuestCounts>
            <TimeSpan Start="2026-07-17" End="2026-07-24"/>
            <BasicPropertyInfo HotelCode="AMTSES08UI">
                <VendorMessages>
                    <VendorMessage Title="Free Stay Offers" InfoType="3">
                        <SubSection SubTitle="100" SubCode="Value">
                            <Paragraph>
                                <Text>Free Stay Offers 100</Text>
                            </Paragraph>
                        </SubSection>
                        <SubSection SubTitle="FSO" SubCode="OTS"/>
                    </VendorMessage>
                    <VendorMessage Title="FreeCancellationConditions" InfoType="2">
                        <SubSection SubTitle="FCP-RATE" SubCode="DRV"/>
                        <SubSection SubTitle="FCP-P7D" SubCode="DRV"/>
                    </VendorMessage>
                </VendorMessages>
            </BasicPropertyInfo>
            <Reference Type="22" ID="TST1" ID_Context="TST1"/>
        </RoomStay>
        <RoomStay RoomStayCandidateRPH="0" RPH="2" ResponseType="PropertyList">
            <RoomTypes>
                <RoomType RoomTypeCode="RMSD000000"/>
            </RoomTypes>
            <RoomRates>
                <RoomRate RoomTypeCode="RMSD000000" NumberOfUnits="99">
                    <Rates>
                        <Rate ChargeType="21">
                            <Base AmountAfterTax="1200.00" CurrencyCode="EUR"/>
                            <Total AmountAfterTax="1200.00" CurrencyCode="EUR"/>
                        </Rate>
                    </Rates>
                    <Features>
                        <Feature>
                            <Description>
                                <Text>AI</Text>
                            </Description>
                        </Feature>
                    </Features>
                </RoomRate>
            </RoomRates>
            <GuestCounts>
                <GuestCount AgeQualifyingCode="10" Age="30" Count="2"/>
            </GuestCounts>
            <TimeSpan Start="2026-07-17" End="2026-07-24"/>
            <BasicPropertyInfo HotelCode="AMTSES08UI">
                <VendorMessages>
                    <VendorMessage Title="Free Stay Offers" InfoType="3">
                        <SubSection SubTitle="100" SubCode="Value">
                            <Paragraph>
                                <Text>Free Stay Offers 100</Text>
                            </Paragraph>
                        </SubSection>
                        <SubSection SubTitle="FSO" SubCode="OTS"/>
                    </VendorMessage>
                    <VendorMessage Title="FreeCancellationConditions" InfoType="2">
                        <SubSection SubTitle="FCP-RATE" SubCode="DRV"/>
                        <SubSection SubTitle="FCP-P7D" SubCode="DRV"/>
                    </VendorMessage>
                </VendorMessages>
            </BasicPropertyInfo>
            <Reference Type="22" ID="TST1" ID_Context="TST1"/>
        </RoomStay>
    </RoomStays>
    <Areas>
        <Area AreaID="1012SA">
            <AreaDescription Name="Country">
                <Text>Spain</Text>
            </AreaDescription>
            <AreaDescription Name="CountryCode">
                <Text>ES</Text>
            </AreaDescription>
            <AreaDescription Name="TravelDestination">
                <Text>ACE</Text>
            </AreaDescription>
            <AreaDescription Name="Destination">
                <Text>Canarian Islands</Text>
            </AreaDescription>
            <AreaDescription Name="Region">
                <Text>Lanzarote</Text>
            </AreaDescription>
            <AreaDescription Name="Resort">
                <Text>San Bartolome</Text>
            </AreaDescription>
            <AreaDescription Name="ResortCode">
                <Text>1012SA</Text>
            </AreaDescription>
            <AreaDescription Name="Airport">
                <Text>ACE</Text>
            </AreaDescription>
        </Area>
    </Areas>
</OTA_HotelAvailRS>

Best Practices

  1. Include EchoToken in both request and response correlation.
  2. Use InfoSource=0 when you only need pricing blocks; enable specific enrichments incrementally.
  3. In multi-room flows, validate combinations client‑side using NumberOfUnits and candidate indexes.
  4. Parse ChargeType to correctly label price basis (per person/per unit).