# Changelog archive

**Find here a comprehensive history of all updates, improvements, and bug fixes across versions.**

Each entry provides a detailed log of changes made to Demand API, including new features, enhancements, and any resolved issues, divided by endpoints and/ or travel services.

This archive serves as a valuable resource for understanding the evolution of the product over time and tracking its progress.

# 2025 Changelogs

details
summary
December 2025
# December 2025

This release brings new features and improvements across different API collections:

div
ul
li
strong
Accommodations:
Bundles and value-added services available in v3.2.
li
strong
Car rentals:
Drop-off dates no longer limited to 500 days, allowing full 180-day rentals.
li
strong
Attractions:
code
urls
block now includes both app and web links to details and search results.
li
strong
Orders:
Room-level modifications supported for online payments; new 
code
orders/details/cars/faqs
endpoint (v3.2 Beta) provides car rental FAQs in requested languages.
    
## Accommodations

**|** v3.2**|**
**|** **Bundles and value added services** **|**

> Bundles and value added services are now available in [accommodation endpoints](/demand/docs/open-api/3.2/demand-api/accommodations), as well as in [orders/details](/demand/docs/open-api/3.2/demand-api/orders/orders/details) and [orders/preview](/demand/docs/open-api/3.2/demand-api/orders/orders/preview).


Example of accommodations/details response with value added services:

```json
{
  "request_id": "01kcrwnk8b1kv5syq2mbjfjy3n",
  "data": [
    {
      "id": 13766008,
      "name": {
        "en-gb": "Beach Apartment",
        "es": "Beach Apartment"
      },
      "accommodation_type": 201,
      "booker_address_required": false,
      "brands": [],
      "bundles": [
        {
          "id": 843543,
          "value_adds": [
            {
              "description": {
                "es": [
                  "Parking para un vehículo por unidad reservada y estancia."
                ],
                "en-gb": [
                  "Self parking for one vehicle per booked unit per stay."
                ]
              },
              "type": "parking"
            },
            {
              "description": {
                "es": [
                  "Internet de alta velocidad durante toda la estancia."
                ],
                "en-gb": [
                  "High-speed internet throughout your stay."
                ]
              },
              "type": "high_speed_internet"
            }
          ]
        }
      ],
```

See all details in the [bundles guide](/demand/docs/accommodations/bundles/about-bundles).

## Car rentals

**|** v3.2 **|**
v3.1

**|** **Drop-off date extension** **|**

> * Drop-off dates are no longer limited to a fixed number of days from the current date, allowing full 180-day rental durations from the maximum allowed pickup date.



Existing validation rules (e.g., pickup and drop-off dates must be in the future and not identical) continue to apply.

## Orders

**|** v3.2 **|**
v3.1

**|** **Room-level modifications for online payments** **|**

> * [orders/modify](/demand/docs/open-api/3.2/demand-api/orders/orders/modify) now supports room-level modifications (name, guest quantity and preferences) for reservations paid online.



**|** 3.2 Beta **|** New **|**  **orders/details/cars/faqs** **|**

> * A new endpoint [orders/details/cars/faqs](/demand/docs/open-api/3.2-beta/demand-api/orders/cars/faqs) provides car rental FAQs in the requested languages.
* It returns common questions and answers that travellers may have about their car reservation.



We recommend partners use this endpoint to display Q&A to travellers on post-booking pages.

Example response for `en`, `fr`, `de` and `es` languages:

```json
{
  "request_id": "123456789",
  "data": {
    "faqs": [
      {
        "question": {
          "en-gb": "What if I haven’t received my booking confirmation?",
          "fr": "Que dois-je faire si je n'ai pas reçu ma confirmation de réservation ?",
          "de": "Was ist, wenn ich meine Buchungsbestätigung nicht erhalten habe?",
          "es": "¿Qué hago si no he recibido la confirmación de mi reserva?"
        },
        "answers": {
          "en-gb": [
            "Most bookings are confirmed straight away, so please check your spam folder if there’s nothing in your inbox.",
            "You can always check the status of your booking online:",
            "If you’re using the app, tap ‘Bookings’ at the bottom of the screen.",
            "If you’re using the website, make sure you’re signed in and on the ‘Car rentals’ page - then hit ‘Manage booking’ at the top.",
            "If you find that your booking isn’t confirmed yet, we’re working on it and we’ll email you as soon as it is."
          ],
          "fr": [
            "La plupart des réservations sont immédiatement confirmées. Si vous n'avez pas reçu d'e-mail, veuillez vérifier vos spams.",
            "Vous pouvez également consulter le statut de votre réservation en ligne.",
            "Sur l'application, appuyez sur « Réservations » en bas de l'écran.",
            "Sur le site Internet, connectez-vous à votre compte et rendez-vous sur la page « Voitures de location »."
          ],
          "de": [
            "Die meisten Buchungen werden sofort bestätigt. Bitte überprüfen Sie Ihren Spam-Ordner.",
            "Sie können den Status Ihrer Buchung jederzeit online einsehen."
          ],
          "es": [
            "La mayoría de las reservas se confirman al momento. Revisa la carpeta de spam si no ves el correo.",
            "Puedes consultar el estado de tu reserva online en cualquier momento."
          ]
        }
      }
    ]
  }
}
```

## Attractions

**|** 3.2 Beta **|**  **URLs block refinement** **|**

> The `urls` block returned in [attractions/details](/demand/docs/open-api/3.2-beta/demand-api/attractions/attractions/details), [attractions/search](/demand/docs/open-api/3.2-beta/demand-api/attractions) responses, now includes both app and web links to the attraction details page and search results.


Example of attractions/search response with urls:

```json
{
  "data": [
    {
      "id": "PRahAzWtTraa",
      "free_cancellation": true,
      "price": {
        "currency": "EUR",
        "total": 20
      },
      "urls": {
        "app": {
          "detail": "booking://attractions/product?slug=prahazwttraa-heineken-experience-amsterdam&aid=956509",
          "search_results": "booking://attractions/searchresults?ufi=-2140479&pinned_product_id=PRahAzWtTraa&aid=956509"
        },
        "web": {
          "detail": "https://www.booking.com/attractions/nl/prahazwttraa-heineken-experience-amsterdam.en-gb.html?selected_currency=EUR&aid=956509",
          "search_results": "https://www.booking.com/attractions/searchresults/nl/amsterdam.en-gb.html?pinned_product=PRahAzWtTraa&aid=956509"
        }
      }
    },
```

</details>

<details>
<summary>November 2025 - 🎉 Demand API version 3.2 is live!</summary>

# November 2025

🎉 **Demand API version 3.2 is live!**
> * Demand API v3.2 introduces a major improvement across travel services API collections, focusing on consistency, simplified flows, and clearer data structures.
> * This release includes breaking changes and new features across Accommodations, Orders, Cars, Messaging and Attractions.

## Key highlights

- **Unified structures** such as harmonised price and charge breakdowns, consistent identifier types, new metadata objects, and aligned URL formats.
- **Simplified booking flows**, including merged availability endpoints for accommodations and new Cars endpoints supporting a full search–book journey (in Beta).
- **Improved clarity and transparency** with new property status values, updated payment timings, and more explicit inventory structures.
- **New functionality**, including support for “Cancel accommodation orders for less” in v3.2 and in Beta: expanded Attractions endpoints and message acknowledgement in the Messaging API.
- **Breaking changes** across multiple endpoints requiring integration updates.


See [Migration guide](/demand/docs/migration-guide/v3.2/changes) for details.

## Across endpoints

**|** v3.2 **|** New **|** Breaking changes **|**

**Consistent identifier types: room id and reservation id are now strings**

> * `products.room` ID string to support unmapped rooms.
* `reservation` ID string for consistency with other travel services.



**Harmonised price breakdown**

> * Aligned `excluded` and `included` charges across endpoints.
* `book` price renamed to `display` price.
* `commission` and `price` transformed into objects now including multi-currency (`booker.currency` and `product.currency`).



**Metadata object**

> * Paginated endpoints now include `next_page` token and `total_results` under a "Metadata" object.
* **Purpose:** More organised metadata information in line to cars and attractions responses.



## Accommodation

**|** v3.2 **|** New **|** Breaking changes **|**

details
summary
/accommodations/availability
| v3.2 | New | Merged endpoints |

> * accommodations/availability and /bulk-availability endpoints are now consolidated in [accommodations/availability](/demand/docs/open-api/3.2/demand-api/accommodations/accommodations/availability).
* Purpose: Simplify integration and reduce redundancy in availability requests.



details
summary
/accommodations/details
| v3.2 | New |

**Cancel for less support**

> New field: `include extras.refuses_free_cancellation_requests` to support the "Cancel for less" functionality.
[See guide for details](/demand/docs/orders-api/3.2/cancel-for-less).


**URL object**

> * `web` and `app` URLs now nested under `url` object instead of `deep_link_url`.
* **Purpose:** Alignment with Cars API and improved consistency.



**Property status expansion**

> * Added the following new property status values:
  * `temporarily_closed`
  * `permanently_closed`
  * `fraud` - Accommodations closed due to confirmed fraudulent activity.
* **Purpose:** More transparency on property status.



| v3.2 | Breaking |

**cribs_and_extra_beds removed**

> Use `cots_and_extra_beds` instead.
**Purpose:** Standardise bed/crib handling.


**is_work_friendly removed**

> `is_work_friendly` and `work_friendly_home` replaced by `work_friendly`.
**Purpose:** Standardise terminology.


**third_party_inventory removed**

> Replaced by new `inventory` object. (See [TPI guides](/demand/docs/accommodations/tpi/about-tpi) for more details)


## Orders

**|** v3.2 **|** New **|** Breaking changes **|**

**Deprecated fields removed**

> * `cavv` and `credit_slip` removed - use `credit_slip_number` instead.
* `commission.actual_amount` removed - use `commission.actual_commission_amount` instead.



Update billing/commission calculations to use `actual_commission_amount`:

* `product_currency` for product-level accounting.
* `booker_currency` for user-facing reporting.


**Retrieve Attractions**

> [/orders/details](/demand/docs/open-api/3.2/demand-api/orders/orders/details) now also retrieves Attractions bookings alongside Accommodations and Cars, mainly for reporting tasks.


Learn more [about Attractions here](/demand/docs/attractions/about-attractions).

## Cars

**|** 3.2 Beta  **|** New **|** Breaking changes **|**

**New endpoints**

> Some new endpoints have been added to support the Search, look and book flow for cars in Beta:


| Endpoint | Use it to ... | Response |
|  --- | --- | --- |
| [/cars/availability](/demand/docs/open-api/3.2-beta/demand-api/cars/availability) | To retrieve real-time availability details for a specific car rental offer. | The response includes information about pricing, payment options, policies (such as cancellation, mileage, and fuel), and available extras. |
| [/cars/terms-and-conditions](/demand/docs/open-api/3.2-beta/demand-api/cars/terms-and-conditions) | To retrieve the terms and conditions for a specific car rental offer during the pre-booking process. | The response includes structured, localised content in the requested language, covering key policies such as driver requirements, mileage, deposits, and damage excess. |
| [/orders/cars/terms-and-conditions](/demand/docs/open-api/3.2-beta/demand-api/orders/cars-terms-and-conditions) | To retrieve the terms and conditions for a specific car rental order after booking. | The response includes the car rental contract details, including chapters, sections, clauses, and clause options. |


**Depot fields updated**

> /cars/depots deskAt removed - use `depot_location_type` instead.


**Payment timings renamed**

> payment timings renamed for consistency with accommodation timings: `pay_online_now`, `pay_partial_online_now`, `pay_at_pickup`.


**offer and search_token**

> /cars/search now returns fleetCarId and carId in an `offer` and `search_token` needed for the car rental booking (using orders/preview and orders/create)


See [Search, look and book tutorial](/demand/docs/cars/3.2/cars-tutorial) for cars.

## Messaging API

**|** 3.2 Beta **|** New **|**

The major change added to Messaging API collection is:

> * New `confirmedMessages` field returned in [/messages/latest/confirmed](/demand/docs/open-api/3.2-beta/demand-api/messages/confirm) response.
* **Purpose:** Acknowledge of reception.



## Attractions

**|** 3.2 Beta **|** New **|**

**New endpoints available**

> Attractions endpoints are now available in Beta, enabling search, availability, and booking of attractions through the Demand API.


[Check them out!](/demand/docs/open-api/3.2-beta/demand-api/attractions)

details
summary
October 2025
# October 2025

div
strong
Highlights
p
This release introduces new fields and charge modes to improve clarity in pricing and key collection instructions, while supporting local taxation requirements.
New Added new `chargeable_online` field under `price` and `extra_charges` to indicate which amounts are collected online versus at the property.

New Introduced two new charge modes: `per_day` and `per_person_per_day` to support per-day taxation requirements (e.g., German city taxes) in [/accommodations/search](/demand/docs/open-api/demand-api/accommodations/accommodations/search), [/accommodations/availability](/demand/docs/open-api/demand-api/accommodations/accommodations/availability) and [/accommodations/bulk-availability](/demand/docs/open-api/demand-api/accommodations/accommodations/bulk-availability).

New Added `additional_instructions` field in `key_collection_information` to provide free-text guidance for key collection or check-in procedures.

## Accommodations

### /accommodations/availability and /bulk-availability

**|** v3.1 **|** New **| chargeable_online  |**

> Added the `chargeable_online` field to indicate the portion of the price or charge that will be collected online by Booking.com, rather than at the property.
* This field is only relevant when the payment timing is online - For `pay_at_the_property` products, this field will return null.
* You can find it in the `price` object and in the `extra_charges` breakdown.



**Example:**

```json
{
  "data": [
    {
      "id": "12345",
      "price": {
        "base": 180.00,
        "book": 198.00,
        "chargeable_online": 150.00,
        "extra_charges": {
          "excluded": [
            {
              "charge": 2,
              "mode": "per_stay",
              "total_amount": 5.00,
              "chargeable_online": false
            }
          ],
          "included": [
            {
              "charge": 1,
              "mode": "percentage",
              "percentage": 10.00,
              "total_amount": 18.00,
              "chargeable_online": true
            }
          ]
        },
        "total": 203.00
      }
    }
  ]
}
```

**Explanation:**

* `price.chargeable_online` - The total amount (150.00) that will be collected online by Booking.com.
* `extra_charges.included[].chargeable_online` - Indicates that VAT (charge ID 1) is included in the total price and collected online.
* `extra_charges.excluded[].chargeable_online` - Indicates that the city tax (charge ID 2) is excluded from the online charge and must be paid at the property.
* `price.total` - Reflects the full cost including all charges (203.00).


## Charges mode

**|** v3.1 **|** New **| Charge modes: per_day and per_person_per_day  |**

> Two new charge calculation modes have been added to the `mode` enumeration under `extra_charges`:
* `per_day`
* `per_person_per_day`

These modes indicate that a charge is calculated per calendar day of the stay, optionally multiplied by the number of guests.


**Purpose:**
This change introduces support for legal pricing requirements in specific markets (for example, German city taxes), where charges must be calculated per person per day rather than per night or per stay.

**Example:**

```json
{
  "data": {
    "id": 10004,
    "currency": "EUR",
    "products": [
      {
        "id": "1000420_358188572_2_0_0",
        "price": {
          "base": 1189.63,
          "book": 1385.97,
          "chargeable_online": 1385.97,
          "extra_charges": {
            "included": [
              {
                "charge": 21,
                "chargeable_online": true,
                "mode": "percentage",
                "percentage": 9,
                "total_amount": 107.07
              },
              {
                "charge": 22,
                "chargeable_online": false,
                "mode": "percentage",
                "percentage": 7,
                "total_amount": 83.27
              },
              {
                "charge": 142,
                "chargeable_online": true,
                "mode": "per_person_per_day",
                "total_amount": 6.00,
                "unit_amount": 3.00
              }
            ]
          },
          "total": 1385.97
        }
      }
    ]
  }
}
```

**Explanation:**

* `mode: "per_person_per_day"` — The city tax (charge ID 142) is calculated per guest per day. For example: €3 × 2 guests × 1 day = €6.
* `mode: "percentage"` — Other charges are based on a percentage of the base price. (e.g., charge ID 21 at 9%).
* `chargeable_online` — Indicates whether each charge is collected online (true) or paid at the property (false).
* `price.chargeable_online` – The total amount collected online by Booking.com (1385.97 EUR).
* `price.total` – The full cost including all charges, whether online or offline.


These are backward-compatible changes. Existing integrations will continue to function without modification.

## Orders/details/accommodation

**|** v3.1 **|** New **|** `additional_instructions` in `key_collection_information` **|**

> A new free-text field has been added to `key_collection_information` called `additional_instructions`.
* This field provides extra context or details about the key collection or check-in process, such as access codes, entry procedures, or contact information.
* It replaces the `other_text` field that was used in v2.



**Purpose:**
This change improves clarity and consistency in key collection instructions, especially for non-hotel accommodations where the check-in process may not be managed at a 24-hour front desk.

**Example:**

```json
      "key_collection_information": [
        {
          "additional_instructions": "The keys are in a keybox located next to the front door.",
          "alternate_location": {
            "address": "abc",
            "city": "bdweb",
            "postal_code": "1015XX"
          },
          "checkin_method": "someone_will_meet",
          "key_location": "key_location_at_the_property"
        }
```

## Cars

### /cars/search

**|** v3.1**|** Updated **| Car categories aligned to Booking.com website |**

> The `car_categories` filter now matches the categories available on the Booking.com website. This simplifies selection when searching for car rentals, and ensures consistency between the API and the web experience.


**Available categories:**

- `small` — Compact cars ideal for city driving and short distances.
- `medium` — Mid-sized vehicles balancing comfort and fuel efficiency.
- `large` — Spacious vehicles offering comfort for longer trips.
- `suvs` — Sport Utility Vehicles with higher ground clearance and versatility.
- `carriers` — Vans or minivans designed for carrying larger groups or luggage.
- `premium` — High-end or luxury vehicles with premium features.
- `estate` — Station wagons offering extra luggage space.


details
summary
September 2025
# September 2025

div
strong
Highlights
✓ New `free_stay` in /accommodations/availability and accommodations/bulk-availability.

✓ Added support for `reservations` in /orders/details (cars, flights, accommodations) and /orders/details/flights.

## Accommodation

### /accommodation/availability and /accommodation/bulk-availability

**| New | free_stay  | /accommodations/availability and /accommodation/bulk-availability | version 3.1 |**

> A new boolean field, `free_stay` has been added to the `maximum_occupancy.children` object.
* The `free_stay` field indicates whether children in a given age range can stay free of charge.
  * `true` - the child’s stay is free.
  * `false`- the cost is already included in the total price returned by the API.

This addition improves transparency by clearly signalling when a property allows children to stay free of charge.


## Orders

### /orders/details

**| New | reservations array  | /orders/details| version 3.1 |**

> You can now include a list of `reservations` either for cars, flights or accommodations, in the orders/details request.
This provides more accurate details for the specified reservations, regardless of the travel service.


**Example request:**

```json
{
  "currency": "EUR",
  "reservations": ["728284398", "624244164"],
  "services": ["cars", "flights", "accommodations"]
}
```

### /orders/details/flights

**| New | reservations  | /orders/details/flights| version 3.1 |**

> You can now include the `reservation` number in the orders/details/flights request.
* This ensures accurate flight details are returned for that specific reservation.
* The functionality is aligned with cars and accommodations, where either an order ID or a reservation ID can be used.



**Example request:**

```json
{
 "currency": "USD",
  "reservations": [644906724]
}
```

**Response:**

```json
{
    "request_id": "01k5xcs2sxjhn1ygksrv2cwm6m",
    "data": [
        {
            "id": "5024302678176842",
            "commission": {
                "actual_amount": {
                    "booker_currency": 2.49,
                    "order_currency": 2.00
                },
                "actual_percentage": 0.57,
                "estimated_amount": {
                    "booker_currency": 2.49,
                    "order_currency": 2.00
                }
            },
            "currency": {
                "booker": "USD",
                "order": "EUR"
            },
            "itineraries": [
                {
                    "departure": {
                        "airport": "SEN",
                        "date_time": "2025-09-12T13:00:00+00:00"
                    },
                    "arrival": {
                        "airport": "NQY",
                        "date_time": "2025-09-12T14:30:00+00:00"
                    }
                },
                {
                    "departure": {
                        "airport": "NQY",
                        "date_time": "2025-09-14T15:00:00+00:00"
                    },
                    "arrival": {
                        "airport": "LGW",
                        "date_time": "2025-09-14T16:20:00+00:00"
                    }
                }
            ],
            "label": "flights-booking-unknown",
            "price": {
                "booker_currency": 434.51,
                "order_currency": 413.86
            },
            "status": "booked",
            "reservation": 644906724 // Reservation id
        }
    ]
}
```

## Bug fixes

| Endpoint | Solution |
|  --- | --- |
| /orders/create | A bug that was causing failure in reserving accommodations located in Oman, Bahrain and other countries with `pay_online_later` has been fixed. |
| /orders/cancel | A bug that was preventing cancelling accommodation reservations shortly before midnight on the day of checkin has been fixed. |


details
summary
August 2025
# August 2025

div
strong
Highlights
✓ New `long_stay_friendly_home` and `work_friendly_home` tags in /accommodations/details to help partners filter "Home properties" for long stays or remote work needs.

✓ New `credit_slip_number` field in /orders/details/accommodations (replacing the deprecated `credit_slip`).

✓ New `depot_location_type` filter in /search and /cars/depots for clearer, location-based pick-up options.

## Accommodation

### accommodation/details

**| New | long_stay_friendly_home  | /accommodations/details| version 3.1 | homes |**

> A new boolean field, `long_stay_friendly_home` has been added to the [accommodations/details endpoint](/demand/docs/open-api/demand-api/accommodations/accommodations/details) response.
* Indicates if a "Home accommodation" is suitable for long stays (for example, it may include its own kitchen facility -ID 45-)



**| Replacement | work_friendly_home | /accommodations/details| version 3.1 | homes |**

> The `work_friendly_home` boolean field replaces the deprecated `is_work_friendly` tag in the [accommodations/details endpoint](/demand/docs/open-api/demand-api/accommodations/accommodations/details) response.
* Indicates whether the "Home accommodation" supports work-friendly conditions, such as a desk and chair, reliable Wi-Fi, or a co-working area.



Deprecation notice
The `is_work_friendly` field is deprecated and will be removed in v3.2

> ![genius-bulb](/assets/genius-bulb.3e13976eeeabd0526f1d76bfb7de5967932211a5ef4afe526a3b0a71a7b02fb0.5e2a7131.png) **What is a Home accommodation?** A more personal—and often less standardised—alternative to traditional hotels, including: apartments, vacation rentals, B&Bs, farm stays, bungalows, etc.


## Car rentals

### cars/search and cars/depots

**| New | depot_location_type  | cars/search and cars/depots | version 3.1**

> A new filter, `depot_location_type`, is now available in [/search requests](/demand/docs/open-api/demand-api/cars/search) and [cars/depots](/demand/docs/open-api/demand-api/cars/depots) response.
* Use `filters.depot_location_type` to search for depots based on location type.
* This allows you to provide travellers with clear information about pick-up points (e.g. in_terminal, downtown, train_station).
* This field is optional and may be null if the location type is not defined.



**Example - Search request with depot_location_type filter:**

```json
{
  "booker": {
    "country": "nl"
  },
  "filters": {"depot_location_type": "downtown"},
  "currency": "EUR",
  "driver": {
    "age": 35
  },
  "route": {
    "dropoff": {
      "datetime": "2025-09-19T11:05",
      "location": {
        "airport": "AMS"
      }
    },
    "pickup": {
      "datetime": "2025-09-17T11:05",
      "location": {
        "airport": "AMS"
      }
    }
  }
}
```

These enhancements are backward-compatible. Partners not using the new parameters or fields can continue to integrate as before.

## Orders

### Orders/details/accommodations

**| New | credit_slip_number  | /orders/details/accommodations | version 3.1**

> A new field, `credit_slip_number` has been added to the to the [orders/details/accommodations endpoint](/demand/docs/open-api/demand-api/orders/orders/details/accommodations) responses.
* Previously, the response included `credit_slip` (an integer used only for internal purposes).
* The new ` credit_slip_number` field is a string containing the actual credit slip number relevant for partners.



Deprecation notice
The `Credit_slip` field is deprecated and will be removed in v3.2

details
summary
July 2025
# July 2025

div
✓ We’ve released several enhancements to improve performance, clarity, and usability for car rental search results.

### Car rentals

#### Increased maximum page size

**| Update | maximum_results=500  | cars/search endpoint | version 3.1**

> We have increased the maximum allowable page size for the [/search endpoint](/demand/docs/open-api/demand-api/cars/search) **from 100 to 500 results per page**.
Partners can now request up to 500 results in a single page using the `maximum_results` parameter (e.g., `maximum_results=500`).


* Requests exceeding 500 will return an appropriate [4xx error](/demand/docs/support/error-handling/http-4xx-scenarios).
* Pagination metadata (e.g., `next_page`) works as expected with larger page sizes.
* If fewer than 500 results are available, all results are returned in a single page.


Benefits
Reduced client-side timeouts, fewer API requests, and more efficient data aggregation.

This change does not impact partners who continue to use smaller page sizes.

#### New response field – search token in /search

**| New | search_token  | cars/search endpoint | version 3.1**

> We have introduced a new field, `search_token`, to the [/search response](/demand/docs/open-api/demand-api/cars/search).


* When supplied, the API will use the stored search context associated with the token, reducing the need to resend the entire search payload (such as route, filters, or booker country).


**How to use it:**

* The first search request includes a `search_token` value in the response.
* Include the `search_token` in subsequent requests to cars/availability and orders/preview endpoints (from v3.2) instead of resending the full search criteria.


Note: This field is only useful for Demand API v3.2

#### New response field – insurance package in /search

**| New | insurance_package  | cars/search endpoint | version 3.1**

> We have added a new field, `insurance_package`, to the /search responses.
This field indicates the level of insurance included by the supplier with each car rental product (different from optional insurance extras).


* `basic`: Standard supplier insurance (may involve higher excess).
* `inclusive`: Enhanced insurance coverage included.
* `zero_excess`: Full coverage with no excess liability.


Benefits
Enables partners to show clear, upfront insurance details to customers.

These enhancements are backward-compatible. Partners not using the new parameters or fields can continue to integrate as before.

details
summary
June 2025
# June 2025

div
strong
This month's highlights:
br
br
✓ Car rental deals - Car deals are now included in cars/search results. 

br
br
✓ Third-party inventory (TPI) reporting - TPI products now appear in orders/details and orders/details/accommodationsresponses for post-booking reporting. 

br
br
✓ Cancellation original_total_price - This new field indicates the total amount that would have been charged if the booking had not been cancelled. 

### Orders

#### Post-booking reporting for Third-party inventory properties (TPI) properties

**| New | inventory_type object | orders/details and orders/details/accommodations endpoints |**

> The `inventory_type` object has been added to the [orders/details](/demand/docs/open-api/demand-api/orders) and [orders/details/accommodations](/demand/docs/open-api/demand-api/orders/orders/details/accommodations) responses.
What this means:
* Indicates whether the property is part of third-party inventory (TPI).
* Specifies the applied rate type (e.g. sell or net).
* Enables unified reporting for both Booking.com-sourced and TPI rates.



Example of orders/details response:

```json
      "third_party_inventory": true,
      "inventory": {
        "third_party": true,
        "type": "sell"
      }
```

Find more details, see the [Third-party inventory quick guide](/demand/docs/accommodations/tpi/about-tpi).

#### New original_total_price field under cancellation_details

**| New | original_total_price field | orders/details/accommodations endpoint |**

> A new field called original_total_price has been added under the `cancellation_details` object in the [orders/details/accommodations](/demand/docs/open-api/demand-api/orders/orders/details/accommodations) response.
What this means:
* This represents the total amount that would have been charged if the booking had not been cancelled. Includes all charges, taxes, and mandatory fees.
* It reflects the final payable amount at the time of booking, before any refunds or cancellations.
* Helps partners better understand refund calculations in context of original booking value.
Example:



```json
"cancellation_details": {
  "at": "2025-06-15T10:42:00Z",
  "fee": {
    "accommodation_currency": 50.00,
    "booker_currency": 53.75
  },
  "original_total_price": {
    "accommodation_currency": 250.00,
    "booker_currency": 268.75
  }
}
```

For full details, refer to the description provided in the [Pricing breakdown guide](/demand/docs/accommodations/prices-accommodations).

### Car rentals

#### Car rental deals in search results

**| New | deal object | cars/search endpoint |**

> The `deal` object is now included in the response for the [cars/search endpoint](/demand/docs/open-api/demand-api/cars/search):
What this means:
* Provides details of deals applied to car rental products.
* Includes discount percentage, price before discount, and deal tags (e.g. black_friday, mobile_rate).



Example of cars/search response:

```json
{
  "deal": {
    "discount_percentage": 15,
    "public_price": 1069.93,
    "tags": [
      "genius"
    ]
  }
}
```

Learn more in the [Car deals dedicated guide](https://developers.booking.com/demand/docs/cars/cars-discounts).

### Bug fixes

| Bug fixes | Title | Issue | Solution |
|  --- | --- | --- | --- |
| ✓ | Reservation modifications. | In some cases, reservations could not be modified due to missing data at the time of booking. | This has been resolved. New reservations can now be modified without issues. |
| ✓ | Payment instructions for Japanese hotels. | Payment instructions are not supported for many Japanese hotels due to a high rejection rate. However, some hotels incorrectly displayed a list of virtual cards in accommodations/details. | This has been corrected. The list now appears empty to clearly indicate that payment instructions are not possible. |
| ✓ | Missing details in `important_information` field (accommodations/details). | The important_information field in accommodations/details was missing certain content. | This has now been fixed. The field is aligned with the property's configuration in the extranet and accurately reflects all key guest-facing details. |


details
summary
May 2025
# May 2025

This month, we focused on:

> ✅ Messaging API – New endpoints enabling two-way post-booking communication between accommodation hosts and guests (available to pilot partners only).
✅ TPI Net rates – Soft launch of net rates support for third-party inventory (TPI) accommodation.


### Messaging API

🎉 **New API collection launched on pilot programme!**

**| Addition | Messaging API collection | new endpoints | Available to pilot partners |**

> We’ve introduced a full Messaging API collection that supports two-way post-booking communication between guests and accommodation hosts.


| **Endpoint** | **Use it to ...** |
|  --- | --- |
| [/messages/send](/demand/docs/open-api/demand-api/messages/sendmessage) | Send a message to start or continue a conversation. |
| [/messages/latest](/demand/docs/open-api/demand-api/messages/fetchlatestmessages) | Retrieve up to the 100 most recent messages. |
| [/messages/latest/confirm](/demand/docs/open-api/demand-api/messages/confirmmessagereceipt) | Confirm receipt of messages from /messages/latest. |
| [/messages/conversations](/demand/docs/open-api/demand-api/conversations/retrieve-conversation) | Fetch the full message history (up to 1 year after checkout). |
| [/messages/attachments/upload](/demand/docs/open-api/demand-api/attachments/uploadattachment) | Upload an image file (up to 1 MB) to a conversation. |
| [/messages/attachments/metadata](/demand/docs/open-api/demand-api/attachments/getattachmentmetadata) | Retrieve metadata for an uploaded attachment (e.g. name, size, type). |
| [/messages/attachments/download](/demand/docs/open-api/demand-api/attachments/downloadmessageattachment) | Download an attachment using its ID and conversation context. |


References
* View the [Messaging API reference](/demand/docs/open-api/demand-api/messages).
* Read the [Messaging guidelines](/demand/docs/messaging/about-messaging).


### Third-party inventory properties (TPI)

**| Addition | Net rates | New TPI rates | Available to pilot partners**

> In addition to Sell rates, the Demand API now supports Net rates for third-party inventory properties.
These rates can be identified in search and availability responses by checking the `inventory_type` field.
* It indicates the applied rate (e.g., "sell" or "net").



Example of accommodations/search response:

```json
      "third_party_inventory": true,
      "inventory": {
        "third_party": true,
        "type": "net"
      }
```

Learn more in the [Third-party inventory section](/demand/docs/accommodations/tpi/about-tpi).

details
summary
April 2025
# April 2025

This month, we focused on:

✅ **Orders modifications** -  Continued progress has been made in expanding the available modification options for pay at the property accommodation orders.

✅ **Car rentals** - Introduced new search filters, extended policy information in car rental responses and a new [constants endpoint](/demand/docs/open-api/demand-api/cars/constants)!.

### Orders

#### /orders/modify

**| Addition | orders/modify | Room details modifications | Available to all partners |**

> You can now modify additional room-level details using [orders/modify endpoint](/demand/docs/open-api/demand-api/orders/orders/modify) for accommodation orders made on Pay at the property properties. This includes:
* Guest allocation (e.g. number of adults).
* Guest names.
* Smoking preference.



Please note, this feature is only available for accommodations that offer "Pay at the property" options and does not apply to bookings with online payment.

Example request – Modify room details:

```json
{
  "order": 5000375899,
  "modification": {
    "accommodation": {
      "reservation": 5000375899,
      "type": "room",
      "change": {
        "room_reservation": 5448643068,
        "allocation": {
          "number_of_adults": 2
        },
        "guests": [
          {
            "name": "Test Test"
          },
          {
            "name": "Test2 Test"
          }
        ],
        "smoking_preference": "smoking"
      }
    }
  }
}
```

For additional examples and usage guidance, see the [orders/modify dedicated guide](/demand/docs/orders-api/order-modify).

### Car rentals

#### cars/constants

🆕 New endpoint!

**| Addition | cars/constants | new endpoint | Available to all partners |**

We've introduced the [cars/constants endpoint](/demand/docs/open-api/demand-api/cars/constants) to help you fetch translatable constant values used across the Cars API.

- Use this endpoint to retrieve internal codes and their corresponding names in one or more languages.
- It supports filtering by constant type and enables multi-language output using IETF language tags.


#### cars/search

🆕 New filters added

**| Addition | cars/search | Extended car search filters | Available to pilot partners**

> Pilot partners can now refine [car rental searches](/demand/docs/open-api/demand-api/cars/search) using the following filters:
These are the filters added:
* `air_conditioning`
* `car_categories`
* `depot_location_type`
* `mileage_type`
* `number_of_seats`
* `supplier_ids`
* `transmission_type`



Example request - Using `depot_location_type` filter

```json
{
  "booker": {
    "country": "nl"
  },
  "currency": "EUR",
  "driver": {
    "age": 36
  },
  "route": {
    "dropoff": {
      "datetime": "2025-11-10T11:05:00",
      "location": {
        "city": -2140479
      }
    },
    "pickup": {
      "datetime": "2025-11-05T11:05:00",
      "location": {
        "city": -2140479
      }
    }
  },
  "filters": {
    "depot_location_type": "in_terminal"
  }
}
```

For a complete list of filters and usage details, refer to the Car filters guide.

🆕 Additional policy fields

**| Addition | cars/search | New policies | Available to car rentals pilot partners**

> Car rental search responses now include extra policy fields to provide more transparency on potential charges:
These are the new policies added:
* `damage_excess`: Maximum amount chargeable for car damage during rental.
* `deposit`: The amount that will be temporarily pre-authorised or blocked on the traveller’s credit card at the rental location as a security deposit, to cover potential damage or extra charges.
* `theft_excess`: The maximum amount a traveller may be charged in the event of car theft during the rental period.



Example response – Including new policies:

```json
{
  "request_id": "01h00fr9y7qkbxtc6kyv97j49z",
  "data": [
    {
      "car": 122655,
      "policies": {
        "cancellation": {
          "type": "free_cancellation",
          "details": {
            "context": "before_pickup",
            "duration": "P7D"
          }
        },
        "damage_excess": 3000,
        "deposit": 1500,
        "fuel": "return_same",
        "mileage": {
          "distance": 200,
          "distance_unit": "kilometers",
          "fee": 12.54,
          "type": "limited"
        },
        "payment": {
          "timing": "pay_now"
        },
        "theft_excess": 3000
      },
      "price": {...
      },
      "route": {
        "dropoff": {
          "depot": 112314
        },
        "pickup": {
          "depot": 112314
        }
      },
      "supplier": 7455,
      "url": {
        "app": "booking://page",
        "web": "https://example.com"
      }
    }
  ],
  "metadata": {
    "next_page": "eyJhbGciOiJIUzI1NiJ9.eyJwIjp7Im1heGltdW1fcmVzdWx0cyI6MTAsIm9mZnNldCI6MTB9LCJhdWQiOiJDQVJTX1NVUFBMSUVSUyIsImV4cCI6MTY4MzY0NzMwNX0.y7NmH48mm7lImd2WxsHdotj6n-dVQAzJCGCnIJCKy3A",
    "total_results": 122
  }
}
```

details
summary
March 2025
# March 2025

This month, we've focused on improving the orders and accommodation features in Demand API v3.1.
These are some of the key highlights:

### Orders

#### /orders/modify

**| Addition | New endpoint | Available to all partners |**

> We have introduced a new [orders/modify endpoint](/demand/docs/open-api/demand-api/orders/orders/modify), enabling you to modify certain details of an existing accommodation order.
The initial functionality supports modifications in the following areas:
* Payment card details.
* Checkin and checkout dates.



Please note, this feature is only available for accommodations that offer "Pay at the property" options and does not apply to bookings with online payment.

Example for modifying payment card details:

```json
{
  "order": "4334069995",
  "modification": {
    "payment": {
      "type": "card",
      "change": {
        "number": "4111111111111111",
        "cvc": "737",
        "cardholder": "Jon Snow",
        "expiry_date": "2030-03"
      }
    }
  }
}
```

For further examples and instructions, refer to the [orders/modify dedicated guide](/demand/docs/orders-api/order-modify).

#### /orders/details/accommodations

**| Addition | key collection information | Available to all partners |**

> * The key `key_collection_information` field has been included into the [orders/details/accommodation](/demand/docs/open-api/demand-api/orders/orders/details/accommodations) endpoint.
  * This field refers to the details on how the property keys for check-in purposes can be collected by the guests.



Example for an alternate location key collection:

```json
{
  "key_collection_information": {
    "alternate_location": {
      "address": "jkfbnfk 8",
      "city": "jfwbwfw",
      "postal_code": "12345"
    },
    "checkin_method": "other",
    "key_location": "key_location_at_the_property"
  }
}
```

### Accommodation

#### accommodations/search

**| Addition | inventory_type |  Third-party inventory properties (TPI) |**

> The `inventory_type` object is now included in the response for the [accommodations/search](/demand/docs/open-api/demand-api/accommodations/accommodations/search).
* This object indicates whether the property is part of a third-party inventory and specifies the rate applied (e.g., "sell" rate).



Example of accommodations/search response:

```json
      "third_party_inventory": true,
      "inventory": {
        "third_party": true,
        "type": "sell"
      }
```

Find more details in the [Third-party inventory quick guide](/demand/docs/accommodations/tpi/about-tpi).

### Bug fixes

| 
| ✅ | Pay_online_later | A bug that was preventing `pay_online_later` reservations from being made between 3 and 6 days before the end of the free cancellation period has been fixed. |
| ✅ | Business_information.billing.address | If `business_information.billing.address` was passed but had no email in it, the request was failing. This is now fixed. |
| ✅ | Last four digits of the credit card number | Now the last four digits of the credit card number used for the reservation are stored in our internal systems also in case of *Payment by Booking*. |
| ✅ | Payment.card.authentication | The API misinterpreted an invalid “authentication”:{}, and, instead of rejecting it, it would bypass the check of whether the partner was authorised to pay online. Now such input is rejected. |


details
summary
February 2025
# February 2025

This month we've focused on improvements to orders and accommodation features in Demand API v3.1.
These are some of the key highlights:

### Orders

#### /orders/create

**| Replacement | 3d secure authentication_value |**

> We have included the `authentication_value` field in the `payment.card.authentication.3d_secure` object within [orders/create](/demand/docs/open-api/demand-api/orders/orders/create) response.
* It accommodates 3D Secure's authenticationValue.
* It replaces `cavv`, which was used for the deprecated 3D Secure v1, a version no longer supported by Demand API V3.

Example:


```json
"authentication": {
  "3d_secure": {
    "authentication_value": "AAAAAAAAAAAAAAA4l4AAAAAAAAA=",
    "eci": "05",
    "transaction": "00000000-0000-0000-0000-000000000000"
  }
}
```

For more details refer to the [Credit card + SCA use case](/demand/docs/payments/models/booking-collects?colorSchema=light&colorSchema=light#credit-card--sca-token)

**| Addition | booker_address_required  |**

> Previously when creating an order all fields of the `booker.address` object were mandatory. However, from now on only the `country` field is required:


```json
"booker": {
  "address": {
    "country": "nl"
  }
}
```

> The other fields within the `booker.address` object are subject to the value returned in the `booker_address_required` field within the accommodations/details response.
* If the[ /accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details) endpoint indicates that the booker's address is needed ( via the `booker_address_required=true` flag), the full address is mandatory in the [orders/create](/demand/docs/open-api/demand-api/orders/orders/create) request.
* If the `booker_address_required` flag is false, the booker's address can be omitted.



Example of accommodations/details response with `booker_address_required=true`

```json
{
  "request_id": "01jmmjn081ta8d5a0kt83sgg1d",
  "data": [
    {
      "id": 10507360,
      "name": {
        "en-gb": "Demand API Sandbox Hotel Orion"
      },
      "accommodation_type": 204,
      "booker_address_required": true,
      "brands": [],
      "checkin_checkout_times": {...},
```

Example of orders/create response with `booker.address` filled:

```json
"booker": {
    "address": {
      "address_line": "Road-1, house-2",
      "city": "Amsterdam",
      "country": "nl",
      "post_code": "11111"
    },
```

Refer to the [orders/create guide](/demand/docs/orders-api/order-preview-create) for more details and examples.

**| Addition | confirmation id and checkin_number | third party inventory properties |**

> Two new fields have been included in the [orders/create](/demand/docs/open-api/demand-api/orders/orders/create) response for [third-party inventory properties](/demand/docs/accommodations/tpi/about-tpi):


|  |
|  --- |
| `checkin_number` | The number required at the time of check-in. It allows guests to confirm their order at the accommodation. |
| `confirmation_number` | Used in conjunction with the pincode to verify the customer's order and assist with customer support or troubleshooting. |


Example of the order response:

```json
{
  "accommodation": {
    "order": "509430129718799",
    "pincode": "0000",
    "reservation": 12345678,
    "third_party_inventory": {
      "checkin_number": "123456789",
      "confirmation_number": "12345678912345678912"
    }
  }
}
```

Refer to the [third_party_inventory guidelines](/demand/docs/accommodations/tpi/about-tpi) for further details.

#### /orders/preview

**| Addition | inventory_type | third party inventory properties |**

> You can find now the `inventory_type` object in both accommodations/availability and [orders/preview](/demand/docs/open-api/demand-api/orders/orders/preview) endpoints.
* This object indicates whether the property comes from a third-party inventory and the sort of rate that is applied, in this case "sell" rate:



Example of orders/preview response:

```json
      "third_party_inventory": true,
      "inventory": {
        "third_party": true,
        "type": "sell"
      }
```

Find more details in the [Third-party repository quick guide](/demand/docs/accommodations/tpi/about-tpi).

### Accommodation

#### accommodations/search

**| Addition | product stock |**

> The `number_available_at_this_price` field indicates the available stock for each product ID (in units).
* It was already available in the /availability and /bulk-availability endpoints.
* Now you can also find it within the [/accommodations/search]([accommodations/search](/demand/docs/open-api/demand-api/accommodations/accommodations/search) response.



Example:

```json
"products": [{
    "id": "1050736002_377311511_0_2_0",
    ...
    "maximum_occupancy": {
      "adults": 2,
      "children": null,
      "total": 2
    },
    "number_available_at_this_price": 10,
    ...
    "price": {
      "book": 184.00,
      "total": 184.00
    },
    "room": 1050736002
    ...
```

#### accommodations/details

**| New functionality | DSA compliance | host_type and trader_verified |**

> We have added two new fields in the accommodations/details response, to comply with the Digital Services Act (“DSA”) legislation.
* `host_type`: Specifies the type of host for the accommodation (professional, private or unknown).
* `trader_verified`: Indicates whether the property has been successfully verified in line to Booking.com internal verification processes. This helps filter out non-verified properties for travellers in the European Economic Area (EEA), based on the booker's country.

These fields are available when requesting the [/accommodations/details](/demand/docs/open-api/demand-api/accommodations/accommodations/details) endpoint with the `description` extras parameter.


For more information, refer to the [DSA compliance guide](/demand/docs/compliance/dsa-compliance).

**| Enhancement | Facilities details |**

> The following facilities-related information have been added in /accommodations/detail response:
Internet, parking, restaurant, swimming pool, together with specific details such as the type of connection, the charging model, pricing, location, reservation requirements, etc.


For a complete list and examples, refer to the [accommodations/details guide](/demand/docs/accommodations/look-accommodation-details#facilities).

**| Addition | meal_prices |**

> We have added `meal_prices` in accommodations/details response to indicate meal pricing for breakfast, lunch, and dinner:


Example:

```json
{
  "meal_prices": {
    "breakfast": 20,
    "dinner": null,
    "lunch": null
  }
}
```

**| Addition | domestic_no_cc |**

> We have included the `domestic_no_cc` field within the payment object.
* This indicates whether domestic bookers can book without using credit card for products offering [free cancellation policies](/demand/docs/orders-api/cancellation-policies#flexible-policies---free-cancellation-until).



Example:

```json
"payment": {
  "amex_cvc_required": false,
  "cvc_required": false,
  "domestic_no_cc": false,
  "methods": {
    "cards": [...],
    "cash": true,
    "virtual_cards": [
      1,
      2,
      3
    ]
  }
}
```

#### /accommodations/bulk-availability

**| Addition | Cancellation schedule |**

> We have included the cancellation schedule within the `policies.cancellation` object in the [/accommodations/bulk-availability](/demand/docs/open-api/demand-api/accommodations/accommodations/bulk-availability) response.
* This field provides the cancellation timeline and estimated pricing.



Example:

```json
"policies": {
  "cancellation": {
    "free_cancellation_until": "2025-08-08T22:59:59+00:00",
    "type": "free_cancellation",
    "schedule": [
      {
        "from": "now",
        "price": 0
      },
      {
        "from": "2025-08-08T23:00:00+00:00",
        "price": 1189.63
      }
    ]
  }
}
```

Important
* Please note that pricing discrepancies may occur between the [/accommodations/bulk-availability](/demand/docs/open-api/demand-api/accommodations/accommodations/bulk-availability) and [/orders/preview](/demand/docs/open-api/demand-api/orders/orders/preview) responses. To obtain the most accurate final cancellation pricing, always use the [/orders/preview](/demand/docs/open-api/demand-api/orders/orders/preview) endpoint.
* Refer to the [cancellation policies section](/demand/docs/orders-api/cancellation-policies) for further details.


### Car rentals

#### cars/search

**| Addition | payment_timing filter |**

> Users can now filter car rental search results based on payment timing options: `pay_local`, `pay_now` or `part_pay` (v3.1).


Example of car rental search request with payment timing filter:

```json
{
    "booker": {
        "country": "us"
    },
    "currency": "USD",
    "driver": {
        "age": 35
    },
    "route": {
        "pickup": {
            "datetime": "2025-07-21T10:00:00",
            "location": {
                "airport": "LAX"
            }
        },
        "dropoff": {
            "datetime": "2025-07-24T10:00:00",
            "location": {
                "airport": "LAX"
            }
        }
    },
    "payment": {
        "timings": ["pay_now", "part_pay"]
    }
}
```

# Previous entries

## [2024](/demand/docs/whats-new/archive-2024)