Use this endpoint to retrieve promotion types that are currently available for a hotel.
Seasonal promotion types (like campaign_getaway, campaign_black_friday, campaign_late_escape and campaign_early_year) will only be returned as eligible during the period in which the respective campaign promotions can be created.
The response includes a list of all promotion types which a hotel is eligible to create at the time of the request and their respective available options and restrictions when applicable.
This topic also provides the UI/UX recommendations for the promotiontypes endpoint.
GET
https://supply-xml.booking.com/hotels/xml/promotiontypes?hotel_id=12345| Element | Description | Type | Required/Optional | Notes |
|---|---|---|---|---|
hotel_id | Specify the ID of the property to which the promotion applies. | string | required | You must have permission to manage the property. |
This example contains all possible fields that can be included in the response.
<promotion_types>
<promotion_type id="basic">
<discount min="1" max="99" target_channel="PUBLIC"/>
<discount min="10" max="99" target_channel="SECRET"/>
<target_channels>
<target_channel id="public" name="PUBLIC"/>
<target_channel id="subscribers" name="SECRET"/>
</target_channels>
</promotion_type>
<promotion_type id="last_minute">
<discount min="1" max="99" target_channel="PUBLIC"/>
<discount min="10" max="99" target_channel="SECRET"/>
<target_channels>
<target_channel id="public" name="PUBLIC"/>
<target_channel id="subscribers" name="SECRET"/>
</target_channels>
</promotion_type>
<promotion_type id="early_booker">
<discount min="1" max="99" target_channel="PUBLIC"/>
<discount min="10" max="99" target_channel="SECRET"/>
<target_channels>
<target_channel id="public" name="PUBLIC"/>
<target_channel id="subscribers" name="SECRET"/>
</target_channels>
</promotion_type>
<promotion_type id="geo_rate">
<discount min="5" max="30"/>
<target_channels>
<target_channel id="thailand_pos" name="Thailand"/>
<target_channel id="colombia_pos" name="Columbia"/>
<target_channel id="kuwait_pos" name="Kuwait"/>
<target_channel id="eu_pos" name="Europe"/>
<target_channel id="switzerland_pos" name="Switzerland"/>
[...]
</target_channels>
</promotion_type>
<promotion_type id="mobile_rate">
<discount min="10" max="80"/>
<target_channels>
<target_channel id="all" name="Apps and mobile web"/>
<target_channel id="app" name="Apps only"/>
</target_channels>
</promotion_type>
<promotion_type id="campaign_black_friday">
<discount min="30" max="99"/>
<book_date start="2024-06-06" end="2024-06-29"/>
<stay_date min="2024-06-06" max="2024-06-29"/>
</promotion_type>
<promotion_type id="new_property_deal">
</promotion_type>
</promotion_types>
<!-- RUID: [...] -->This table gives details about all fields possibly present in the response.
| Element | Attribute | Description | Type | Notes |
|---|---|---|---|---|
promotion_types | Root element. | array of promotion_type | ||
> promotion_types | Promotion type details. | object | ||
id | Promotion type details. | object | ||
>> discount | Object containing minimum and maximum discounts that the promotion type accepts. | object | ||
min | Minimum discounts that can be given for promotion type. | integer | ||
max | Maximum discounts that can be given for promotion type. | integer | ||
>> book_date | Specifies the date range during which the promotions with this promotion type will be bookable on Booking.com. | object | ||
min | Specifies the date from which the promotions with this promotion type will be available. | date (YYYY-MM-DD) | ||
max | Specifies the date up to which the promotions with this promotion type will be available. | date (YYYY-MM-DD) | ||
>> stay_date | Object containing minimum and maximum stay_date start and end which a promotion with this type can be created with. | object | ||
min | Defines the earliest start of the stay days which can be given for promotion type. | date (YYYY-MM-DD) | ||
max | Defines the latest end of the stay days which can be given for promotion type. | date (YYYY-MM-DD) | ||
>> target_channel | Promotion channels available for the promotion type. | array of target_channel | ||
>>> target_channel | Promotion channel details. | object | ||
id | Promotion channel ID. | string | ||
name | Name of the promotion channel. | string |
For new_property_deal, the discount is fixed at 20.
When allowing properties to create promotions, we recommend creating a page with a detailed list of all eligible promotions. For each <promotion_type> it’s best to display any information that can differentiate the different promotions and help properties make the decision that’s right for them and their business.

As there are many different types of promotions and stacking discounts, we strongly recommend grouping all promotions into three categories as shown below:

Currently these groupings are not available via the API & must be created manually. For more information around promotions & discount stacking, see Setting up deals and promotions.
For a complete list of error codes and possible solutions, see Troubleshooting and list of error codes.