Learn about the discounts and rates available through the Demand API and how to retrieve the right prices for each traveller.
Booking.com supports different types of discounts and rates based on factors such as booking dates, traveller location, platform, authentication status and partner configuration.
You can use the Demand API to retrieve:
- Deals — Promotional discounts, including seasonal and time-sensitive offers.
- Target rates — Rates for travellers using a specific platform or booking from a specific location.
- Closed user group (CUG) rates — Exclusive rates for eligible authenticated travellers.
- Third-party inventory (TPI) rates — Rates sourced from external suppliers.
The discounts and rates available to your integration depend on your partner configuration. Contact your Account Manager to confirm which rates your account can access.
The Demand API supports several types of discounts and rates. Their availability depends on the traveller's context, eligibility and your partner configuration.

Deals are promotional discounts offered for eligible accommodation products. Depending on the deal, eligibility can be determined by factors such as authentication status or booking dates.
Examples of deals available through the Demand API include:
Logged in deal (formerly Secret deals)
| Deal of the day
| |
Last minute deals
| Limited-time deals
|
Target rates are rates offered to travellers who meet specific criteria, such as their booking platform or location.
You can use target rates to:
- Offer mobile-specific prices;
- Target travellers in specific countries or regions;
- Support market-specific pricing strategies.
Target rate types include:
| Mobile rates - Rates available to eligible travellers booking through a mobile platform. | Geo/country rates - Rates available based on the traveller's country. |
Closed user group (CUG) rates are rates available only to eligible members of a defined user group.
For example, CUG rates can be used to provide eligible authenticated travellers with Genius or other membership-based rates.
To retrieve CUG rates:
- The traveller must meet the requirements of the applicable user group;
- You must provide the appropriate
booker.user_groupsvalues in the request; - Your partner account must have access to the applicable rates.
CUG rates can also be combined with other discounts when rate stacking is enabled for your account.
Access to CUG rates depends on your partner configuration. Contact your Account Manager for details.
Third-party inventory (TPI) rates are sourced from external suppliers and can supplement Booking.com inventory with additional availability and pricing.
TPI rates are available through Demand API v3.1 and later.
Depending on your partner configuration, TPI rates can be:
- Commissionable (Sell rates) - Which belong to the regular rates group.
- or non-commissionable (Net rates) - Which are CUG rates.
See the Third-party inventory section to learn how to retrieve and book TPI rates.
The discounts and rates returned by the Demand API depend on the request context.
Provide accurate traveller and booking information throughout the booking flow so that the API can determine which rates are applicable.
Use the following endpoints when retrieving and booking accommodation products:
| Endpoint | What to do |
✓ Provide the applicable | |
| /orders/preview | ✓ Before creating the order, preview the selected product using the applicable booker context. |
The booker object describes the traveller context used to determine rate eligibility.
Provide the applicable values for the following parameters:
| Parameter | Description |
|---|---|
platform | The platform through which the traveller is booking, such as mobile, desktop, etc. |
country | Restricts rates to users from a specific country. |
state | The traveller's state, where applicable (usually in the US). |
user_groups | The user groups for which the traveller is eligible, such as authenticated or an applicable Genius tier. |
checkin/ checkout | Stay dates can also determine eligibility for time-sensitive discounts. |
Use the same applicable traveller context throughout search, availability and order preview.
Changing eligibility-related information, such as booker.user_groups, can change the rates or discounts available to the traveller.
Include your API credentials as described in Authentication.
Your partner configuration determines which rates and discount programmes your integration can access.
Contact your Account Manager if you need to confirm whether your partner account has access to a specific rate or discount programme.
To retrieve target rates, provide the traveller context that determines eligibility.
For example, to retrieve applicable mobile and country rates:
Set
booker.platformto the platform the traveller is using, for example:mobile.Set the
booker.countryto the traveller's country code, for exampleus. (Use the common/locations/countries endpoint endpoint to retrieve supported country codes.)Provide the correct
checkinandcheckoutdates.
For example:
{
...
"booker": {
"platform": "mobile",
"country": "us",
},
"checkin": "2026-09-05",
"checkout": "2026-09-14",
"extras": ["products"],
...
}See the Search for available properties guide for more information about building accommodation search requests.
To retrieve rates that require an authenticated traveller, include authenticated in booker.user_groups
If the traveller is also eligible for a membership tier, include the corresponding user group (e.g., genius or genius2).
For example:
"booker": {
"platform": "desktop",
"country": "us",
"user_groups": [
"authenticated",
"genius2"]
},
In this example:
authenticatedindicates that the traveller is authenticated;genius2requests rates applicable to that user group, where available to your integration.
Do not use a membership tier to represent authentication. For example, specifying only genius2 does not replace authenticated when authentication is required for the rate.
Only provide user groups that apply to the traveller and are supported by your partner configuration.
Providing a user group does not by itself make a traveller eligible for that rate.
A product can be eligible for more than one type of discount.
For example, the following request provides:
- A mobile booking context;
- A traveller located in Spain;
- An authenticated traveller eligible for the genius user group; and
- The requested stay dates.
{
...
"booker": {
"platform": "mobile",
"country": "es",
"user_groups": ["authenticated", "genius"]
},
"checkin": "2026-09-05",
"checkout": "2026-09-14",
"extras": ["products"],
...
}In this example, a combination of deals and CUG rates is applied:
- Target discounts are applied to mobile users located in Spain, during the selected period.
- For the exclusive Genius closed group, the user must be
authenticatedto receive special rates.
Eligible discounts are not necessarily combined. Discounts can be stacked only when rate stacking is enabled for your partner account.
Contact your Account Manager for information about your configuration.
When product information includes an applicable discount, the response can contain a products.deal object with information about that discount.
The following example shows a product with a 28% total discount.
Its public_price is 100.00, and its resulting price.book is 72.00. The deal is tagged as both a mobile rate and a limited-time deal.
{
...
"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,
},Field | Description |
|---|---|
discount_percentage | The total discount percentage applied to the product's public_price. |
public_price | The price of the product before the discounts represented by discount_percentage are applied. |
tags | Characteristics or categories associated with the discount. A tag does not necessarily identify the specific underlying promotion. |
price.book | The resulting booking price (public_price minus the discount_percentage). |
Note that the products.deal object provides summary information about the discount. It might not provide a breakdown of the individual discounts used to calculate discount_percentage.
The deal.tags values describe characteristics or categories associated with a discount.
Do not use deal tags as identifiers for an underlying promotion or pricing product. Different types of discounts can share the same tag.
Tag | Description |
|---|---|
black_friday | Identifies a discount associated with the Black Friday promotion. |
limited_time_deal | Identifies a discount with time-sensitive eligibility, for example based on how far in advance or how close to check-in the booking is made. |
logged_in_deal (previously named "Secret deals") | Identifies a discount available to eligible authenticated travellers. |
mobile_rate | Identifies a discounted rate available to eligible travellers using a mobile platform. |
seasonal_deal | Identifies a discount associated with a seasonal promotional period. |
Deal tags are API-level classifications intended to describe characteristics of a discount. They do not expose the underlying pricing configuration and should not be used to infer it.
More than one discount can contribute to the final price.
- When discounts can be combined, they can be applied sequentially.
- When discounts cannot be combined, the applicable pricing rules determine which discount is applied.
Use deal.discount_percentage to understand the total discount represented in the response rather than calculating the total from deal.tags.
- Learn how to display discounts in your application.
- Learn how to retrieve and book Third-party inventory rates.