# List accommodation properties

Returns 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.

Endpoint: POST /inventory/properties
Version: 1.2.2
Security: BearerAuth

## Description:

  - `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"}}
{"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}
{"_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.

## Security:

  - `BearerAuth` (unknown)
    http bearer string

## Header parameters:

  - `Accept-Encoding` (string)
    Codings the client can decode, e.g. `zstd` or `gzip`. See *Compression*.

## Request fields (application/json):

  - `languages` (array)
    Exactly one BCP-47 language code. Localizable fields are returned in this language. More than one language is not currently supported and returns HTTP 400.
    Example: ["en-gb"]

  - `updated_since` (string)
    Optional ISO-8601 UTC timestamp with millisecond precision. When set, only properties changed at or after this instant are returned (delta sync); when omitted, the full inventory is returned.
    Example: 2026-04-20T00:00:00.000Z

  - `image_size` (string)
    Size token applied to every image URL:
- `thumbnail`: 100×100, square, center-cropped
- `thumbnail_large`: 300×300, square, center-cropped
- `standard`: up to 500px on the longest side (default)
- `large`: up to 1280px on the longest side
    Enum: "thumbnail", "thumbnail_large", "standard", "large"

## Response 200:

  - `200` (unknown)
    NDJSON stream. Each line is a property stream record.

## Response 200 fields (application/x-ndjson):

  - `property_id` (integer)
    Booking.com property identifier.
    Example: 1377102

  - `name` (string)
    Property name, localized to the requested language.
    Example: Grand Central Hotel

  - `description` (string)
    Free-text property description, localized to the requested language. Always present.
    Example: Featuring air-conditioned accommodation with a balcony, the property offers a private pool.

  - `category` (string)
    Accommodation type of the property, as a lowercase snake_case token.
    Enum: "apartment", "hostel", "hotel", "motel", "resort", "bed_and_breakfast", "ryokan", "farm_stay", "holiday_park", "villa", "camping", "boat", "guest_house", "inn", "aparthotel", "holiday_home", "lodge", "homestay", "country_house", "tented_camp", "capsule_hotel", "love_hotel", "riad", "chalet", "japanese_style_business_hotel", "gite", "sanatorium", "cruise", "student_accommodation"

  - `number_of_rooms` (integer)
    Number of bookable rooms or units. Most inventory is single-unit (apartments and holiday homes), so 1 is the most common value.
    Example: 1

  - `images` (array)
    Property images on the Booking.com image CDN, each with its URL and type. Populated for ~98.6% of properties; omitted when the property has no image.

  - `images.url` (string)
    Image URL on the Booking.com image CDN, with the requested image_size applied.
    Example: https://q-xx.bstatic.com/xdata/images/hotel/max500/681992303.jpg?k=<sig>&o=

  - `images.type` (string)
    Image type. Currently always "main".
    Example: main

  - `language` (string)
    BCP-47 language code the localizable fields are returned in (echoes the request).
    Example: en-gb

  - `updated_at` (string)
    ISO-8601 UTC timestamp of the last change to this property record.
    Example: 2026-07-06T14:21:56.000Z

  - `location` (object)
    Geographic location of the property.

  - `location.country` (string)
    ISO 3166-1 alpha-2 country code.
    Example: nl

  - `location.latitude` (number)
    Latitude in decimal degrees.
    Example: 52.3702

  - `location.longitude` (number)
    Longitude in decimal degrees.
    Example: 4.8952

  - `location.street_address` (string)
    Street address, localized to the requested language.
    Example: Prins Hendrikkade 59

  - `location.city` (string)
    City name, localized to the requested language.
    Example: Amsterdam

  - `location.postal_code` (string)
    Postal or ZIP code.
    Example: 1012 AD

  - `location.province` (string)
    Province or state, localized to the requested language.
    Example: North Holland

  - `ratings` (object)
    Star rating and guest review aggregates.

  - `ratings.star_rating` (number)
    Official star rating from 1.0 to 5.0. Unrated properties (e.g. many apartments) use 0.0, not null.
    Example: 5

  - `ratings.is_star_rating_estimated` (boolean)
    Whether the star rating is estimated by Booking.com rather than officially assigned. Always present.
    Example: false

  - `ratings.guest_review_score` (number)
    Average guest review score, from 1 to 10.
    Example: 8.6

  - `ratings.guest_review_count` (integer)
    Number of guest reviews the score is based on.
    Example: 1243

  - `policies` (object)
    Check-in/check-out times and bookability policies.

  - `policies.check_in_start_time` (string)
    Earliest check-in time, local to the property (HH:mm).
    Example: 15:00

  - `policies.check_in_end_time` (string)
    Latest check-in time, local to the property (HH:mm).
    Example: 23:00

  - `policies.check_out_start_time` (string)
    Earliest check-out time, local to the property (HH:mm).
    Example: 07:00

  - `policies.check_out_end_time` (string)
    Latest check-out time, local to the property (HH:mm).
    Example: 11:00

  - `policies.is_instant_bookable` (boolean)
    Whether the property can be booked instantly (no host confirmation).
    Example: true

  - `links` (object)
    Partner-facing links to the property.

  - `links.booking_url` (string)
    Partner-attributed link to the property page on Booking.com.
    Example: https://www.booking.com/hotel/nl/grand-central.html?aid=343802

  - `links.booking_deep_link_url` (string)
    Partner-attributed deep link that opens the property in the Booking.com app.
    Example: https://www.booking.com/hotel/nl/grand-central.html?aid=343802&utm_medium=deeplink

  - `status` (object)
    Lifecycle status of the property.

  - `status.property_status` (string)
    Lifecycle status of the property: open (bookable) or closed (not bookable).
    Enum: "open", "closed"

  - `status.last_active_date` (string)
    Date the property was last active in the feed, as an ISO date (YYYY-MM-DD).
    Example: 2026-07-07

  - `compliance` (object)
    Regulatory identifiers of the property as recorded by Booking.com. Omitted when none is known.

  - `compliance.license_numbers` (array)
    Official license numbers of the property. Currently the Italian national identification code (CIN), including unit-level codes attached to the property. Ordered with the property-level code first, then the unit-level codes, alphabetically within each level.
    Example: ["IT090003A1000F2242"]

## Response 400:

  - `400` (unknown)
    Invalid input (e.g. more than one language, unknown image_size, or a malformed updated_since timestamp).

## Response 400 fields (application/json):

  - `errors` (array)
    List of errors that occurred during request processing.

  - `errors.id` (string)
    Machine-readable error identifier.
    Example: invalid_parameter

  - `errors.name` (string)
    Human-readable error name.
    Example: Invalid Value

  - `errors.message` (string)
    Detailed error message explaining what went wrong.
    Example: The request contains an invalid parameter.

  - `request_id` (string)
    Unique identifier for this request, useful for debugging and support.
    Example: req_abc123xyz

  - `account_id` (string)
    Account ID that triggered request, useful for debugging and support.
    Example: 1234654

## Response 400 examples:

  - `Multiple languages` (unknown)
    Multiple languages

