curl --request POST \
--url https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Arrivals \
--header 'Content-Type: application/json' \
--data '
{
"beginDate": "2027-08-31",
"endDate": "2027-08-31",
"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",
"customerLocation": {
"geonameId": 3017382
},
"loyaltyProgram": {
"membershipLevel": 0
},
"options": [],
"maximumStay": 15
},
"behaviour": "LowestLengthOfStay",
"behaviours": [],
"impersonation": {
"hotelId": 1234,
"groupId": 9876,
"userId": 1357,
"bookingEngineId": "1XXA"
}
}
'const url = 'https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Arrivals';
const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
beginDate: '2027-08-31',
endDate: '2027-08-31',
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',
customerLocation: {geonameId: 3017382},
loyaltyProgram: {membershipLevel: 0},
options: [],
maximumStay: 15
},
behaviour: 'LowestLengthOfStay',
behaviours: [],
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/Arrivals"
payload = {
"beginDate": "2027-08-31",
"endDate": "2027-08-31",
"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",
"customerLocation": { "geonameId": 3017382 },
"loyaltyProgram": { "membershipLevel": 0 },
"options": [],
"maximumStay": 15
},
"behaviour": "LowestLengthOfStay",
"behaviours": [],
"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/Arrivals",
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([
'beginDate' => '2027-08-31',
'endDate' => '2027-08-31',
'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',
'customerLocation' => [
'geonameId' => 3017382
],
'loyaltyProgram' => [
'membershipLevel' => 0
],
'options' => [
],
'maximumStay' => 15
],
'behaviour' => 'LowestLengthOfStay',
'behaviours' => [
],
'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/Arrivals");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddJsonBody("{\n \"beginDate\": \"2027-08-31\",\n \"endDate\": \"2027-08-31\",\n \"guests\": {\n \"adults\": 2,\n \"children\": [\n {\n \"age\": 10,\n \"count\": 1\n }\n ],\n \"infants\": 0\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 \"customerLocation\": {\n \"geonameId\": 3017382\n },\n \"loyaltyProgram\": {\n \"membershipLevel\": 0\n },\n \"options\": [],\n \"maximumStay\": 15\n },\n \"behaviour\": \"LowestLengthOfStay\",\n \"behaviours\": [],\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/Arrivals")
.header("Content-Type", "application/json")
.body("{\n \"beginDate\": \"2027-08-31\",\n \"endDate\": \"2027-08-31\",\n \"guests\": {\n \"adults\": 2,\n \"children\": [\n {\n \"age\": 10,\n \"count\": 1\n }\n ],\n \"infants\": 0\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 \"customerLocation\": {\n \"geonameId\": 3017382\n },\n \"loyaltyProgram\": {\n \"membershipLevel\": 0\n },\n \"options\": [],\n \"maximumStay\": 15\n },\n \"behaviour\": \"LowestLengthOfStay\",\n \"behaviours\": [],\n \"impersonation\": {\n \"hotelId\": 1234,\n \"groupId\": 9876,\n \"userId\": 1357,\n \"bookingEngineId\": \"1XXA\"\n }\n}")
.asString();[
{
"arrivalDate": "2027-08-31",
"hotelId": 1234,
"behaviour": "LowestLengthOfStay",
"minimumStay": 2,
"maximumStay": 15,
"totalPrice": 100.5,
"availability": 3,
"rateId": 5678,
"roomId": 3456,
"originalTotalPrice": 120,
"currency": "EUR",
"offerCodeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "Available",
"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 (Arrivals)
Best price per hotel over a date range, across multiple hotels
curl --request POST \
--url https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Arrivals \
--header 'Content-Type: application/json' \
--data '
{
"beginDate": "2027-08-31",
"endDate": "2027-08-31",
"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",
"customerLocation": {
"geonameId": 3017382
},
"loyaltyProgram": {
"membershipLevel": 0
},
"options": [],
"maximumStay": 15
},
"behaviour": "LowestLengthOfStay",
"behaviours": [],
"impersonation": {
"hotelId": 1234,
"groupId": 9876,
"userId": 1357,
"bookingEngineId": "1XXA"
}
}
'const url = 'https://{apiBaseUrl}/Planning/2018A/BestPrice/Hotels/Arrivals';
const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
beginDate: '2027-08-31',
endDate: '2027-08-31',
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',
customerLocation: {geonameId: 3017382},
loyaltyProgram: {membershipLevel: 0},
options: [],
maximumStay: 15
},
behaviour: 'LowestLengthOfStay',
behaviours: [],
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/Arrivals"
payload = {
"beginDate": "2027-08-31",
"endDate": "2027-08-31",
"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",
"customerLocation": { "geonameId": 3017382 },
"loyaltyProgram": { "membershipLevel": 0 },
"options": [],
"maximumStay": 15
},
"behaviour": "LowestLengthOfStay",
"behaviours": [],
"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/Arrivals",
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([
'beginDate' => '2027-08-31',
'endDate' => '2027-08-31',
'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',
'customerLocation' => [
'geonameId' => 3017382
],
'loyaltyProgram' => [
'membershipLevel' => 0
],
'options' => [
],
'maximumStay' => 15
],
'behaviour' => 'LowestLengthOfStay',
'behaviours' => [
],
'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/Arrivals");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddJsonBody("{\n \"beginDate\": \"2027-08-31\",\n \"endDate\": \"2027-08-31\",\n \"guests\": {\n \"adults\": 2,\n \"children\": [\n {\n \"age\": 10,\n \"count\": 1\n }\n ],\n \"infants\": 0\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 \"customerLocation\": {\n \"geonameId\": 3017382\n },\n \"loyaltyProgram\": {\n \"membershipLevel\": 0\n },\n \"options\": [],\n \"maximumStay\": 15\n },\n \"behaviour\": \"LowestLengthOfStay\",\n \"behaviours\": [],\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/Arrivals")
.header("Content-Type", "application/json")
.body("{\n \"beginDate\": \"2027-08-31\",\n \"endDate\": \"2027-08-31\",\n \"guests\": {\n \"adults\": 2,\n \"children\": [\n {\n \"age\": 10,\n \"count\": 1\n }\n ],\n \"infants\": 0\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 \"customerLocation\": {\n \"geonameId\": 3017382\n },\n \"loyaltyProgram\": {\n \"membershipLevel\": 0\n },\n \"options\": [],\n \"maximumStay\": 15\n },\n \"behaviour\": \"LowestLengthOfStay\",\n \"behaviours\": [],\n \"impersonation\": {\n \"hotelId\": 1234,\n \"groupId\": 9876,\n \"userId\": 1357,\n \"bookingEngineId\": \"1XXA\"\n }\n}")
.asString();[
{
"arrivalDate": "2027-08-31",
"hotelId": 1234,
"behaviour": "LowestLengthOfStay",
"minimumStay": 2,
"maximumStay": 15,
"totalPrice": 100.5,
"availability": 3,
"rateId": 5678,
"roomId": 3456,
"originalTotalPrice": 120,
"currency": "EUR",
"offerCodeId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"status": "Available",
"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 period to cover (begin and end dates, both included), the single party of guests to accommodate, the hotels of the rate plan to look at, and the behaviours to arbitrate between restricted dates.
Request the best prices for each hotel over a given period, for a given number of guests
First date to be returned
"2027-08-31"
End of the requested period. This date is included
"2027-08-31"
Number of guests the price is requested for. This endpoint accepts a single party: unlike Calendar and Hotels/Stays, this is one object, not an array.
Show child attributes
Show child attributes
Filter to apply to the best price request
Show child attributes
Show child attributes
Obsolete: use Behaviours instead. Cannot be combined with a non-empty Behaviours. When the date has restrictions, indicates how to behave
- LowestLengthOfStay: (default): Will prioritise the shortest length of stay, to prevent displaying dates with minimum stays when there is a flexible rate available
- CheapestStay: Will prioritise the cheapest stay, to prevent an overpriced flexible stay from being returned when longer stays are cheaper
- EarliestAvailability: Will prioritise the earliest stay
LowestLengthOfStay, CheapestStay, EarliestAvailability When the date has restrictions, indicates how to behave. Each hotel is returned once per requested behaviour, with the behaviour set on each entry. Entries are returned grouped by behaviour, in this order. An empty list is treated as absent: Behaviour is then used, else LowestLengthOfStay is assumed. Duplicate values are ignored.
How to choose the best price when the date has restrictions
- LowestLengthOfStay: (default): Will prioritise the shortest length of stay, to prevent displaying dates with minimum stays when there is a flexible rate available
- CheapestStay: Will prioritise the cheapest stay, to prevent an overpriced flexible stay from being returned when longer stays are cheaper
- EarliestAvailability: Will prioritise the earliest stay
LowestLengthOfStay, CheapestStay, EarliestAvailability Impersonation information to restrict the scope of the request
Show child attributes
Show child attributes
Response
One entry per hotel and requested behaviour, with the best arrival date and price found for that hotel under that behaviour, its availability and the effective stay restrictions. Entries are grouped by behaviour, in the order of the request, then ordered by hotel id.
Arrival date (yyyy-MM-dd)
"2027-08-31"
Identifier of the hotel
1234
Behaviour this entry was computed for, among the requested behaviours
- LowestLengthOfStay: (default): Will prioritise the shortest length of stay, to prevent displaying dates with minimum stays when there is a flexible rate available
- CheapestStay: Will prioritise the cheapest stay, to prevent an overpriced flexible stay from being returned when longer stays are cheaper
- EarliestAvailability: Will prioritise the earliest stay
LowestLengthOfStay, CheapestStay, EarliestAvailability 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
Best Total price (Room + meals) to host all guests that day (average per night if minimum stay > 1)
100.5
Number of rooms still available for this offer
3
Identifier of the best rate
5678
Identifier of the best room
3456
Total price without promotion applied (average per night if minimum stay > 1) Value is omitted if there is no promotion that day
120
Iso Currency code.
"EUR"
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 best price can be booked for an arrival that day. notAvailable is returned when the hotel has no bookable offer for that arrival date.
- Available: Room is available for booking
- OnRequest: Hotel must confirm availability before booking
- NotAvailable: Room is not available for booking
Available, OnRequest, NotAvailable 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?