Booking.com Demand API (3.1)

Our Demand API offers a wide range of functionalities for Affiliate Partners to be able to retrieve accommodation, car rental and flights information from Booking.com inventory.

- Based on basic REST principles, our endpoints return JSON data directly from our system.
- You can consume them directly through HTTPS calls, using the POST method.

Download OpenAPI description
Languages
Servers
Production environment
https://demandapi.booking.com/3.1/
Sandbox environment
https://demandapi-sandbox.booking.com/3.1/

Accommodation

This API collection is specific for the stay part of the connected trip.

Use these endpoints to look for accommodation such as hotels, apartments, etc, check their availability, reviews, accommodation details, etc.

Operations

Search accommodation

Request

This endpoint returns by default the cheapest available product for each accommodation matching the search criteria.
However if you look for accommodation located in a specific country or region (using our filters), then the retrieved results are sorted based on "Booking.com popularity" (Top picks) ranking.
This means that any accommodation meeting the search criteria and with higher popularity levels will appear on top of the search results page (in descending order).
This does not apply when searching for accommodation in specific cities or districts. Refer to the Filtering and pagination guide for more details.

Headers
X-Affiliate-Idintegerrequired

Include here your Affiliate identifier number

Bodyapplication/json
24_hour_receptionboolean

Filter the result based if the front desk reception is available 24/7. When specified true, the result will filter the products where front desk is available 24/7.

accommodation_facilitiesArray of integers
accommodation_typesArray of integers
accommodationsArray of integers<= 100 items
airportstring^[A-Z]{3}$

A three-letter code that uniquely identifies an airport as defined by the International Air Transport Association (IATA). The full list can be obtained by calling common/locations/airports.

Example: "AMS"
bookerobject(Booker)required

The booker's information.

booker.​countrystring^[a-z]{2}$required

The booker country for showing the best price for that user and obeying laws regarding the display of taxes and fees.

booker.​platformstringrequired

The booker platform for showing the platform based deals and prices.

Enum"android""desktop""ios""mobile""tablet"
booker.​statestring^[a-z]{2}$

The booker state for showing the best price for that user and obeying laws regarding the display of taxes and fees. Currently applicable only for country US.

booker.​travel_purposestring

The travel purpose of the booker.

Enum"business""leisure"
booker.​user_groupsArray of strings

The user groups that the booker is a member of.

Items Value"authenticated"
brandsArray of integers
cancellation_typestring

Filters the result for the cancellation type specified. Possible values are free_cancellation & non_refundable. If cancellation_type is free_cancellation, the result will contain all the products with free_cancellation.

Enum"free_cancellation""non_refundable"
checkinstring(date)required

The checkin date. Must be within 500 days in the future and in the format yyyy-mm-dd.

checkoutstring(date)required

The checkout date. Must be later than {checkin}. Must be between 1 and 90 days after {checkin}. Must be within 500 days in the future and in the format yyyy-mm-dd.

cityinteger

A signed integer number that uniquely identifies a city. The full list can be obtained by calling common/locations/cities.

coordinatesobject(AccommodationsSearchCoordinatesOutput)

Limit the result list to the specified coordinates.

countrystring^[a-z]{2}$

A two-letter code that uniquely identifies a country. This code is defined by the ISO 3166-1 alpha-2 standard (ISO2) as described here: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2. The full list can be obtained by calling common/locations/countries.

Example: "nl"
currencystring^[A-Z]{3}$

A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.

Example: "EUR"
districtinteger>= 1

A signed integer number that uniquely identifies a district. Typically, districts define known areas within a city. The full list can be obtained by calling common/locations/districts.

dormitoriesstring

This parameter specifies if the results should include dormitory beds or rooms. The default behaviour will include the dormitory beds or rooms with other results. When this flag is set to 'only', the response will only include dormitory beds or rooms. When this flag is set to 'exclude', the response will exclude dormitory beds or rooms. When this flag is set to 'include', the response will include dormitory beds or rooms with other results.

Default "include"
Enum"include""exclude""only"
extrasArray of strings

Input parameter to request for additional information about the products.

Items Enum"extra_charges""products"
guestsobject(AccommodationsGuests)required

The guest details for the request.

guests.​allocationArray of objects

The exact allocation of guests to rooms.

guests.​childrenArray of integers

Array with the children ages.

guests.​number_of_adultsinteger>= 1required

The number of adults for the search.

guests.​number_of_roomsinteger>= 1required

The number of rooms needed.

landmarkinteger>= 1

A signed integer number that uniquely identifies a relevant geographical landmark, like a monument or a natural attraction. The full list can be obtained by calling common/locations/landmarks.

meal_planstring

Filter the result based on the selected meal plan. Example: When specified breakfast_included, it will show the product with free breakfast.

Enum"all_inclusive""breakfast_included""full_board""half_board"
pagestring

Pagination token used to retrieve the next page of results. Obtained from next_page.

paymentobject

The payment filter for the request

priceobject

If specified, will return only results where the price per night falls in the specified range (inclusive). This filter requires that a currency is passed

ratingobject

The rating filter for the request

regioninteger>= 1

A signed integer number that uniquely identifies a geographical region. Regions usually define official administrative areas within a country, but may also include multiple countries and in some cases un-official but popular designations for geographical areas. An example of a region that crosses multiple countries is the Alps in Europe. The full list can be obtained by calling common/locations/regions.

room_facilitiesArray of integers
rowsintegermultiple of 10[ 10 .. 100 ]

The maximum number of results to return.

Default 100
sortobject

The sorting parameters for the response

travel_proudboolean

Filter the result based on if the property is LGBTQ+ friendly. When specified true, the result will filter and return only the accommodations that are Proud Certified.

curl -i -X POST \
  https://demandapi.booking.com/3.1/accommodations/search \
  -H 'Authorization: Bearer <YOUR_string_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Affiliate-Id: 0' \
  -d '{
    "booker": {
      "country": "nl",
      "platform": "desktop"
    },
    "checkin": "!START_DATE!",
    "checkout": "!END_DATE!",
    "city": -2140479,
    "extras": [
      "extra_charges",
      "products"
    ],
    "guests": {
      "number_of_adults": 2,
      "number_of_rooms": 1
    }
  }'

Responses

Successful response.

Bodyapplication/json
request_idstring

Uniquely identifies the request. Please provide this identifier when contacting support.

dataArray of objects(AccommodationsSearchDataOutput)
next_pagestring or null

Indicates that more results are available. Use this pagination token to retrieve the next page of results (via parameter page).

Response
application/json
{ "request_id": "01fr9ez700exycb98w90w5r9sh", "data": [ {}, "..." ], "next_page": "..." }

Check availability

Request

Use this endpoint to return detailed product availability, price and charges of the accommodation matching a given search criteria.
By default, only product availability and price is returned. To receive extended information use the extras parameter.

Note: It is mandatory to pass the input parameters: accommodation, booker, checkin, checkout and guest.

Headers
X-Affiliate-Idintegerrequired

Include here your Affiliate identifier number

Bodyapplication/json
accommodationinteger>= 1required

A signed integer number that uniquely identifies an accommodation property. The full list can be obtained by calling accommodations/details.

bookerobject(Booker)required

The booker's information.

booker.​countrystring^[a-z]{2}$required

The booker country for showing the best price for that user and obeying laws regarding the display of taxes and fees.

booker.​platformstringrequired

The booker platform for showing the platform based deals and prices.

Enum"android""desktop""ios""mobile""tablet"
booker.​statestring^[a-z]{2}$

The booker state for showing the best price for that user and obeying laws regarding the display of taxes and fees. Currently applicable only for country US.

booker.​travel_purposestring

The travel purpose of the booker.

Enum"business""leisure"
booker.​user_groupsArray of strings

The user groups that the booker is a member of.

Items Value"authenticated"
checkinstring(date)required

The checkin date. Must be within 500 days in the future and in the format yyyy-mm-dd.

checkoutstring(date)required

The checkout date. Must be later than {checkin}. Must be between 1 and 90 days after {checkin}. Must be within 500 days in the future and in the format yyyy-mm-dd.

currencystring^[A-Z]{3}$

A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.

Example: "EUR"
extrasArray of strings

Input parameter to request for additional information about this product.

Items Value"extra_charges"
guestsobject(AccommodationsGuests)required

The guest details for the request.

guests.​allocationArray of objects

The exact allocation of guests to rooms.

guests.​childrenArray of integers

Array with the children ages.

guests.​number_of_adultsinteger>= 1required

The number of adults for the search.

guests.​number_of_roomsinteger>= 1required

The number of rooms needed.

paymentobject

Payment input information to filter results.

productsArray of strings
curl -i -X POST \
  https://demandapi.booking.com/3.1/accommodations/availability \
  -H 'Authorization: Bearer <YOUR_string_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Affiliate-Id: 0' \
  -d '{
    "accommodation": 10004,
    "booker": {
      "country": "nl",
      "platform": "desktop"
    },
    "checkin": "!START_DATE!",
    "checkout": "!END_DATE!",
    "extras": [
      "extra_charges"
    ],
    "guests": {
      "number_of_adults": 2,
      "number_of_rooms": 1
    }
  }'

Responses

Successful response.

Bodyapplication/json
request_idstring

Uniquely identifies the request. Please provide this identifier when contacting support.

dataobject(AccommodationsAvailabilityDataOutput)
Response
application/json
{ "request_id": "01fr9ez700exycb98w90w5r9sh", "data": { "id": 10004, "currency": "EUR", "deep_link_url": "booking://hotel/10004?affiliate_id=!AFFILIATE_ID!&checkin=!START_DATE!&checkout=!END_DATE!", "products": [], "recommendation": {}, "url": "https://www.booking.com/hotel/nl/toren.html?aid=!AFFILIATE_ID!&checkin=!START_DATE!&checkout=!END_DATE!&no_rooms=1&group_adults=2" } }

Check multiple availability

Request

Use this endpoint to retrieve detailed product availability, price and charges of a list of accommodations. By default, only product availability and price is returned.
To receive extended information use the extras parameter.
Note: It is mandatory to pass the input parameters: accommodations, booker, checkin, checkout and guests.

Headers
X-Affiliate-Idintegerrequired

Include here your Affiliate identifier number

Bodyapplication/json
accommodationsArray of integersrequired
bookerobject(Booker)required

The booker's information.

booker.​countrystring^[a-z]{2}$required

The booker country for showing the best price for that user and obeying laws regarding the display of taxes and fees.

booker.​platformstringrequired

The booker platform for showing the platform based deals and prices.

Enum"android""desktop""ios""mobile""tablet"
booker.​statestring^[a-z]{2}$

The booker state for showing the best price for that user and obeying laws regarding the display of taxes and fees. Currently applicable only for country US.

booker.​travel_purposestring

The travel purpose of the booker.

Enum"business""leisure"
booker.​user_groupsArray of strings

The user groups that the booker is a member of.

Items Value"authenticated"
checkinstring(date)required

The checkin date. Must be within 500 days in the future and in the format yyyy-mm-dd.

checkoutstring(date)required

The checkout date. Must be later than {checkin}. Must be between 1 and 90 days after {checkin}. Must be within 500 days in the future and in the format yyyy-mm-dd.

currencystring^[A-Z]{3}$

A three-letter code that uniquely identifies a monetary currency as defined by the ISO 4217 standard. The full list can be obtained by calling common/payments/currencies.

Example: "EUR"
extrasArray of strings

Input parameter to request for additional information about this product.

Items Value"extra_charges"
filtersobject(AccommodationsBulkAvailabilityFiltersInput)

The filters to apply in this availability request.

guestsobject(AccommodationsGuests)required

The guest details for the request.

guests.​allocationArray of objects

The exact allocation of guests to rooms.

guests.​childrenArray of integers

Array with the children ages.

guests.​number_of_adultsinteger>= 1required

The number of adults for the search.

guests.​number_of_roomsinteger>= 1required

The number of rooms needed.

curl -i -X POST \
  https://demandapi.booking.com/3.1/accommodations/bulk-availability \
  -H 'Authorization: Bearer <YOUR_string_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Affiliate-Id: 0' \
  -d '{
    "accommodations": [
      10004
    ],
    "booker": {
      "country": "nl",
      "platform": "desktop"
    },
    "checkin": "!START_DATE!",
    "checkout": "!END_DATE!",
    "extras": [
      "extra_charges"
    ],
    "filters": {
      "meal_plan": "breakfast_included",
      "cancellation_type": "free_cancellation"
    },
    "guests": {
      "number_of_adults": 2,
      "number_of_rooms": 1
    }
  }'

Responses

Successful response.

Bodyapplication/json
request_idstring

Uniquely identifies the request. Please provide this identifier when contacting support.

dataArray of objects(AccommodationsBulkAvailabilityDataOutput,)
Response
application/json
{ "request_id": "01fr9ez700exycb98w90w5r9sh", "data": [ {} ] }

Car rentals

This API collection is specific to the car rentals part of the connected trip, and form part of an early access pilot programme restricted to selected partners.

Pilot phase:
- All the functionalities are currently under active development and are subject to change.
- Initial search, look, and post-book functionalities (Type 2 and Type 4 partners) are available exclusively for testing purposes.
- General availability is targeted for Q2 2025.

Limited access:
- This API collection is currently accessible only to a select group of Type 2 and Type 4 pilot partners.
- If you are not part of the pilot, you will not have access to these endpoints.
- For inquiries regarding participation, please contact our Partnerships team.

Frequent updates:
These endpoints and documentation will be updated regularly throughout the pilot.

Operations

Locations

These are the endpoints you can use to retrieve the identifiers of a wide range of geographical locations: airports, countries, cities, regions, etc.

Use these identifiers to construct your requests.

Note: These identifiers are available across all travel services and you can use them for both accommodotation and car rentals requests.

Operations

Payments

Generic endpoints related to payments and finance: currencies, payment types, etc.

Operations

Languages

Use this endpoint to retrieve the list of available language codes.

Operations

Orders

These endpoints enable you to manage and process booking orders within the Demand API. These operations include previewing and creating new orders, checking order details, cancelling existing orders, and modifying orders if needed.

This API collection is essential for integrating the order management functionality, such as handling bookings, cancellations, and updates to reservation details, etc.

Operations