Skip to content

Discounts and rates

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.

Discount categories

The Demand API supports several types of discounts and rates. Their availability depends on the traveller's context, eligibility and your partner configuration.

type of discounts

Deals

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:

dealLogged in deal (formerly Secret deals)
  • Available to eligible authenticated travellers.
Deal of the day
  • A promotional deal available for selected properties.
Last minute deals
  • Available when booking close to the check-in date.
Limited-time deals
  • A discount with time-sensitive eligibility, for example based on how far in advance or how close to check-in the booking is made.

Target rates

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:

target ratesMobile 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

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_groups values 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

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.


Retrieve discounts and 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.

Endpoints

Use the following endpoints when retrieving and booking accommodation products:

EndpointWhat to do

/accommodations/search

/accommodations/availability

✓ Provide the applicable booker information and stay dates to retrieve rates for which the traveller is eligible.

/orders/preview✓ Before creating the order, preview the selected product using the applicable booker context.

Booker context

The booker object describes the traveller context used to determine rate eligibility.

Provide the applicable values for the following parameters:

Parameter
Description
platformThe platform through which the traveller is booking, such as mobile, desktop, etc.
countryRestricts rates to users from a specific country.
stateThe traveller's state, where applicable (usually in the US).
user_groupsThe user groups for which the traveller is eligible, such as authenticated or an applicable Genius tier.
checkin/ checkoutStay dates can also determine eligibility for time-sensitive discounts.
Keep the booker context consistent

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.

Authentication and partner configuration

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.

Retrieve target rates

To retrieve target rates, provide the traveller context that determines eligibility.

For example, to retrieve applicable mobile and country rates:

  1. Set booker.platform to the platform the traveller is using, for example: mobile.

  2. Set the booker.countryto the traveller's country code, for example us. (Use the common/locations/countries endpoint endpoint to retrieve supported country codes.)

  3. Provide the correct checkin and checkout dates.

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.

Retrieve CUG rates

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:

  • authenticated indicates that the traveller is authenticated;
  • genius2 requests 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.

User-group eligibility

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.

Combine discounts

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


Understand discounts in responses

When product information includes an applicable discount, the response can contain a products.deal object with information about that discount.

Example - Search response with discounts

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

"Deal" object

Field
Description
discount_percentageThe total discount percentage applied to the product's public_price.
public_priceThe price of the product before the discounts represented by discount_percentage are applied.
tagsCharacteristics or categories associated with the discount. A tag does not necessarily identify the specific underlying promotion.
price.bookThe 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.

Deal tags

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_fridayIdentifies a discount associated with the Black Friday promotion.
limited_time_dealIdentifies 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_rateIdentifies a discounted rate available to eligible travellers using a mobile platform.
seasonal_dealIdentifies a discount associated with a seasonal promotional period.
Do not infer pricing configuration from deal tags

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.

Multiple discounts

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.


What's next?