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.
When a product has a deal object:
- Show
deal.public_priceas the original price before the discount. - Show the product’s
price.displayamount 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_percentageto show the discount percentage. Do not calculate the discounted price yourself; use the price returned inprice.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.
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 bycurrency.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.
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_fridaylimited_time_deallogged_in_dealmobile_rate
In v3.2, the API can also return seasonal_deal. In v3.3, this tag is replaced by more specific tags:
early_year_dealflash_dealgetaway_deallate_escape_deal
Handle tags as classifications. Do not use them to infer the underlying pricing configuration or the rules used to calculate the price.
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.
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.
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
}
}
}
Avoid showing discount-related visuals or text when no deal is present. This helps prevent confusion.
- For details on retrieving deals and rates, see the Discounts and rates guide.
- For instructions on constructing accommodation search requests, see the Search for accommodation guide.
- For practical request examples, see Search use cases.
Avoid showing discount-related visuals or text when no deal is present. This helps prevent confusion.