Last updated

Deals

Discover how to request, return and display information about deals.


Booking.com offers different incentives to property owners to help them market their offerings such as seasonal deals (e.g. Black Friday) or special rates for mobile users.

  • As a Demand API Managed Affiliate Partner, you can access specific incentives, and offer them to your travellers.

For more information about the deals you can access and how to use them, please contact your Account Manager.

  • In the Demand API, a deal refers to a discounted product price available to a traveller when one or more incentives apply.

Requesting deal information

Use the following endpoints to access deals information:

The following parameters determine the available deals for the returned products:

API keyThe key used in the Authorization: Bearer header, identifies the partner and affiliate IDs used to make the request.
  • These IDs define the deals you have access to.
checkin/ checkoutInclude deals valid for the specified dates.
bookerInclude deals available only to travellers who meet specific conditions. For example:
  • They may need to be authenticated users, logged in to your website, or using a mobile device.

For detailed instructions on defining requests for these endpoints, refer to the Search and Orders guidelines.

Example - Accommodation search request

{
...
  "booker": {
    "platform": "mobile",
    "country": "us",
    "user_groups": ["authenticated"]
  },
  "checkin": "2023-09-01",
  "checkout": "2023-09-02",
  "extras": ["products"],
...
}

Deal information in responses

After calling to any of the before mentioned endpoints, the response contains the products.deal object, where you can look at available deals.

Key parameters
discount_percentageThe total discount percentage applied to the product's public_price after all qualifying deals are factored in.
public_priceThe original price of the product, before discounts. This is the price to which the discount_percentage is applied.
tagsIdentifies the types of deals applied to the product.
  • Examples: "black_friday" or "mobile_rate".

Example - Accommodation search response

The following example shows a product eligible for a 28% discount, applicable when booking via a mobile device or during a specific promotional period.

The original price is €100, resulting in a discounted price of €72.00.

{
  ...
  "currency": "EUR",
  ...
  "products": [
    ...
    "id": "xxxxxxxx_x_xxxxxxxxx_x_x_x",
    "deal": {
      "discount_percentage": 28,
      "public_price": 100.00,
      "tags": [
        "mobile_rate",
        "limited_time_deal"
      ]
    },
    ...
    "price": {
      "book": 72.00,
    },
Tags and discount_percentage
  • The products.deal object provides summary information on available deals for a product. However, it does not always give a detailed breakdown of how the discount_percentage is calculated.
  • If multiple deals apply, discounts may be applied sequentially.
  • Alternatively, if deals cannot be combined, only the highest available discount will be returned.

Displaying deal information

Use the data from the products.deal object to show travellers that a deal is available for a product.

Best practices

  • If you display the discount_percentage you must also display the public_price - typically as a strikethrough price.

  • You must only show available discounts to eligible travellers - for example, only show mobile_rate discounts to travellers using an appropriate mobile device.

  • Respect localisation and currency formatting:

    • Deals are often region-specific, and currency formatting may vary based on the user’s location or the property’s location.
    • Always ensure that the correct currency is displayed and use proper formatting for prices.
      • For example, use € for prices in Euros and follow the appropriate conventions for the user’s locale (e.g., number formatting, decimal places).
{
  "currency": "EUR",
  "products": [
    {
      "deal": {
        "discount_percentage": 20,
        "public_price": 150.00,
        "tags": ["limited_time_deal"]
      },
      "price": {
        "book": 120.00
      }
    }
  ]
}

Display example

For example, if a call to /accommodations/search returns the following deal information:

{
  ...
  "currency": "EUR",
  ...
  "products": [
    ...
    "id": "xxxxxxxx_x_xxxxxxxxx_x_x_x",
    "deal": {
      "discount_percentage": 45,
      "public_price": 1005.00,
      "tags": [
        "limited_time_deal"
      ]
    },
    ...
    "price": {
      "book": 553.00,
    },

You could display this on the search results page as follows:

Limited Time Deal Search

Similarly, if you receive the same information from a call to /accommodations/availability, you can display it on the property page like this:

Limited Time Deal Availability

Dealing with Null deals

Sometimes, no deals will apply to a product. In such cases, the products.deal object will return null.

Best practice

Make sure to handle this case in your application gracefully. If no deal is available, you might want to display a standard price with no discount information.

Example response with no Deal

{
  "currency": "EUR",
  "products": [
    {
      "id": "xxxxxxxx_x_xxxxxxxxx_x_x_x",
      "deal": null,
      "price": {
        "book": 100.00
      }
    }
  ]
}

genius-bulb Ensure your interface does not display any discount-related information when no deals are available to avoid confusion for users.