Booking.com Demand API (3.2)

v3.2

Demand API version 3.2 introduces several improvements and breaking changes from version 3.1, including updates to accommodation booking flows, inclusion of Attractions in orders/details for post-booking reporting and other structural enhancements.

  • The API follows REST principles and returns data in JSON format.
  • You can access endpoints via HTTPS POST requests.

Authentication: Use your Affiliate ID and token credentials to use these endpoints.

Try it out!

Download OpenAPI description
Languages
Servers
Production environment – use for live integrations.
https://demandapi.booking.com/3.2/
Sandbox environment – use for testing and validation.
https://demandapi-sandbox.booking.com/3.2/

Accommodation

v3.2

This collection includes endpoints related to stays within the connected trip experience.

Use these endpoints to:

  • Search for hotels, apartments, and other accommodation types.
  • Check real-time availability and pricing.
  • Retrieve property details and guest reviews.
Operations

Car rentals

v3.2

This collection includes endpoints related to car rental services within the connected trip experience.

Use these endpoints to:

  • Search and retrieve car details.
  • Retrieve car specifications, depot locations, and supplier information.
Operations

Locations

v3.2

This collection provides standardised location identifiers for geographical entities such as airports, countries, cities, and regions.

Use the returned identifiers when constructing requests across all travel services API collections, including both accommodation and car rental endpoints.

Operations

Payments

v3.2

Provides generic payment-related identifiers, including supported currency codes, payment cards, and relevant metadata for booking flows.

  • Use the returned identifiers when constructing requests across all travel services API collections, including both accommodation and car rental endpoints.
Operations

Languages

v3.2

Use this endpoint to retrieve a list of supported IETF language tag codes.

  • You can use these codes when constructing requests across all travel services API collections, including both accommodation and car rental endpoints.
Operations

Orders

v3.2

This API collection enables management of booking orders within the Demand API.
Use these endpoints to:

  • Preview and create new orders.
  • Check order details.
  • Cancel or modify existing orders. This collection is required to integrate booking and order management functionality.
Operations

Preview an order

Request

Use this endpoint to calculate the final price, price breakdown, payment schedules, and cancellation policies for accommodation products.

  • Provide the booker's details and currency to receive personalised pricing.
  • For accommodations, include checkin/checkout dates, room allocations, and selected products.
Headers
X-Affiliate-Idintegerrequired

Include here your Affiliate identifier number

Bodyapplication/json
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"
accommodationobject(OrdersPreviewAccommodationInput)

Input parameter with the checkin and checkout date and all the accommodation products to be ordered. This field is mutually exclusive with car; only one of them can be included in a request.

curl -i -X POST \
  https://demandapi.booking.com/3.2/orders/preview \
  -H 'Authorization: Bearer <YOUR_string_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Affiliate-Id: 0' \
  -d '{
    "currency": "EUR",
    "accommodation": {
      "id": 6745031,
      "booker": {
        "country": "nl",
        "platform": "mobile",
        "travel_purpose": "leisure",
        "user_groups": [
          "authenticated"
        ]
      },
      "checkin": "!START_DATE!",
      "checkout": "!END_DATE!",
      "products": [
        {
          "id": "674503106_275710478_0_2_0",
          "allocation": {
            "number_of_adults": 1,
            "children": [
              8
            ]
          }
        },
        {
          "id": "674503113_275710486_0_1_0",
          "allocation": {
            "number_of_adults": 1,
            "children": []
          }
        }
      ]
    }
  }'

Responses

Successful response.

Bodyapplication/json
request_idstring

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

dataobject(OrdersPreviewDataOutput)

Contains the calculated order details for accommodation, including pricing, policies, etc.

Response
application/json
{ "request_id": "01fr9ez700exycb98w90w5r9sh", "data": { "accommodation": {}, "order_token": "..." } }

Create an order

Request

Use this endpoint to confirm the order and proceed the payment.

Headers
X-Affiliate-Idintegerrequired

Include here your Affiliate identifier number

Bodyapplication/json
accommodationobject(OrderCreateAccommodationInput)

Additional information related to the accommodation order. This field is mutually exclusive with car; only one of them can be included in a request.

Example: {"label":"Sample label","products":[{"id":"333","bed_configuration":"123456","guests":[{"email":"test.name@booking.com","name":"Test Name"}]}],"remarks":{"estimated_arrival_time":{"hour":12},"special_requests":"We will need an extra cot."}}
bookerobject(OrderCreateBookerInput)required
Example: {"address":{"address_line":"Road-1, house-2","city":"Amsterdam","country":"nl","post_code":"11111"},"company":"Booking B.V","email":"test.name@booking.com","language":"en-gb","name":{"first_name":"Test","last_name":"Name"},"telephone":"12345678"}
booker.​addressobject(OrderCreateAddressInput)required
Example: {"address_line":"Road-1, house-2","city":"Amsterdam","country":"nl","post_code":"11111"}
booker.​address.​address_linestring
Example: "Road-1, house-2"
booker.​address.​citystring
Example: "Amsterdam"
booker.​address.​countrystring^[a-z]{2}$required
Example: "nl"
booker.​address.​post_codestring
Example: "11111"
booker.​companystring
Example: "Booking B.V"
booker.​emailstringrequired
Example: "test.name@booking.com"
booker.​languagestring^[a-z]{2}(-[a-z]{2})?$
Example: "en-gb"
booker.​nameobject(OrderCreateBookerNameInput)required
Example: {"first_name":"Test","last_name":"Name"}
booker.​name.​first_namestringrequired
Example: "Test"
booker.​name.​last_namestringrequired
Example: "Name"
booker.​telephonestringrequired
Example: "12345678"
order_tokenstringrequired
Example: "sample-token"
paymentobject(OrderCreatePaymentInput)required
Example: {"card":{"cardholder":"Test Name","cvc":"111","expiry_date":"2030-10","number":"23333333333333"},"include_receipt":true,"method":"card","timing":"pay_at_the_property"}
payment.​airplusobject
payment.​business_informationobject
payment.​cardobject
Example: {"cardholder":"Test Name","cvc":"111","expiry_date":"2030-10","number":"23333333333333"}
payment.​include_receiptboolean
Example: true
payment.​methodstring
Enum"airplus""card""wallet"
Example: "card"
payment.​timingstringrequired
Enum"pay_at_the_property""pay_online_later""pay_online_now"
Example: "pay_at_the_property"
curl -i -X POST \
  https://demandapi.booking.com/3.2/orders/create \
  -H 'Authorization: Bearer <YOUR_string_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Affiliate-Id: 0' \
  -d '{
    "accommodation": {
      "label": "Sample label",
      "products": [
        {
          "id": "333",
          "bed_configuration": "123456",
          "guests": [
            {
              "email": "test.name@booking.com",
              "name": "Test Name"
            }
          ]
        }
      ],
      "remarks": {
        "estimated_arrival_time": {
          "hour": 12
        },
        "special_requests": "We will need an extra cot."
      }
    },
    "booker": {
      "address": {
        "address_line": "Road-1, house-2",
        "city": "Amsterdam",
        "country": "nl",
        "post_code": "11111"
      },
      "company": "Booking B.V",
      "email": "test.name@booking.com",
      "language": "en-gb",
      "name": {
        "first_name": "Test",
        "last_name": "Name"
      },
      "telephone": "12345678"
    },
    "order_token": "sample-token",
    "payment": {
      "card": {
        "cardholder": "Test Name",
        "cvc": "111",
        "expiry_date": "2030-10",
        "number": "23333333333333"
      },
      "include_receipt": true,
      "method": "card",
      "timing": "pay_at_the_property"
    }
  }'

Responses

Successful response.

Bodyapplication/json
request_idstring

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

dataobject(OrderCreateDataOutput)
Response
application/json
{ "request_id": "01fr9ez700exycb98w90w5r9sh", "order": "509430129718799", "data": { "accommodation": {}, "payment": {} } }

Orders details

Request

Use this endpoint to retrieve detailed information about existing orders based on a specific filter or identifier. You can query orders by:

  • Creation or update date – retrieve orders created or updated within a specified time range (up to 7 days).
  • Stay or car rental dates – retrieve orders by travel start or end date.
  • Order or reservation IDs – fetch details for specific orders or reservations.

The response includes essential order information such as order ID, status, service type, and price.

The returned information is especially useful for syncing your system with Booking.com order data, monitoring updates, and reporting across services (accommodations, cars, flights, and attractions).

Headers
X-Affiliate-Idintegerrequired

Include here your Affiliate identifier number

Bodyapplication/json
One of:
updatedobject(OrderDetailsDatetimeFilterInput)required

Filtering orders by time range on basis of order "created" or "updated" time. Maximum time range is 7 days (1 week).

updated.​fromstring(date-time)required

ISO 8601 timestamp in UTC, which indicates the timestamp from which you want to filter orders from (inclusive). The value should be within last 1 year.

updated.​tostring(date-time)

ISO 8601 timestamp in UTC, which indicates the timestamp till which you want to filter orders to (inclusive). It has to be greater than or equal to "from".

currencystring^[A-Z]{3}$required

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"
maximum_resultsintegermultiple of 10[ 10 .. 100 ]

The maximum number of results to return.

Default 100
sortobject(OrderDetailsSortInput)

The sorting parameters for the response.

extrasArray of strings

Input parameter to request for additional information about this order.

Items Value"payment"
servicesArray of strings

Filter orders by included services.

Items Enum"accommodations""cars""flights""attractions"
curl -i -X POST \
  https://demandapi.booking.com/3.2/orders/details \
  -H 'Authorization: Bearer <YOUR_string_HERE>' \
  -H 'Content-Type: application/json' \
  -H 'X-Affiliate-Id: 0' \
  -d '{
    "created": {
      "from": "2025-08-28T02:00:00+00:00",
      "to": "2025-08-31T02:00:00+00:00"
    },
    "currency": "EUR",
    "maximum_results": 20,
    "sort": {
      "by": "updated",
      "direction": "descending"
    },
    "extras": [
      "payment"
    ]
  }'

Responses

Successful response.

Bodyapplication/json
dataArray of objects(OrderDetailsDataOutput)
metadataobject(MetadataOutput)

Metadata about the request.

request_idstring

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

Response
application/json
{ "request_id": "01fr9ez700exycb98w90w5r9sh", "data": [ {} ], "metadata": { "next_page": null, "total_results": 1 } }