Provides rooms availabilities matching the session context.
curl --request GET \
--url https://{apiBaseUrl}/v2/{sessionId}/search/roomsconst url = 'https://{apiBaseUrl}/v2/{sessionId}/search/rooms';
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/rooms"
response = requests.get(url)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{apiBaseUrl}/v2/{sessionId}/search/rooms",
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/rooms");
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/rooms")
.asString();{
"paging": {
"currentPageNumber": 1,
"pageSize": 10,
"resultsCount": 30,
"totalResultsCount": 50
},
"rooms": [
{
"roomId": 12345,
"name": "Chambre 1",
"displayType": "Room",
"availabilityType": "Available",
"description": {
"summary": [],
"pictures": [],
"amenities": [
{
"text": "Baignoire",
"value": "Bathtub"
}
],
"beds": [
{
"type": {
"text": "Lit double",
"value": "Double"
},
"size": {
"text": "Grande chambre",
"value": {
"type": "Size200By200Cm",
"width": 200,
"length": 200
}
},
"count": 2,
"twoPersonConvertible": false
}
],
"bedConfigurations": [
{
"configurationId": "a11625ad-03d2-44d3-b27e-404c375f5a12",
"description": "1 Lit simple"
},
{
"configurationId": "969473bf-447c-4c4d-bff9-b0fef06c580d",
"description": "1 Lit double, 2 Lits simples"
}
],
"area": {
"value": 0
},
"type": "Triple"
},
"rates": [
{
"rateId": "20260608;20260613;12345",
"dailyPrice": {},
"price": {
"totalPrice": {
"converted": {
"text": "100 €",
"value": {
"amount": 100,
"currency": "EUR"
}
},
"original": {
"text": "100 €",
"value": {
"amount": 100,
"currency": "EUR"
}
}
},
"crossedOutPrice": {
"converted": {
"text": "200 €",
"value": {
"amount": 200,
"currency": "EUR"
}
},
"original": {
"text": "200 €",
"value": {
"amount": 200,
"currency": "EUR"
}
}
},
"discountType": "CrossedOut",
"promoCode": {
"offerCodeId": "0304170d-3558-4e37-a97e-7264ba3d490a",
"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.9556815Z"
}
},
"availableQuantity": 5,
"taxes": {
"included": {
"amount": {
"value": {
"amount": 0,
"currency": "EUR"
}
},
"details": []
},
"excluded": {
"amount": {
"value": {
"amount": 0,
"currency": "EUR"
}
},
"details": []
},
"onSite": {
"amount": {
"text": "100 €",
"value": {
"amount": 100,
"currency": "EUR"
}
},
"details": [
{
"name": "Une taxe",
"type": "CityTax",
"description": "2€ par jour",
"amount": {
"converted": {
"value": {
"amount": 2,
"currency": "EUR"
}
},
"original": {
"value": {
"amount": 2,
"currency": "EUR"
}
}
},
"dailyTotalAmounts": [
{
"value": {
"converted": {
"text": "2,50 €",
"value": {
"amount": 2.5,
"currency": "EUR"
}
},
"original": {
"text": "2 $",
"value": {
"amount": 2,
"currency": "USD"
}
}
},
"start": "2026-06-08",
"end": "2026-06-13"
}
],
"applyToEntity": false
}
]
}
},
"occupancy": {
"occupancyId": 0,
"isDefault": true,
"definition": {
"text": "2 personnes",
"value": {
"isDetailed": false,
"personCount": 2,
"adultCount": 0,
"childCount": 0,
"infantCount": 0
}
}
},
"internetIncluded": "Included",
"breakfastIncluded": "None",
"description": {
"code": "RATE_CODE",
"name": "Nom du rate",
"forceDisplayName": false,
"isPrivate": false,
"sortOrder": 0,
"summary": [
{
"text": "Rate summary",
"value": "PlainText"
}
],
"cancelConditions": {
"name": [
{
"text": "Cancel conditions name Default format",
"value": "Default"
},
{
"text": "Cancel conditions name Short format",
"value": "Short"
}
],
"summary": [
{
"text": "Cancel conditions summary Default format",
"value": "Default"
}
]
},
"qualifier": {
"text": "Chambre simple",
"value": "RoomOnly"
},
"bookingFees": {
"percent": 100,
"nominal": 0
},
"deposit": {
"depositType": "CreditCardNumber",
"percent": 100
},
"pictures": [
{
"templates": [
{
"name": "TEMPLATE1",
"url": "http://url/to/template1/image1"
},
{
"name": "TEMPLATE2",
"url": "http://url/to/template2/image1"
}
],
"sortOrder": 1
},
{
"templates": [
{
"name": "TEMPLATE1",
"url": "http://url/to/template1/image2"
},
{
"name": "TEMPLATE2",
"url": "http://url/to/template2/image2"
}
],
"sortOrder": 2
}
],
"mealPlans": [
{
"id": 12345,
"name": "All Inclusive",
"information": {
"gratuitousnessType": {
"value": "None"
},
"pricingModel": {
"text": "Per Adult and per Children",
"value": "PerPerson"
},
"category": {
"text": "All Inclusive",
"value": "AllInclusive"
},
"personTypeRestriction": {
"value": "Adult"
},
"sortOrder": 0,
"summaries": [
{
"text": "<p>\nBlah blah blah\n</p>\n",
"value": "Html"
},
{
"text": "Blah blah blah",
"value": "PlainText"
}
],
"pictures": [
{
"templates": [
{
"name": "TEMPLATE1",
"url": "http://url/to/template1/image1"
},
{
"name": "TEMPLATE2",
"url": "http://url/to/template2/image1"
}
],
"sortOrder": 1
},
{
"templates": [
{
"name": "TEMPLATE",
"url": "http://url/to/template1/image2"
},
{
"name": "TEMPLATE2",
"url": "http://url/to/template2/image2"
}
],
"sortOrder": 2
}
]
}
}
]
},
"isLoyalty": false,
"membershipLevel": 0,
"canUseRedemption": false,
"redemptionQuantity": 0,
"availabilityInfo": {
"reason": "None",
"minStay": 0,
"maxStay": 0
}
}
],
"defaultOccupancy": {
"occupancyId": 0,
"isDefault": true,
"definition": {
"text": "2 personnes",
"value": {
"isDetailed": false,
"personCount": 2,
"adultCount": 0,
"childCount": 0,
"infantCount": 0
}
}
},
"sortOrder": 1
}
],
"unavailabilityType": "None",
"crossSellUrl": "",
"filters": [
{
"type": {
"text": "Types de chambre",
"value": "RoomTypes"
},
"values": [
{
"text": "Chambre triple",
"value": "Triple"
}
]
}
],
"sortOrders": [
{
"text": "Tri par défaut",
"value": "Default"
},
{
"text": "Du moins cher au plus cher",
"value": "AscendingPrice"
},
{
"text": "Du plus cher au moins cher",
"value": "DescendingPrice"
}
],
"alternativeGuestsAllocation": []
}{
"code": "InvalidHotelId"
}{
"code": "InvalidUserAuthentication",
"message": "<string>"
}Search
Provides rooms availabilities
Provides rooms availabilities matching the session context
GET
/
v2
/
{sessionId}
/
search
/
rooms
Provides rooms availabilities matching the session context.
curl --request GET \
--url https://{apiBaseUrl}/v2/{sessionId}/search/roomsconst url = 'https://{apiBaseUrl}/v2/{sessionId}/search/rooms';
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/rooms"
response = requests.get(url)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{apiBaseUrl}/v2/{sessionId}/search/rooms",
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/rooms");
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/rooms")
.asString();{
"paging": {
"currentPageNumber": 1,
"pageSize": 10,
"resultsCount": 30,
"totalResultsCount": 50
},
"rooms": [
{
"roomId": 12345,
"name": "Chambre 1",
"displayType": "Room",
"availabilityType": "Available",
"description": {
"summary": [],
"pictures": [],
"amenities": [
{
"text": "Baignoire",
"value": "Bathtub"
}
],
"beds": [
{
"type": {
"text": "Lit double",
"value": "Double"
},
"size": {
"text": "Grande chambre",
"value": {
"type": "Size200By200Cm",
"width": 200,
"length": 200
}
},
"count": 2,
"twoPersonConvertible": false
}
],
"bedConfigurations": [
{
"configurationId": "a11625ad-03d2-44d3-b27e-404c375f5a12",
"description": "1 Lit simple"
},
{
"configurationId": "969473bf-447c-4c4d-bff9-b0fef06c580d",
"description": "1 Lit double, 2 Lits simples"
}
],
"area": {
"value": 0
},
"type": "Triple"
},
"rates": [
{
"rateId": "20260608;20260613;12345",
"dailyPrice": {},
"price": {
"totalPrice": {
"converted": {
"text": "100 €",
"value": {
"amount": 100,
"currency": "EUR"
}
},
"original": {
"text": "100 €",
"value": {
"amount": 100,
"currency": "EUR"
}
}
},
"crossedOutPrice": {
"converted": {
"text": "200 €",
"value": {
"amount": 200,
"currency": "EUR"
}
},
"original": {
"text": "200 €",
"value": {
"amount": 200,
"currency": "EUR"
}
}
},
"discountType": "CrossedOut",
"promoCode": {
"offerCodeId": "0304170d-3558-4e37-a97e-7264ba3d490a",
"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.9556815Z"
}
},
"availableQuantity": 5,
"taxes": {
"included": {
"amount": {
"value": {
"amount": 0,
"currency": "EUR"
}
},
"details": []
},
"excluded": {
"amount": {
"value": {
"amount": 0,
"currency": "EUR"
}
},
"details": []
},
"onSite": {
"amount": {
"text": "100 €",
"value": {
"amount": 100,
"currency": "EUR"
}
},
"details": [
{
"name": "Une taxe",
"type": "CityTax",
"description": "2€ par jour",
"amount": {
"converted": {
"value": {
"amount": 2,
"currency": "EUR"
}
},
"original": {
"value": {
"amount": 2,
"currency": "EUR"
}
}
},
"dailyTotalAmounts": [
{
"value": {
"converted": {
"text": "2,50 €",
"value": {
"amount": 2.5,
"currency": "EUR"
}
},
"original": {
"text": "2 $",
"value": {
"amount": 2,
"currency": "USD"
}
}
},
"start": "2026-06-08",
"end": "2026-06-13"
}
],
"applyToEntity": false
}
]
}
},
"occupancy": {
"occupancyId": 0,
"isDefault": true,
"definition": {
"text": "2 personnes",
"value": {
"isDetailed": false,
"personCount": 2,
"adultCount": 0,
"childCount": 0,
"infantCount": 0
}
}
},
"internetIncluded": "Included",
"breakfastIncluded": "None",
"description": {
"code": "RATE_CODE",
"name": "Nom du rate",
"forceDisplayName": false,
"isPrivate": false,
"sortOrder": 0,
"summary": [
{
"text": "Rate summary",
"value": "PlainText"
}
],
"cancelConditions": {
"name": [
{
"text": "Cancel conditions name Default format",
"value": "Default"
},
{
"text": "Cancel conditions name Short format",
"value": "Short"
}
],
"summary": [
{
"text": "Cancel conditions summary Default format",
"value": "Default"
}
]
},
"qualifier": {
"text": "Chambre simple",
"value": "RoomOnly"
},
"bookingFees": {
"percent": 100,
"nominal": 0
},
"deposit": {
"depositType": "CreditCardNumber",
"percent": 100
},
"pictures": [
{
"templates": [
{
"name": "TEMPLATE1",
"url": "http://url/to/template1/image1"
},
{
"name": "TEMPLATE2",
"url": "http://url/to/template2/image1"
}
],
"sortOrder": 1
},
{
"templates": [
{
"name": "TEMPLATE1",
"url": "http://url/to/template1/image2"
},
{
"name": "TEMPLATE2",
"url": "http://url/to/template2/image2"
}
],
"sortOrder": 2
}
],
"mealPlans": [
{
"id": 12345,
"name": "All Inclusive",
"information": {
"gratuitousnessType": {
"value": "None"
},
"pricingModel": {
"text": "Per Adult and per Children",
"value": "PerPerson"
},
"category": {
"text": "All Inclusive",
"value": "AllInclusive"
},
"personTypeRestriction": {
"value": "Adult"
},
"sortOrder": 0,
"summaries": [
{
"text": "<p>\nBlah blah blah\n</p>\n",
"value": "Html"
},
{
"text": "Blah blah blah",
"value": "PlainText"
}
],
"pictures": [
{
"templates": [
{
"name": "TEMPLATE1",
"url": "http://url/to/template1/image1"
},
{
"name": "TEMPLATE2",
"url": "http://url/to/template2/image1"
}
],
"sortOrder": 1
},
{
"templates": [
{
"name": "TEMPLATE",
"url": "http://url/to/template1/image2"
},
{
"name": "TEMPLATE2",
"url": "http://url/to/template2/image2"
}
],
"sortOrder": 2
}
]
}
}
]
},
"isLoyalty": false,
"membershipLevel": 0,
"canUseRedemption": false,
"redemptionQuantity": 0,
"availabilityInfo": {
"reason": "None",
"minStay": 0,
"maxStay": 0
}
}
],
"defaultOccupancy": {
"occupancyId": 0,
"isDefault": true,
"definition": {
"text": "2 personnes",
"value": {
"isDetailed": false,
"personCount": 2,
"adultCount": 0,
"childCount": 0,
"infantCount": 0
}
}
},
"sortOrder": 1
}
],
"unavailabilityType": "None",
"crossSellUrl": "",
"filters": [
{
"type": {
"text": "Types de chambre",
"value": "RoomTypes"
},
"values": [
{
"text": "Chambre triple",
"value": "Triple"
}
]
}
],
"sortOrders": [
{
"text": "Tri par défaut",
"value": "Default"
},
{
"text": "Du moins cher au plus cher",
"value": "AscendingPrice"
},
{
"text": "Du plus cher au moins cher",
"value": "DescendingPrice"
}
],
"alternativeGuestsAllocation": []
}{
"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.
The index of a room which corresponds to the index of a guest.
Response
OK
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Reason why a room appears as unavailable in the search result.
- None — No unavailability reason applies.
- NoAvailability — The room has no availability for the requested search context.
- NoAvailabilityWithFilters — The room has no availability once the current search filters are applied.
- NoAvailabilityWithCrossSell — The room has no availability but cross-sell alternatives are proposed.
- NoAvailabilityWithSelectedRoom — The room has no availability given the currently selected room.
- NoAvailabilityWithSelectedRate — The room has no availability given the currently selected rate.
- NoAvailabilityWithSelectedRoomAndRate — The room has no availability given both the currently selected room and rate.
- NoAvailabilityWithRoomInBasket — The room has no availability given other rooms already added to the basket.
- NoAvailabilityWithSelectedGuests — The room has no availability for the requested guest composition.
- AvailabilityWithAlternativeGuests — The room is available only if the guest composition is adjusted.
Available options:
None, NoAvailability, NoAvailabilityWithFilters, NoAvailabilityWithCrossSell, NoAvailabilityWithSelectedRoom, NoAvailabilityWithSelectedRate, NoAvailabilityWithSelectedRoomAndRate, NoAvailabilityWithRoomInBasket, NoAvailabilityWithSelectedGuests, AvailabilityWithAlternativeGuests Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?