# Retrieving promotion types

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](#uiux-recommendations) for the `promotiontypes` endpoint.

## URL


```https
GET 
https://supply-xml.booking.com/hotels/xml/promotiontypes?hotel_id=12345
```

## Query Parameters

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


## Sample response

This example contains all possible fields that can be included in the response.


```xml
<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_types>
<!-- RUID: [...] -->
```

## Response body

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


## UI/UX recommendations

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.

![Retrieving promotions types: example 1](/assets/retrieving_promotion_types_1.6babda52990245f2cbc2008d3cb0b429f33405a3b7b5baf5feb1c410ec913192.5cba86b9.png)

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

![Retrieving promotions types: example 2](/assets/retrieving_promotion_types_2.d4bffb5e2ba1839a84f9ab85b7d9f6da0433b7166dffe9339c8b9cd6cbe05381.5cba86b9.png)

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](https://partner.booking.com/en-us/help/rates-availability/rates-special-offers/setting-deals-and-promotions).

## Errors

For a complete list of error codes and possible solutions, see [Troubleshooting and list of error codes](/connectivity/docs/promotions-troubleshooting).