Booking.com Demand API (3.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

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

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

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

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

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

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
One of:
carobject(carInput)

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

currencystring(currencyId)^[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.

accommodationobject(accommodationInput)

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(requestId)

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

dataobject(preview)

Contains the calculated order details for accommodation or car products, 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(accommodation)

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

bookerobject(create-3_2_booker)required

The booker's information.

booker.​addressobject(create-3_2_address)required

The booker's address to be used for creating this order. All fields of this object are required if the /accommodations/details endpoint indicates that the booker's address is necessary by returning booker_address_required=true.

booker.​address.​address_linestring

The details of this address.

booker.​address.​citystring

The city for this address.

booker.​address.​countrystring(countryId)^[a-z]{2}$required

The country for this address.

booker.​address.​post_codestring

Post code for this address.

booker.​companystring

The booker's company name.

booker.​emailstringrequired

The booker's email address.

booker.​languagestring(languageId)^[a-z]{2}(-[a-z]{2})?$

A IETF language tag code that uniquely identifies a supported human language or dialect. Note: Demand API only accepts lowercase for the language codes. Examples: "nl" for Dutch/Nederlands or "en-us" for English (US). The full list can be obtained by calling common/languages.

booker.​nameobject(OrderCreateBookerNameInput)required

The name of the booker.

booker.​name.​first_namestringrequired
booker.​name.​last_namestringrequired
booker.​telephonestringrequired

The booker's telephone number.

order_tokenstringrequired

A token containing the necessary data to be used for creating this order.

paymentobject(create-3_2_payment)required

Payment related information for the order.

payment.​airplusobject

All information related to airplus payment. This is required if airplus is selected as payment method.

payment.​business_informationobject(OrderCreateBusinessInformationInput)

All business related information for billing and authorisation form. This must be included for the payments that require authorisation form.

payment.​cardobject(OrderCreateCardInput)

Card information for executing the payment.

payment.​include_receiptboolean

This is used to determine whether to include payment receipt_url in the response or not.

payment.​methodstring

The payment method to be used for this order.

Enum"airplus""card""wallet"
payment.​timingstringrequired

Information about when to execute the payment.

Enum"pay_at_the_property""pay_online_later""pay_online_now"
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(requestId)

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(orderDatetimeFilter)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(currencyId)^[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.

maximum_resultsinteger(maximumResults)multiple of 10[ 10 .. 100 ]

The maximum number of results to return.

sortobject(orderSort)

The sorting parameters for the response.

extrasArray of strings(schemas-extras)

Input parameter to request for additional information about this order.

Items Value"payment"
servicesArray of strings(services)

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(metadata)

Metadata about the request.

request_idstring(requestId)

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 } }