List accommodation properties
Changed onReturns the Booking.com property inventory as a newline-delimited JSON (NDJSON) stream, one property object per line. Each record carries static content such as names, addresses, categories, images, ratings, policies, and regulatory identifiers such as license numbers (the compliance group). API consumers use it to build and refresh a local copy of the inventory.
Parameters
- languages (required): a single BCP-47 language code (e.g. fr, en-gb). Localizable fields such as name, description, location.city, and location.province are returned in this language.
- updated_since (optional): an ISO-8601 UTC timestamp with millisecond precision (e.g. 2026-04-20T00:00:00.000Z). When set, only properties changed at or after this instant are returned (delta sync). When omitted, the full inventory is returned.
- image_size (optional): the size token applied to every image URL. One of thumbnail, thumbnail_large, standard, or large. Defaults to standard.
Compression
A full sync is several gigabytes of NDJSON. Send an Accept-Encoding header to receive the stream compressed; the response then carries the matching Content-Encoding header and the body is one continuous zstd frame or gzip member, flushed as the stream progresses:
- zstd (recommended): typically 6–8× smaller, and the fastest way to receive a full sync.
- gzip: about 5× smaller, decoded by virtually every HTTP client and library.
When both are accepted with the same weight, zstd is used. Many HTTP clients send Accept-Encoding: gzip by default and decompress transparently. A response without a Content-Encoding header is plain NDJSON. The response protocol below applies to the decompressed stream.
Response protocol
Each line is one complete JSON object. A data row carries the property fields:
{"property_id":1377102,"name":"Grand Central Hotel","description":"Featuring air-conditioned accommodation with a balcony, the property offers a private pool.","category":"hotel","number_of_rooms":1,"images":[{"url":"https://q-xx.bstatic.com/xdata/images/hotel/max500/681992303.jpg?k=<sig>&o=","type":"main"}],"language":"en-gb","updated_at":"2026-07-06T14:21:56.000Z","location":{"country":"nl","latitude":52.3702,"longitude":4.8952,"street_address":"Prins Hendrikkade 59","city":"Amsterdam","postal_code":"1012 AD","province":"North Holland"},"ratings":{"star_rating":5.0,"is_star_rating_estimated":false,"guest_review_score":8.6,"guest_review_count":1243},"policies":{"check_in_start_time":"15:00","check_in_end_time":"23:00","check_out_start_time":"07:00","check_out_end_time":"11:00","is_instant_bookable":true},"links":{"booking_url":"https://www.booking.com/hotel/nl/grand-central.html?aid=343802","booking_deep_link_url":"https://www.booking.com/hotel/nl/grand-central.html?aid=343802&utm_medium=deeplink"},"status":{"property_status":"open","last_active_date":"2026-07-07"}}
Properties with official license numbers also carry a compliance object (see the Compliance schema); it is omitted for all other properties.
The final line is a completion marker:
{"_control":"complete","data_row_count":4055137}
Every line may carry a _control field that marks the line type:
- Data rows use "_control":"data". This is the default and is omitted to reduce response size, so a line with no _control field is a data row.
- The final line is the completion marker, "_control":"complete". It reports data_row_count, the number of data rows emitted.
To confirm the stream is complete, match data_row_count against the number of data rows received. If the completion marker is absent, the stream was truncated and the response must be discarded.
Preview version: temporary constraints (subject to change without notice)
This endpoint is a preview version. Only one language per request is currently supported; requesting more than one returns HTTP 400. An API consumer that needs several languages sends one request per language, in parallel.
Errors
400 Bad Request with a JSON error body is returned for invalid input: more than one languages entry, an unsupported image_size, or a malformed updated_since timestamp.
Request
- Base URLhttps://metasearch-connect-api.booking.com
- AuthHTTP bearer
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Headers
Codings the client can decode, e.g. zstd or gzip. See Compression.
Request body
Example request
{
"languages": [
"en-gb"
],
"updated_since": "2026-04-20T00:00:00.000Z"
}Response
NDJSON stream. Each line is a property stream record.
Changes
- info
added the new optional
headerrequest parameterAccept-Encoding
- info
- info
added the optional property
to the response with the status
- info