Skip to content
Last updated

Retrieve deals, target and CUG rates

Learn how to provide traveller context to retrieve eligible accommodation deals and rates, and how to interpret the discount information in the response.

v3.2 v3.3


The deals and rates returned by the Demand API can depend on the traveller’s country, platform, stay dates, authentication status and your partner configuration.

Contact your Account Manager to confirm which rate types and discount programmes your integration can access.

This guide covers:

  • Deals — Promotional discounts that may be tied to a campaign or time period.
  • Target rates — Rates for eligible travellers, for example based on their platform or location.
  • Closed user group (CUG) rates — Rates available to eligible travellers in a defined user group.

The request examples use the v3.3 request and response structure. For v3.2 integrations, use the version-specific API reference and deal-tag values. Bundles and inventory rates are covered in their own guides.

See Displaying discounts for guidance on presenting discount information to travellers.

How rates and discounts are retrieved

Use the accommodation search and availability flow to retrieve products for the requested stay and traveller context.

  1. Call /accommodations/search with the traveller’s booker context, stay dates and guest details. Include products in the extras field to receive product information.
  2. Call /accommodations/availability with the selected accommodation and the same applicable traveller context to retrieve current availability, prices and product details.
  3. Before creating an order, call /orders/preview with the selected product and applicable accommodation details to validate the order and review its current price and terms.

The API returns rates and discounts for which the traveller is eligible and your partner account is configured. Providing a platform, country or user group does not guarantee a particular rate or discount.

Provide the traveller context

The booker object describes the traveller context used to determine applicable prices and rates.

ParameterDescription
countryThe booker’s country. This is used to return the best price for the user and to support applicable tax and fee display requirements.
platformThe booker’s platform, such as android, desktop, ios, mobile or tablet. This is used for platform-based deals and prices.
stateThe booker’s state. Currently applicable only when country is US.
user_groupsUser groups that apply to the booker, such as authenticated and eligible membership tiers.
Use accurate and consistent context

Provide the traveller’s actual country, platform, state where applicable and authentication status. Keep the applicable context consistent across search, availability and order preview. Changing it can change the rates returned.

The checkin and checkout dates are top-level request fields; they are not part of the booker object.

Stay dates can affect eligibility for time-sensitive discounts.

CUG rates and authentication

To request rates for an authenticated traveller, include authenticated in booker.user_groups. Only include this value when the traveller is authenticated.

  • Do not send membership-tier values such as genius or genius2 unless the schema and your partner-specific integration guidance explicitly support them.
  • Whether an authenticated traveller receives a particular CUG rate depends on their eligibility and your partner configuration.
{
  "booker": {
    "country": "us",
    "platform": "desktop",
    "user_groups": [
      "authenticated",
      "genius2"
    ]
  },
  "checkin": "2026-12-05",
  "checkout": "2026-12-14",
  "city": -2140479,
  "extras": [
    "products"
  ],
  "guests": {
    "number_of_adults": 2,
    "number_of_rooms": 1
  }
}
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.

Search for target rates

The following v3.3 request supplies a mobile platform and United States country context. It also includes the stay dates and guest details required for an accommodation search.

{
  "booker": {
    "country": "us",
    "platform": "mobile"
  },
  "checkin": "2026-12-05",
  "checkout": "2026-12-14",
  "city": -2140479,
  "extras": [
    "products"
  ],
  "guests": {
    "number_of_adults": 2,
    "number_of_rooms": 1
  }
}

Use the traveller’s actual country and platform. Use the common/locations/countries endpoint to retrieve supported country codes.

See the Search for available properties guide for more information about building accommodation search requests.


Understand discounts in responses

When a product has discount information, its deal field can contain a discount percentage, the original price before discounts and tags describing the applied deals. The field can be null when no deal information applies.

Monetary values are returned as objects with accommodation_currency and booker_currency amounts. The traveller-facing display amount is returned in price.display.

The example below assumes there are no additional charges, so the display amount matches the discounted amount.

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.display is 72.00. The returned tags indicate that the product includes a mobile rate and a limited-time deal.

{
  "request_id": "01fr9ez700exycb98w90w5r9sh",
  "data": [
    {
      "id": 10004,
      "products": [
        {
          "id": "1000420_95127794_2_0_0",
          "deal": {
            "discount_percentage": 28,
            "public_price": {
              "accommodation_currency": 100.00,
              "booker_currency": 100.00
            },
            "tags": [
              "mobile_rate",
              "limited_time_deal"
            ]
          },
          "price": {
            "display": {
              "accommodation_currency": 72.00,
              "booker_currency": 72.00
            },
            "total": {
              "accommodation_currency": 72.00,
              "booker_currency": 72.00
            }
          }
        }
      ]
    }
  ]
}
FieldDescription
deal.discount_percentageThe total discount percentage represented for the applied deals.
deal.public_priceThe original product price before discounts. It contains accommodation-currency and booker-currency amounts.
deal.tagsTags describing characteristics of the applied deals. They do not expose the underlying promotion rules or a price breakdown.
price.displayThe display price for the traveller. It contains accommodation-currency and booker-currency amounts.
price.totalThe total price, including extra charges. Use the applicable pricing guidance when presenting prices.

The discount information is a summary. It might not include a breakdown of each discount used to calculate the total discount percentage. Use the price fields returned by the API; do not derive the final price from the tags.

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.
  • More than one tag can be returned for a product.

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 specific 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.

Combining discounts

A product can be eligible for more than one type of discount.

This request supplies the country, platform and authentication context used to determine eligibility.

{

  "booker": {
    "platform": "mobile",
    "country": "es",
    "user_groups": ["authenticated", "genius"]
  },
  "checkin": "2026-12-05",
  "checkout": "2026-12-14",
  "extras": ["products"],
  "guests": {
    "number_of_adults": 2,
    "number_of_rooms": 1
  }

}

The API returns applicable discounts according to the traveller’s eligibility, your partner configuration and any rate-stacking settings.

Use deal.discount_percentage to understand the total discount represented in the response. Do not calculate it by adding or interpreting the values in deal.tags.

Check your partner configuration

Contact your Account Manager to confirm which rate and discount programmes your integration can access, and whether rate stacking is enabled.