Skip to content

Displaying discounts

Use these guidelines to display accommodation discounts and deals clearly and accurately in your application.

When product information is returned for an accommodation search or availability request, a product can include a deal object. This object summarises the discount applied to the product.

For /accommodations/search, include products in the extras request parameter to retrieve product information. See the v3.2 Search reference and v3.3 Search reference.

Display prices and discounts

When a product has a deal object:

  • Show deal.public_price as the original price before the discount.
  • Show the product’s price.display amount as the price for the traveller.
  • If you show the original price alongside the discounted price, visually de-emphasise the original price, for example with a strikethrough.
  • Use deal.discount_percentage to show the discount percentage. Do not calculate the discounted price yourself; use the price returned in price.display.

The following simplified response excerpt shows a product with a 20% discount. The accommodation and booker currencies are both EUR, and the example assumes no additional charges affect the displayed amount.

{
  "id": "1000420_95127794_2_0_0",
  "deal": {
    "discount_percentage": 20,
    "public_price": {
      "accommodation_currency": 150.00,
      "booker_currency": 150.00
    },
    "tags": ["limited_time_deal"]
  },
  "price": {
    "display": {
      "accommodation_currency": 120.00,
      "booker_currency": 120.00
    }
  }
}

In the API response, the product is nested under an accommodation in the data array. The accommodation’s currency object identifies the accommodation and booker currencies.

Localise prices

Use the currency values returned by the API and format them according to the traveller’s locale.

  • Match the amount you display to its currency code. The accommodation currency is identified by currency.accommodation; the booker currency is identified by currency.booker.
  • Use the correct booker context in your requests, including the traveller’s country and platform where relevant. The API uses this context to return rates for which the traveller may be eligible.
  • Do not infer geo-specific rate eligibility from the property’s location or calculate eligibility independently in your application.

Display deal tags

The deal.tags array describes characteristics of the discounts applied to a product. A tag does not identify the specific promotion or explain its eligibility rules. Use discount_percentage for the total discount represented in the response; do not calculate it from the tags.

These tags are supported in both v3.2 and v3.3:

  • black_friday
  • limited_time_deal
  • logged_in_deal
  • mobile_rate

In v3.2, the API can also return seasonal_deal. In v3.3, this tag is replaced by more specific tags:

  • early_year_deal
  • flash_deal
  • getaway_deal
  • late_escape_deal

Handle tags as classifications. Do not use them to infer the underlying pricing configuration or the rules used to calculate the price.

Display mobile rates only to eligible travellers

A mobile_rate tag identifies a rate associated with a mobile platform. Only display the rate when the request used the correct platform context and the traveller is eligible. Do not use the tag by itself as proof that a traveller qualifies.

Display logged-in deals

The logged_in_deal tag identifies a discount available to eligible authenticated travellers. Display these deals only when the traveller is authenticated and meets the deal’s eligibility requirements. Do not show them to anonymous or unauthenticated users.

Eligibility can depend on the deal and partner configuration. For example, it may require:

  • A signed-in traveller.
  • Genius membership.
  • Participation in a targeted campaign.

Ensure that your request represents the traveller’s actual authentication and membership context. Confirm the applicable requirements with your Account Manager and follow Booking.com’s technical and contractual requirements for deal visibility and rate confidentiality.

Label these deals clearly in your interface, for example, as “Logged-in discount”, so travellers understand why the price is available to them.

Handle products with no deal

If no discount applies, products[].deal can be null. Do not show discount indicators, an original price, or strikethrough pricing for that product.

This simplified product excerpt shows a product with no deal:

{
  "id": "1000420_95127794_2_0_0",
  "deal": null,
  "price": {
    "display": {
      "accommodation_currency": 100.00,
      "booker_currency": 100.00
    }
  }
}

genius-bulb Avoid showing discount-related visuals or text when no deal is present. This helps prevent confusion.


Learn more