Last updated

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.


August 2025

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 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 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 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 and 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:

{
  "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 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


July 2025

✓ 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 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.
  • 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.

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


June 2025

This month's highlights:

✓ Car rental deals - Car deals are now included in cars/search results.

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

✓ 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 and 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:

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

Find more details, see the Third-party inventory quick guide.

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 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:
"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.

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:

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:

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

Learn more in the Car deals dedicated guide.

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.

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.

EndpointUse it to ...
/messages/sendSend a message to start or continue a conversation.
/messages/latestRetrieve up to the 100 most recent messages.
/messages/latest/confirmConfirm receipt of messages from /messages/latest.
/messages/conversationsFetch the full message history (up to 1 year after checkout).
/messages/attachments/uploadUpload an image file (up to 1 MB) to a conversation.
/messages/attachments/metadataRetrieve metadata for an uploaded attachment (e.g. name, size, type).
/messages/attachments/downloadDownload an attachment using its ID and conversation context.
References

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:

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

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

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

{
  "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.

Car rentals

cars/constants

🆕 New endpoint!

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

We've introduced the cars/constants endpoint 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 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

{
  "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:

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

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, 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:

{
  "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.

/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 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:

{
  "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.

  • 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:

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

Find more details in the Third-party inventory quick guide.

Bug fixes

Pay_online_laterA 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.addressIf 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 numberNow 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.authenticationThe 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.

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

"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

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

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

{
  "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:

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

Refer to the orders/create guide 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 response for third-party inventory properties:

checkin_numberThe number required at the time of check-in. It allows guests to confirm their order at the accommodation.
confirmation_numberUsed in conjunction with the pincode to verify the customer's order and assist with customer support or troubleshooting.

Example of the order response:

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

Refer to the third_party_inventory guidelines 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 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:

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

Find more details in the Third-party repository quick guide.

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

Example:

"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 endpoint with the description extras parameter.

For more information, refer to the DSA compliance guide.

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

| Addition | meal_prices |

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

Example:

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

| Addition | domestic_no_cc |

We have included the domestic_no_cc field within the payment object.

Example:

"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 response.

  • This field provides the cancellation timeline and estimated pricing.

Example:

"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

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.

Example of car rental search request with payment timing filter:

{
    "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