X Our new Developer Portal is here!
The latest version of our Demand API (V3.1) is now available. Update now for improved functionality and access to newly added endpoints.

Take me there

Getting Started

## Introduction This guide is intended primarily for developers. It is a supplement to our [technical documentation](https://developers.booking.com/api/technical.html), which should be consulted for more detailed information on all endpoints. ## Major and Minor Versions Versions are named as follows: MAJOR.MINOR Examples: v2.0 - major version 2, minor version 0 v2.1 - major version 2, minor version 1 Features will not be removed in minor versions except when required for legal or security reasons. This means that minor versions will be backwards-compatible with their corresponding major versions. Minor versions may include: - New features (parameters and output values). - Fields that may be marked as deprecated. These fields will be removed in the next major version. ## Authentication The Booking.com Demand API uses HTTP Basic Authentication. For more details, please refer to this [Wikipedia article](https://en.wikipedia.org/wiki/Basic_access_authentication). ## Sample URLs General syntax: https://[domain]/[version]</[xml or json]>/[endpoint]?[parameters] JSON and XML examples for v2.0: - GET https://distribution-xml.booking.com/2.0/hotels?hotel_ids=10004 - GET https://distribution-xml.booking.com/2.0/xml/hotels?hotel_ids=10004 The default output format is JSON. XML output can be obtained adding `/xml` to the URL, or by passing the HTTP header `Accept: text/xml` Our [technical documentation](https://developers.booking.com/api/technical.html) contains JSON URL samples for every endpoint. ## Output format **JSON example** ``` { "result": [ ], "errors": [ { "code": 1000, "message": "Sample error message" } ], "warnings": [ { "code": 1001, "message": "Sample warning message" } ], "request_params": { } } ``` ** XML example ** ``` <EndpointName> <result></result> <result></result> <errors> <code>1000</code> <message>Sample error message</message> </errors> <warnings> <code>1001</code> <message>Sample warning message</message> </warnings> <request_params></request_params> </EndpointName> ``` **Note:** To generate request_params (requested parameters) in the output, the input parameter **show_request_params=1** needs to be added in the request. This can be useful for debugging. ## Pagination The **offset** and **rows** input parameters are used for pagination. The **offset** input parameter specifies where in the resulting list to start pagination. The **rows** parameter specifies the maximum number of entries to return. ## Usage Examples: Retrieve the first 100 entries: **cities?offset=0&rows=100** Retrieve the next 100 entries starting from the 100th row: **cities?offset=100&rows=100** ## Limitations Requests made to the API cannot exceed 8192 characters. In the event of a violation, user will receive a HTTP 403 error response. HTTP GET requests may not contain a request body. In the event of a violatoin, user will receive a HTTP 403 error response.