Provides hotels availabilities matching the session context.
curl --request GET \
--url https://{apiBaseUrl}/v2/{sessionId}/search/hotelsconst url = 'https://{apiBaseUrl}/v2/{sessionId}/search/hotels';
const options = {method: 'GET'};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://{apiBaseUrl}/v2/{sessionId}/search/hotels"
response = requests.get(url)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{apiBaseUrl}/v2/{sessionId}/search/hotels",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}using RestSharp;
var options = new RestClientOptions("https://{apiBaseUrl}/v2/{sessionId}/search/hotels");
var client = new RestClient(options);
var request = new RestRequest("");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
HttpResponse<String> response = Unirest.get("https://{apiBaseUrl}/v2/{sessionId}/search/hotels")
.asString();{
"hotels": [
{
"hotelId": "10123",
"name": "Hotel 1",
"description": {
"summary": [
{
"text": "Best hotel in the area",
"value": "PlainText"
}
],
"pictures": [
{
"templates": [
{
"name": "XLarge",
"url": "http://www.example.com/files/images/XLarge.jpg"
}
],
"sortOrder": 1
}
],
"amenities": [
{
"text": "Air Conditioning",
"value": "AirConditioning"
},
{
"text": "Bar",
"value": "Bar"
}
],
"rating": "FourStars",
"location": {
"city": "Paris",
"postalCode": "75009",
"country": {
"code": "FR",
"name": "France"
},
"gpsPosition": {
"latitude": 48.8713379,
"longitude": 2.3441099
},
"directions": [
{
"text": "Go left and than turn right.",
"value": "PlainText"
}
],
"distance": {
"text": "1,2 km",
"value": 1.2
},
"addressLines": [
"17 Cherry Tree Lane"
],
"district": ""
},
"roomCount": 200,
"cardTypes": [
"AmericanExpress",
"MasterCard",
"Visa"
],
"checkInTime": {
"text": "15h00",
"value": "15:00:00"
},
"checkOutTime": {
"text": "10h00",
"value": "10:00:00"
},
"openingHours": {
"text": "00h00 - 23h59",
"value": {
"openingTime": "00:00:00",
"closureTime": "23:59:00"
}
},
"websites": [
"https://test.fr"
],
"phones": [
"+33279278242"
],
"emails": [
"hello@test.fr"
],
"hotelPaymentMethods": {
"supportedCardTypes": [
"AmericanExpress",
"MasterCard",
"Visa"
],
"supportedPaymentMethods": [
"IDeal",
"Paypal"
]
}
},
"availabilityPrice": {
"lowest": {
"price": {
"totalPrice": {
"converted": {
"text": "113 $",
"value": {
"amount": 113,
"currency": "USD"
}
},
"original": {
"text": "100 €",
"value": {
"amount": 100,
"currency": "EUR"
}
}
},
"crossedOutPrice": {
"converted": {
"text": "226 $",
"value": {
"amount": 226,
"currency": "USD"
}
},
"original": {
"text": "200 €",
"value": {
"amount": 200,
"currency": "EUR"
}
}
},
"discountType": "CrossedOut",
"promoCode": {
"offerCodeId": "4b06847c-2901-43c9-ab90-34cf4ce152aa",
"code": "",
"description": "Last minute discount",
"nominal": {
"converted": {
"text": "113 $",
"value": {
"amount": 113,
"currency": "USD"
}
},
"original": {
"text": "100 €",
"value": {
"amount": 100,
"currency": "EUR"
}
}
},
"percent": {
"text": "",
"value": 0
},
"calculationMode": "Nominal",
"isPublic": true,
"isApplied": true,
"isMobile": false,
"isFlashSales": false,
"displayCountdown": false,
"endDate": "2026-06-03T08:05:26.9388436Z"
}
},
"additionalFees": 30,
"additionalTaxes": 10,
"includedTaxes": 5,
"includedFees": 5,
"availabilityType": "Available"
}
},
"promotions": [
{
"id": "00000000-0000-0000-0000-000000000000",
"code": "DISCOUNT",
"isPublic": false,
"isMobile": false,
"isFlashSales": false
}
],
"isPrivateRateCode": false
}
],
"unavailabilityType": "None",
"filters": [
{
"type": {
"text": "Rating",
"value": "Rating"
},
"values": [
{
"text": "Four stars hotel",
"value": "FourStars"
}
]
}
],
"sortOrders": [
{
"text": "Relevance",
"value": "Default"
},
{
"text": "Ascending price",
"value": "AscendingPrice"
},
{
"text": "Descending price",
"value": "DescendingPrice"
},
{
"text": "Rating",
"value": "Rating"
}
],
"paging": {
"currentPageNumber": 1,
"pageSize": 10,
"resultsCount": 30,
"totalResultsCount": 50
}
}{
"code": "InvalidHotelId"
}{
"code": "InvalidUserAuthentication",
"message": "<string>"
}Search
Provides hotels availabilities
Provides hotels availabilities matching the session context
GET
/
v2
/
{sessionId}
/
search
/
hotels
Provides hotels availabilities matching the session context.
curl --request GET \
--url https://{apiBaseUrl}/v2/{sessionId}/search/hotelsconst url = 'https://{apiBaseUrl}/v2/{sessionId}/search/hotels';
const options = {method: 'GET'};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://{apiBaseUrl}/v2/{sessionId}/search/hotels"
response = requests.get(url)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{apiBaseUrl}/v2/{sessionId}/search/hotels",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}using RestSharp;
var options = new RestClientOptions("https://{apiBaseUrl}/v2/{sessionId}/search/hotels");
var client = new RestClient(options);
var request = new RestRequest("");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
HttpResponse<String> response = Unirest.get("https://{apiBaseUrl}/v2/{sessionId}/search/hotels")
.asString();{
"hotels": [
{
"hotelId": "10123",
"name": "Hotel 1",
"description": {
"summary": [
{
"text": "Best hotel in the area",
"value": "PlainText"
}
],
"pictures": [
{
"templates": [
{
"name": "XLarge",
"url": "http://www.example.com/files/images/XLarge.jpg"
}
],
"sortOrder": 1
}
],
"amenities": [
{
"text": "Air Conditioning",
"value": "AirConditioning"
},
{
"text": "Bar",
"value": "Bar"
}
],
"rating": "FourStars",
"location": {
"city": "Paris",
"postalCode": "75009",
"country": {
"code": "FR",
"name": "France"
},
"gpsPosition": {
"latitude": 48.8713379,
"longitude": 2.3441099
},
"directions": [
{
"text": "Go left and than turn right.",
"value": "PlainText"
}
],
"distance": {
"text": "1,2 km",
"value": 1.2
},
"addressLines": [
"17 Cherry Tree Lane"
],
"district": ""
},
"roomCount": 200,
"cardTypes": [
"AmericanExpress",
"MasterCard",
"Visa"
],
"checkInTime": {
"text": "15h00",
"value": "15:00:00"
},
"checkOutTime": {
"text": "10h00",
"value": "10:00:00"
},
"openingHours": {
"text": "00h00 - 23h59",
"value": {
"openingTime": "00:00:00",
"closureTime": "23:59:00"
}
},
"websites": [
"https://test.fr"
],
"phones": [
"+33279278242"
],
"emails": [
"hello@test.fr"
],
"hotelPaymentMethods": {
"supportedCardTypes": [
"AmericanExpress",
"MasterCard",
"Visa"
],
"supportedPaymentMethods": [
"IDeal",
"Paypal"
]
}
},
"availabilityPrice": {
"lowest": {
"price": {
"totalPrice": {
"converted": {
"text": "113 $",
"value": {
"amount": 113,
"currency": "USD"
}
},
"original": {
"text": "100 €",
"value": {
"amount": 100,
"currency": "EUR"
}
}
},
"crossedOutPrice": {
"converted": {
"text": "226 $",
"value": {
"amount": 226,
"currency": "USD"
}
},
"original": {
"text": "200 €",
"value": {
"amount": 200,
"currency": "EUR"
}
}
},
"discountType": "CrossedOut",
"promoCode": {
"offerCodeId": "4b06847c-2901-43c9-ab90-34cf4ce152aa",
"code": "",
"description": "Last minute discount",
"nominal": {
"converted": {
"text": "113 $",
"value": {
"amount": 113,
"currency": "USD"
}
},
"original": {
"text": "100 €",
"value": {
"amount": 100,
"currency": "EUR"
}
}
},
"percent": {
"text": "",
"value": 0
},
"calculationMode": "Nominal",
"isPublic": true,
"isApplied": true,
"isMobile": false,
"isFlashSales": false,
"displayCountdown": false,
"endDate": "2026-06-03T08:05:26.9388436Z"
}
},
"additionalFees": 30,
"additionalTaxes": 10,
"includedTaxes": 5,
"includedFees": 5,
"availabilityType": "Available"
}
},
"promotions": [
{
"id": "00000000-0000-0000-0000-000000000000",
"code": "DISCOUNT",
"isPublic": false,
"isMobile": false,
"isFlashSales": false
}
],
"isPrivateRateCode": false
}
],
"unavailabilityType": "None",
"filters": [
{
"type": {
"text": "Rating",
"value": "Rating"
},
"values": [
{
"text": "Four stars hotel",
"value": "FourStars"
}
]
}
],
"sortOrders": [
{
"text": "Relevance",
"value": "Default"
},
{
"text": "Ascending price",
"value": "AscendingPrice"
},
{
"text": "Descending price",
"value": "DescendingPrice"
},
{
"text": "Rating",
"value": "Rating"
}
],
"paging": {
"currentPageNumber": 1,
"pageSize": 10,
"resultsCount": 30,
"totalResultsCount": 50
}
}{
"code": "InvalidHotelId"
}{
"code": "InvalidUserAuthentication",
"message": "<string>"
}Headers
The properties required in the response.
Mime type of the descriptions.
The picture templates.
Path Parameters
Query Parameters
The number of the requested page.
The number of results per response.
Response
OK
Show child attributes
Show child attributes
Reason why a hotel appears as unavailable in the search result.
- None — No unavailability reason applies.
- NoAvailability — The hotel has no availability for the requested search context.
- NoAvailabilityWithFilters — The hotel has no availability once the current search filters are applied.
Available options:
None, NoAvailability, NoAvailabilityWithFilters Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?