TABLE OF CONTENTS


Hotel Search 

The OTA - Hotel Search API enables distributors to retrieve hotel information by supplier within a specified context. It supports both single and multiple supplier queries, allowing for efficient retrieval of relevant hotel data based on the specified criteria.


Distributors can use this API to:

  • Retrieve hotel codes that have changed since the last synchronization.
  • Filterby suppliers and timestamp to narrow down results.
  • Perform incremental updates instead of full data reloads.
curl --location 'https://utopia.derbysoftsec.com/hdg/hotel.soap' \
--header 'Content-type: text/xml' \
--data '<?xml version="1.0" encoding="utf-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns="http://www.opentravel.org/OTA/2003/05">
    <SOAP-ENV:Header>
        <wsse:Security xmlns:wsse="http://schemas.xmlsoap.org/ws/2003/06/secext">
            <wsse:UsernameToken>
                <wsse:Username>username</wsse:Username>
                <wsse:Password>password</wsse:Password>
            </wsse:UsernameToken>
        </wsse:Security>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <ns:OTA_HotelSearchRQ TimeStamp="2024-05-19T21:43:03.375Z" Version="3.0" Target="Production" AltLangID="EN-US">
            <ns:Criteria>
                <ns:Criterion>
                    <ns:HotelRef HotelCodeContext="MARRIOTT"/>
                    <ns:Profiles>
                        <ns:ProfileInfo>
                            <ns:Profile LastModifyDateTime="2025-09-01T10:08:49.589"/>
                        </ns:ProfileInfo>
                    </ns:Profiles>
                </ns:Criterion>
            </ns:Criteria>
        </ns:OTA_HotelSearchRQ>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>'


Tip:
We recommend setting the connection timeout to 5 seconds and the read timeout to 60 seconds.



OTA - Hotel Search Request 

LevelElementsAttributesNum. OccData TypeDescriptionNotes/Comments
1OTA_HotelSearchRQ 1   
1 @TimeStamp  Timestamp when the request is generated, used for request tracking and time-sensitive logic (e.g., avoiding stale requests).
e.g., 2024-05-19T21:43:03.375Z
 
1 @Version  Version of the OTA specification adopted for the request, ensuring compatibility between the client and server.
e.g., 3.0
 
1 @Target  Indicates the environment the request is directed to (e.g., "Production" for live business data, "Test" for sandbox testing), restricting the request to the specified environment's dataset.
e.g., Production
 
1 @AltLangID  Preferred language for the response content, following the "ISO 639-1 + Country Code" format. If not specified, the server defaults to a standard language.
e.g., EN-US
Please refer to Appendix - Language Codes part.
2Criteria 1 Root container that groups all search conditions, used to organize one or more Criterion elements defining the scope of the hotel search. 
3Criterion 1...N A single set of search parameters. Multiple Criterion elements can be included to support batch hotel searches (one Criterion per target hotel/filter rule). 
4HotelRef 1object
 
4 @HotelCodeContext  Identifies the hotel chain, brand, or data source context for the search, ensuring the server retrieves hotels within the specified brand/chain.
e.g., "PREMIERINN" for Premier Inn hotels
 
4Profiles 1 Container for traveler or user profile information, used to personalize search results.
e.g., applying loyalty program benefits associated with the profile
 
5ProfileInfo 1 Wrapper element for storing detailed information of a single traveler or user profile. 
6Profile 1 Core element for storing profile metadata; used to reference a specific user profile in the server’s system. It enables the server to link the search request to the user’s stored preferences or status. 
6 @LastModifyDateTime  Timestamp when the user profile was last updated, helping the server verify if the client's profile data is current.
e.g., rejecting outdated loyalty status information
 



Request Examples

Single Supplier Success
<OTA_HotelSearchRQ TimeStamp="2022-03-16T19:08:49.589" Version="3.0" Target="Production" AltLangID="EN-US">
	<Criteria>
		<ns:Criterion>
			<HotelRef HotelCodeContext="HILTON"/>
			<Profiles>
				<ProfileInfo>
					<Profile LastModifyDateTime="2022-01-15T21:43:03.375"/>
				</ProfileInfo>
			</Profiles>
		</Criterion>
	</Criteria>
</OTA_HotelSearchRQ>
Multi Suppliers Success
<OTA_HotelSearchRQ TimeStamp="2023-01-01T19:08:49.589" Version="3.0" Target="Production" AltLangID="EN-US"

	<Criteria>
		<Criterion>
			<HotelRef HotelCodeContext="HILTON"/>
			<Profiles>
				<ProfileInfo>
					<Profile LastModifyDateTime="2021-01-21T00:00:49.589"/>
				</ProfileInfo>
			</Profiles>
		</Criterion>
		<Criterion>
			<HotelRef HotelCodeContext="HYATT"/>
			<Profiles>
				<ProfileInfo>
					<Profile LastModifyDateTime="2022-05-01T00:00:49.589"/>
				</ProfileInfo>
			</Profiles>
		</Criterion>
	</Criteria>
</OTA_HotelSearchRQ>



OTA - Hotel Search Response 

 

LevelElementsAttributesNum. Occ.Data TypeDescriptionNotes/Comments
1OTA_HotelSearchRS
1


1
@TimeStamp

Timestamp when the response is generated, used for response tracking, auditing, and reconciling request-response pairs.
e.g., 2025-09-11T09:29:25.347Z

1
@Version

Version of the OTA specification used for the response. May be higher than the request version if the server supports backward compatibility (ensuring the response includes fields compatible with the request version).
e.g., 4

1
@Target

Echoes the Target value from the request, confirming the environment (e.g., Production) where the hotel search was executed.
e.g., Production

1
@AltLangID

Echoes the AltLangID from the request (or uses the server's default if not provided in the request), confirming the language used for content in the response.
e.g., EN-US

2Criteria
1
Container that echoes the core search criteria from the request (filtered to only include valid, processed fields), allowing the client to verify the server used the correct input parameters.
3Criterion
1...n
Echoes a processed Criterion from the request, with additional resolved data (e.g., HotelCode added after the server looks up the hotel using the request's HotelCodeContext)
4HotelRef
1object

4
@HotelCode

Unique identifier for the matched hotel, resolved by the server using the HotelCodeContext from the request.
e.g., "EDIOLD" for a specific Premier Inn hotel

4
@HotelCodeContext

Echoes the HotelCodeContext from the request, confirming the hotel chain/context used to resolve the HotelCode.
e.g., PREMIERINN


Response Examples

Single Supplier
<OTA_HotelSearchRS AltLangID="EN-US" Target="Production" TimeStamp="2022-05-31T17:41:31.656Z" Version="4">
	<Success/>
	<Criteria>
		<Criterion>
			<HotelRef HotelCode="ARROM1" HotelCodeContext="HILTON"/>
		</Criterion>
		<Criterion>
			<HotelRef HotelCode="ARROM2" HotelCodeContext="HILTON"/>
		</Criterion>
	</Criteria>
</OTA_HotelSearchRS>
Milti Suppliers
<OTA_HotelSearchRS Target="Production" Version="4.0" TimeStamp="2022-05-31T17:47:40.040" AltLangID="EN-US">
	<Criteria>
		<Criterion>
			<HotelRef HotelCode="ATTSD" HotelCodeContext="HILTON"/>
		</Criterion>
		<Criterion>
			<HotelRef HotelCode="CBTSS" HotelCodeContext="HYATT"/>
		</Criterion>
	</Criteria>
</OTA_HotelSearchRS>