Skip to content

Discounts and rates

v3.2 v3.3

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 discount mechanisms. Each type has a distinct business purpose and API behaviour.

type of discounts

Deals

Deals are promotional discounts offered for eligible products. Depending on the deal, eligibility can be determined by factors such as authentication status, booking dates, promotional campaigns or other applicable conditions.

Use cases include:

  • Promoting time-sensitive campaigns, such as Black Friday or flash deals.
  • Highlighting products during specific promotional periods.
  • Offering discounts based on when a traveller searches or books.
  • Driving short-term bookings through targeted promotions.

The Demand API identifies applicable deals through the products.deal object.

Examples of deals available through the Demand API include:

dealDescription
Logged-in dealAvailable to eligible authenticated travellers. Previously referred to as Secret deals.
Limited-time promotionsA promotional discount with time-sensitive eligibility.
Black Friday campaignsA promotional discount associated with the Black Friday campaign.
Early year dealA promotional discount associated with an early-year campaign.
Flash dealA promotional discount associated with a flash campaign.
Getaway dealA promotional discount associated with a getaway campaign.
Late escape dealA promotional discount associated with a late-escape campaign.

See Deal tags for the complete list of tags returned by each API version.

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) - Belong to the regular rates group.
  • Non-commissionable (Net rates) - Belong to the CUG rates group.

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.country to 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-12-05",
  "checkout": "2026-12-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, for example 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-12-05",
  "checkout": "2026-12-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, which provides summary information about the discounts applied to a product.

Example - Search response with discounts

The following example shows an accommodation product with a 28% total discount.

Its public_price is 100.00, and its resulting price.book is 72.00. The returned tags indicate that the product includes 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_priceOriginal price of the product before applying the discounts represented by discount_percentage.
tagsTags describing the applicable deal categories. A tag does not necessarily identify the specific underlying promotion.
price.bookResulting booking price after the applicable discount is applied.

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 array identifies characteristics or categories associated with the discounts applied to the product.

  • Do not use deal tags as identifiers for an underlying promotion or pricing configuration.
  • Different discounts can share the same tag, and the tags do not expose the rules used to calculate the price.

The following deal tags can be returned per version:

Tag
3.23.3Description
black_friday✓✓Identifies a discount associated with the Black Friday promotion.
limited_time_deal✓✓Identifies a discount with time-sensitive eligibility.
logged_in_deal✓✓Identifies a discount available to eligible authenticated travellers. Previously referred to as Secret deals.
mobile_rate✓✓Identifies a discounted rate available to eligible travellers using a mobile platform.
seasonal_deal✓—Identifies a seasonal promotional discount. Available only in version 3.2; replaced by more granular deal tags in version 3.3.
Version 3.3 Seasonal deal

In version 3.3, deal tags provide more granular classifications for promotional campaigns.

The seasonal_deal tag is replaced by these tags:

Tag
3.23.3Description
early_year_deal—✓Identifies a discount associated with an early-year promotional campaign.
flash_deal—✓Identifies a discount associated with a flash promotional campaign.
getaway_deal—✓Identifies a discount associated with a getaway promotional campaign.
late_escape_deal—✓Identifies a discount associated with a late-escape promotional campaign.
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.
  • Do not calculate the total discount from the values in deal.tags.

Use deal.discount_percentage to understand the total discount represented in the response rather than calculating the total from deal.tags.


What's next?