curl --request POST \
--url https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Stays \
--header 'Content-Type: application/json' \
--data '
{
"arrivalDate": "2027-08-31",
"nightCount": 3,
"guests": [
{
"adults": 2,
"children": [
{
"age": 10,
"count": 1
}
],
"infants": 0
}
],
"filter": {
"ratePlan": {
"groupId": 9876,
"referenceRateCode": "RACKPRI"
},
"hotels": {
"exceptions": [
1234
]
},
"rooms": {
"exceptions": [
3456
]
},
"rates": {
"exceptions": [
5678
]
},
"currency": "EUR",
"options": [],
"customerLocation": {
"geonameId": 3017382
},
"loyaltyProgram": {
"membershipLevel": 0
}
},
"impersonation": {
"hotelId": 1234,
"groupId": 9876,
"userId": 1357,
"bookingEngineId": "1XXA"
}
}
'const url = 'https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Stays';
const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
arrivalDate: '2027-08-31',
nightCount: 3,
guests: [{adults: 2, children: [{age: 10, count: 1}], infants: 0}],
filter: {
ratePlan: {groupId: 9876, referenceRateCode: 'RACKPRI'},
hotels: {exceptions: [1234]},
rooms: {exceptions: [3456]},
rates: {exceptions: [5678]},
currency: 'EUR',
options: [],
customerLocation: {geonameId: 3017382},
loyaltyProgram: {membershipLevel: 0}
},
impersonation: {hotelId: 1234, groupId: 9876, userId: 1357, bookingEngineId: '1XXA'}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Stays"
payload = {
"arrivalDate": "2027-08-31",
"nightCount": 3,
"guests": [
{
"adults": 2,
"children": [
{
"age": 10,
"count": 1
}
],
"infants": 0
}
],
"filter": {
"ratePlan": {
"groupId": 9876,
"referenceRateCode": "RACKPRI"
},
"hotels": { "exceptions": [1234] },
"rooms": { "exceptions": [3456] },
"rates": { "exceptions": [5678] },
"currency": "EUR",
"options": [],
"customerLocation": { "geonameId": 3017382 },
"loyaltyProgram": { "membershipLevel": 0 }
},
"impersonation": {
"hotelId": 1234,
"groupId": 9876,
"userId": 1357,
"bookingEngineId": "1XXA"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Stays",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'arrivalDate' => '2027-08-31',
'nightCount' => 3,
'guests' => [
[
'adults' => 2,
'children' => [
[
'age' => 10,
'count' => 1
]
],
'infants' => 0
]
],
'filter' => [
'ratePlan' => [
'groupId' => 9876,
'referenceRateCode' => 'RACKPRI'
],
'hotels' => [
'exceptions' => [
1234
]
],
'rooms' => [
'exceptions' => [
3456
]
],
'rates' => [
'exceptions' => [
5678
]
],
'currency' => 'EUR',
'options' => [
],
'customerLocation' => [
'geonameId' => 3017382
],
'loyaltyProgram' => [
'membershipLevel' => 0
]
],
'impersonation' => [
'hotelId' => 1234,
'groupId' => 9876,
'userId' => 1357,
'bookingEngineId' => '1XXA'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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}/Planning/2018A/BestPrice/Hotels/Stays");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddJsonBody("{\n \"arrivalDate\": \"2027-08-31\",\n \"nightCount\": 3,\n \"guests\": [\n {\n \"adults\": 2,\n \"children\": [\n {\n \"age\": 10,\n \"count\": 1\n }\n ],\n \"infants\": 0\n }\n ],\n \"filter\": {\n \"ratePlan\": {\n \"groupId\": 9876,\n \"referenceRateCode\": \"RACKPRI\"\n },\n \"hotels\": {\n \"exceptions\": [\n 1234\n ]\n },\n \"rooms\": {\n \"exceptions\": [\n 3456\n ]\n },\n \"rates\": {\n \"exceptions\": [\n 5678\n ]\n },\n \"currency\": \"EUR\",\n \"options\": [],\n \"customerLocation\": {\n \"geonameId\": 3017382\n },\n \"loyaltyProgram\": {\n \"membershipLevel\": 0\n }\n },\n \"impersonation\": {\n \"hotelId\": 1234,\n \"groupId\": 9876,\n \"userId\": 1357,\n \"bookingEngineId\": \"1XXA\"\n }\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
HttpResponse<String> response = Unirest.post("https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Stays")
.header("Content-Type", "application/json")
.body("{\n \"arrivalDate\": \"2027-08-31\",\n \"nightCount\": 3,\n \"guests\": [\n {\n \"adults\": 2,\n \"children\": [\n {\n \"age\": 10,\n \"count\": 1\n }\n ],\n \"infants\": 0\n }\n ],\n \"filter\": {\n \"ratePlan\": {\n \"groupId\": 9876,\n \"referenceRateCode\": \"RACKPRI\"\n },\n \"hotels\": {\n \"exceptions\": [\n 1234\n ]\n },\n \"rooms\": {\n \"exceptions\": [\n 3456\n ]\n },\n \"rates\": {\n \"exceptions\": [\n 5678\n ]\n },\n \"currency\": \"EUR\",\n \"options\": [],\n \"customerLocation\": {\n \"geonameId\": 3017382\n },\n \"loyaltyProgram\": {\n \"membershipLevel\": 0\n }\n },\n \"impersonation\": {\n \"hotelId\": 1234,\n \"groupId\": 9876,\n \"userId\": 1357,\n \"bookingEngineId\": \"1XXA\"\n }\n}")
.asString();[
{
"hotelId": 1234,
"rateId": 5678,
"roomId": 3456,
"minimumStay": 2,
"maximumStay": 15,
"availability": 3,
"totalPrice": 100.5,
"originalTotalPrice": 120,
"offerCodeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "Available",
"guests": {
"adults": 2,
"children": [
{
"age": 10,
"count": 1
}
],
"infants": 0
},
"unavailabilityReasons": [
"None"
],
"additionalTaxes": 5.5,
"additionalFees": 2,
"includedTaxes": 9.15,
"includedFees": 1.5
}
]{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": {}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}Hotels (Stays)
Best price for a specific stay, across multiple hotels
curl --request POST \
--url https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Stays \
--header 'Content-Type: application/json' \
--data '
{
"arrivalDate": "2027-08-31",
"nightCount": 3,
"guests": [
{
"adults": 2,
"children": [
{
"age": 10,
"count": 1
}
],
"infants": 0
}
],
"filter": {
"ratePlan": {
"groupId": 9876,
"referenceRateCode": "RACKPRI"
},
"hotels": {
"exceptions": [
1234
]
},
"rooms": {
"exceptions": [
3456
]
},
"rates": {
"exceptions": [
5678
]
},
"currency": "EUR",
"options": [],
"customerLocation": {
"geonameId": 3017382
},
"loyaltyProgram": {
"membershipLevel": 0
}
},
"impersonation": {
"hotelId": 1234,
"groupId": 9876,
"userId": 1357,
"bookingEngineId": "1XXA"
}
}
'const url = 'https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Stays';
const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
arrivalDate: '2027-08-31',
nightCount: 3,
guests: [{adults: 2, children: [{age: 10, count: 1}], infants: 0}],
filter: {
ratePlan: {groupId: 9876, referenceRateCode: 'RACKPRI'},
hotels: {exceptions: [1234]},
rooms: {exceptions: [3456]},
rates: {exceptions: [5678]},
currency: 'EUR',
options: [],
customerLocation: {geonameId: 3017382},
loyaltyProgram: {membershipLevel: 0}
},
impersonation: {hotelId: 1234, groupId: 9876, userId: 1357, bookingEngineId: '1XXA'}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));import requests
url = "https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Stays"
payload = {
"arrivalDate": "2027-08-31",
"nightCount": 3,
"guests": [
{
"adults": 2,
"children": [
{
"age": 10,
"count": 1
}
],
"infants": 0
}
],
"filter": {
"ratePlan": {
"groupId": 9876,
"referenceRateCode": "RACKPRI"
},
"hotels": { "exceptions": [1234] },
"rooms": { "exceptions": [3456] },
"rates": { "exceptions": [5678] },
"currency": "EUR",
"options": [],
"customerLocation": { "geonameId": 3017382 },
"loyaltyProgram": { "membershipLevel": 0 }
},
"impersonation": {
"hotelId": 1234,
"groupId": 9876,
"userId": 1357,
"bookingEngineId": "1XXA"
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Stays",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'arrivalDate' => '2027-08-31',
'nightCount' => 3,
'guests' => [
[
'adults' => 2,
'children' => [
[
'age' => 10,
'count' => 1
]
],
'infants' => 0
]
],
'filter' => [
'ratePlan' => [
'groupId' => 9876,
'referenceRateCode' => 'RACKPRI'
],
'hotels' => [
'exceptions' => [
1234
]
],
'rooms' => [
'exceptions' => [
3456
]
],
'rates' => [
'exceptions' => [
5678
]
],
'currency' => 'EUR',
'options' => [
],
'customerLocation' => [
'geonameId' => 3017382
],
'loyaltyProgram' => [
'membershipLevel' => 0
]
],
'impersonation' => [
'hotelId' => 1234,
'groupId' => 9876,
'userId' => 1357,
'bookingEngineId' => '1XXA'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$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}/Planning/2018A/BestPrice/Hotels/Stays");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddJsonBody("{\n \"arrivalDate\": \"2027-08-31\",\n \"nightCount\": 3,\n \"guests\": [\n {\n \"adults\": 2,\n \"children\": [\n {\n \"age\": 10,\n \"count\": 1\n }\n ],\n \"infants\": 0\n }\n ],\n \"filter\": {\n \"ratePlan\": {\n \"groupId\": 9876,\n \"referenceRateCode\": \"RACKPRI\"\n },\n \"hotels\": {\n \"exceptions\": [\n 1234\n ]\n },\n \"rooms\": {\n \"exceptions\": [\n 3456\n ]\n },\n \"rates\": {\n \"exceptions\": [\n 5678\n ]\n },\n \"currency\": \"EUR\",\n \"options\": [],\n \"customerLocation\": {\n \"geonameId\": 3017382\n },\n \"loyaltyProgram\": {\n \"membershipLevel\": 0\n }\n },\n \"impersonation\": {\n \"hotelId\": 1234,\n \"groupId\": 9876,\n \"userId\": 1357,\n \"bookingEngineId\": \"1XXA\"\n }\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);
HttpResponse<String> response = Unirest.post("https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Stays")
.header("Content-Type", "application/json")
.body("{\n \"arrivalDate\": \"2027-08-31\",\n \"nightCount\": 3,\n \"guests\": [\n {\n \"adults\": 2,\n \"children\": [\n {\n \"age\": 10,\n \"count\": 1\n }\n ],\n \"infants\": 0\n }\n ],\n \"filter\": {\n \"ratePlan\": {\n \"groupId\": 9876,\n \"referenceRateCode\": \"RACKPRI\"\n },\n \"hotels\": {\n \"exceptions\": [\n 1234\n ]\n },\n \"rooms\": {\n \"exceptions\": [\n 3456\n ]\n },\n \"rates\": {\n \"exceptions\": [\n 5678\n ]\n },\n \"currency\": \"EUR\",\n \"options\": [],\n \"customerLocation\": {\n \"geonameId\": 3017382\n },\n \"loyaltyProgram\": {\n \"membershipLevel\": 0\n }\n },\n \"impersonation\": {\n \"hotelId\": 1234,\n \"groupId\": 9876,\n \"userId\": 1357,\n \"bookingEngineId\": \"1XXA\"\n }\n}")
.asString();[
{
"hotelId": 1234,
"rateId": 5678,
"roomId": 3456,
"minimumStay": 2,
"maximumStay": 15,
"availability": 3,
"totalPrice": 100.5,
"originalTotalPrice": 120,
"offerCodeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "Available",
"guests": {
"adults": 2,
"children": [
{
"age": 10,
"count": 1
}
],
"infants": 0
},
"unavailabilityReasons": [
"None"
],
"additionalTaxes": 5.5,
"additionalFees": 2,
"includedTaxes": 9.15,
"includedFees": 1.5
}
]{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>",
"errors": {}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"instance": "<string>"
}Body
The stay to price (arrival date and number of nights), the parties of guests to accommodate, and the hotels, rooms and rates of the rate plan to look at.
Request the best prices for a given stay, for a given number of guests, over multiple hotels
First night of the stay
"2027-08-31"
Number of nights of the stay (minimum 1)
3
Number of guests the price is requested for. One item per "party". At least one item mandatory. This field is mandatory for all hotels using price with supplements
1Show child attributes
Show child attributes
Show child attributes
Show child attributes
Impersonation information to restrict the scope of the request
Show child attributes
Show child attributes
Response
One entry per hotel and party of guests, with the best price found for the whole stay, its availability and, when the stay is not available, the reasons.
Identifier of the hotel
1234
Identifier of the best rate
5678
Identifier of the best room
3456
Effective minimum stay for an arrival that day, on this rate and room.
2
Effective maximum stay for an arrival that day, on this rate and room. Value is capped at the values provided in the request INFO: There may be other (more expensive) offers that will allow the guest to stay longer
15
number of available rooms
3
Best Total price (Room + meals) to host all guests for the full stay (nightCount nights)
100.5
Total price without promotion applied for the full stay (nightCount nights) Value is omitted if there is no promotion that day
120
id of the promotion applicable to that day Value is omitted if there is no promotion with an id that day
"3fa85f64-5717-4562-b3fc-2c963f66afa6"
Whether the stay can be booked at this price
- Available: Room is available for booking
- OnRequest: Hotel must confirm availability before booking
- NotAvailable: Room is not available for booking
Available, OnRequest, NotAvailable the guest of the request this entity belongs to
Show child attributes
Show child attributes
list of reasons why the stay is not available
Why the entity is not available. Returned together with the availability status.
- None: No unavailability reason applies, the entity is available
- MinStay: Minimum stay constraint is not met
- MaxStay: Maximum stay constraint is not met
- Other: Entity is not available for another reason
- GuestsDoNotFitInRoom: Entity is not available for this number of guests
None, MinStay, MaxStay, Other, GuestsDoNotFitInRoom Taxes that must be collected in addition to the TotalPrice (due on site or at booking)
5.5
Fees that must be collected in addition to the TotalPrice (due on site or at booking)
2
Taxes that are included in the TotalPrice
9.15
Fees that are included in the TotalPrice
1.5
Was this page helpful?