Managing roomrates¶
A roomrate (also known as a product) is the unique combination of a room type and a rate plan with conditions. These conditions can consist of:
- Policy: Refers to a combination of a cancellation and a prepayment policy.
- Cancellation policy: Refers to whether there is and what the penalty is for a guest if they cancel a booking within a given time frame.
- Prepayment policy: Refers to whether and when the property takes a prepayment from the guest.
- Override policy: Refers to a policy that you can set on certain dates to overwrite the policy already assigned to a roomrate.
- Booking restrictions: Refers to certain restrictions you can set when it comes to booking a roomrate.
- Meal plan: Refers to whether there is and what the meal plan is assigned to the roomrate.
You need roomrates to create and push inventory (availability) and rates (prices).
Managing policies and restrictions¶
It is very important to properly understand what policies and restrictions are and how to assign them to roomrates in the context of the /ota/OTA_HotelProductNotif
endpoint. Read this before you start creating roomrates.
What is a policy?¶
You must see a policy as a combination of a cancellation policy and a prepayment policy.
To find all the available cancellation codes, see cancellation policies. You can find free and non-free cancellations. Each one specifies the time frame in which a guest can cancel (with the exception of non-refundable with code 1
) and what the possible penalty is for a guest if they cancel after a specific deadline or deadlines.
A policy can also include a prepayment. If prepayment is required, it further specifies whether the prepayment must happen after a guest makes a reservation (after_reservation_is_made
) or when the guest can no longer cancel for free (after_cancellation_begins
).
What is an override policy?¶
An override policy is just a policy. However, you use it to overwrite the main policy of a roomrate for a specified date range. Let's say a property uses a flexible policy for most of the year, but they want to use a non-refundable policy for their peak season. That would be a good use case for a policy override.
What are restrictions?¶
Restrictions enable you to specify when a roomrate with a specific policy is and is not possible to book. You can set the following restrictions:
MinAdvancedBookingOffset
: Refers to the minimum time duration in advance until which guests are allowed to book a date. In other words, this specifies the moment from when a guest can no longer book the roomrate. The search date is counted as one of the days in the restriction length.MaxAdvancedBookingOffset
: Refers to the maximum time duration in advance that guests are allowed to book a date. In other words, this specifies the moment from when a guest can start booking the roomrate. The search date is counted as one of the days in the restriction length.
You can also set the specific hours in which a roomrate is available per day, but this is not recommended.
Mapping room types and rate plans¶
To map your room types and rate plans to Booking.com's, you should use the retrieving roomrates endpoint. You could also use the retrieving room types and retrieving rate plans endpoints, but these contain less complete information. You could still use either to troubleshoot issues with mapping as needed.
What is the maximum number of roomrates the API supports?¶
You can create a maximum of 400 active roomrates for a property.
Creating a roomrate¶
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif
The POST /ota/OTA_HotelProductNotif
request enables you to create roomrates for your property.
Creating or updating¶
To create a roomrate you set ProductNotifType
to New
. If you want to update a roomrate, you set ProductNotifType
to Overlay
.
Elements for creating a roomrate¶
To create a roomrate on Booking.com, the following basic elements are required:
- Property ID
- Room type ID
- Rate plan ID
To further expand a roomrate, it is recommended to also add:
- Value add inclusions: To indicate whether there is a meal plan and if so what that meal plan is.
- Policy: To assign an existing policy (combination of cancellation and prepayment) to a roomrate.
The following elements are optional:
- Override policy
- Booking rules
Assigning policies to roomrates¶
You can only assign existing policies using the /ota/OTA_HotelProductNotif
endpoint. This means that if you want to create or update policies for a property, you must either:
- Use the
HotelDescriptiveContentNotif
endpoint if you have implemented it. - Tell the property to use their property page on the Booking.com extranet to create a policy there.
How do you assign a policy?¶
To assign a policy to a roomrate, follow these steps:
-
Retrieve the property's existing policies either by:
- Retrieving the property details: You need the
HotelDescriptiveInfo
endpoint to retrieve all the existing policies on the property level. - Retrieving the policies that are already assigned to existing roomrates.
You only need the cancellation policy code, because the prepayment policy is implicitly connected to this cancellation policy code. To know what each code represents, see the cancellation policies.
- Retrieving the property details: You need the
-
Assign the policy by adding the code to the
PolicyCode
element (CancelPolicy
>CancelPenalty
>PolicyCode
).
How do you assign an override policy?¶
To assign an override policy to a roomrate, follow these steps:
-
Retrieve the property's existing policies either by:
- Retrieving the property details: You need the
HotelDescriptiveInfo
endpoint to retrieve all the existing policies on the property level. - Retrieving the policies that are already assigned to existing roomrates.
For policy overrides, you need the policy name and not the policy code. If you use the
HotelDescriptiveInfo
endpoint, you can use the name underPolicyName
(CancelPolicy
>CancelPenalty
>PolicyName
). If you only retrieve policies that are already assigned to existing roomrates., you must look at the name underpolicy
(room
>rates
>rate
>policy
) and find its policy override name equivalent in the following table:roomrate
namepolicy override name General PTT_GENERAL Non-refundable PTT_NON_REFUNDABLE Special conditions PTT_SPECIAL_CONDITIONS Special conditions 2 PTT_SPECIAL_CONDITIONS_2 Special conditions 3 PTT_SPECIAL_CONDITIONS_3 Special conditions 4 PTT_SPECIAL_CONDITIONS_4 Fully flexible PTT_FULLY_FLEXIBLE - Retrieving the property details: You need the
-
Assign the policy by adding the policy override name to the
PolicyName
element (OverridePolicies
>OverridePolicy
>PolicyName
).
→ To know what each policy name represents, find the policy code and see the cancellation policies.
Body parameters¶
The following table describes what elements you must add in the request body:
Element | Attribute | Description | Type | Required/Optional | Notes |
---|---|---|---|---|---|
OTA_HotelProductNotifRQ |
Contains the HotelProducts array. |
object | required | ||
> HotelProducts |
Contains the HotelProduct objects. |
array | required | ||
HotelCode |
Specifies the unique ID of the property you create roomrates for. | integer | required | ||
>> HotelProduct |
Contains the roomrate information. | object | required | ||
ProductNotifType |
Specifies whether the request is to create a roomrate (New ) or modify an existing one (Overlay ). |
enum | required | Possible values are New and Overlay . You must use New to create a roomrate. |
|
>>> RoomTypes |
Contains a RoomType object. |
object | required | ||
>>>> RoomType |
Contains the room type information. | object | required | ||
RoomTypeCode |
Specifies the room type id. | integer | required | ||
MaxOccupancy |
Specifies the maximum occupancy of the roomtype. | integer | optional | Note that specifying this value overrides the value set at the time of creating or updating the roomtype. Also, the pricing type of the roomrate is changed to RLO. | |
>>> RatePlans |
Contains a RatePlan object. |
object | required | ||
>>>> RatePlan |
Contains the rate plan information. | object | required | ||
RatePlanCode |
Specifies the rate plan id. | integer | required | ||
>>> ValueAddInclusions |
Contains a MealPlan object. |
object | optional | ||
>>>> MealPlan |
Contains the meal plan information. | object | optional | If you do not include this element, the default is no meal plan included. | |
MealPlanCode |
Specifies the meal plan id. | integer | optional | To see the list of meal plan codes at Booking.com, see meal plan codes. | |
>>> PolicyInfo |
Contains the cancellation and booking policy objects. | object | optional | ||
>>>> CancelPolicy |
Contains the CancelPenalty objects. |
object | optional | ||
>>>>> CancelPenalty |
Contains the policy information. | object | optional | ||
PolicyCode |
Specifies the policy (cancellation and prepayment policy combination) you assign to the roomrate. | integer | optional | To see the list of cancellation and prepaymeny policy codes at Booking.com, see cancellation and prepayment polices. | |
>>>> OverridePolicies |
Contains the OverridePolicy objects. |
object | optional | ||
>>>>> OverridePolicy |
Contains the override policy information, which overwrites other policies set for this roomrate on the dates specified within the object. | object | optional | ||
PolicyName |
Specifies the name of the override policy. | string | optional | ||
>>>>>> BookDates |
Contains the BookDate objects. |
object | optional | ||
>>>>>>> BookDate |
Contains the book date information, which specify the dates when the override policy overwrites other policies. | object | optional | ||
Start |
Specifies the start date of the override policy. | string | optional | Follows the format: YYYY-MM-DD . |
|
End |
Specifies the end date of the override policy. | string | optional | Follows the format: YYYY-MM-DD . |
|
>>>>>> ActiveWeekdays |
Contains the ActiveWeekDay objects. |
object | optional | ||
>>>>>>> ActiveWeekday |
Contains the active week day information, which specify the days when the override policy overwrites other policies. | object | optional | ||
Day |
Specifies the name of the day of the week. | string | optional | Possible values are: Monday , Tuesday , Wednesday , Thursday , Friday , Saturday , and Sunday . |
|
>>>> BookingRules |
Contains the BookingRule objects. |
object | optional | ||
>>>>> BookingRule |
Contains the booking policy information. | object | optional | ||
MinimumAdvancedBookingOffset |
Specifies the minimum amount of time in which a room type must be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | optional | This is the format used: P[0-9]+(Y,M,D,H) . An example is: P5H means the room must be booked before 19:00 on the day before the check-in date. |
|
MaximumAdvancedBookingOffset |
Specifies the maximum amount of time in which a room type can be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | optional | This is the format used: P[0-9]+(Y,M,D,H) . An example is: P14D means the room can be booked a maximum of 14 days before the check-in date. |
|
ReleaseTimeOfDayStart |
Specifies the time of the day the room type can start being booked. | HH:MM | optional | This allows time intervals of 15 minutes starting at midnight. For example: 10:15. | |
ReleaseTimeOfDayEnd |
Specifies the time of the day the room type can no longer be booked. | HH:MM | optional | This allows time intervals of 15 minutes starting at midnight. For example: 18:00. |
Request body example¶
The following is a request body example:
<OTA_HotelProductNotifRQ>
<HotelProducts HotelCode="64231">
<HotelProduct ProductNotifType="New">
<RoomTypes>
<RoomType RoomTypeCode="6423112" />
</RoomTypes>
<RatePlans>
<RatePlan RatePlanCode="12483478" />
</RatePlans>
<ValueAddInclusions>
<MealPlan MealPlanCode="19" />
</ValueAddInclusions>
<PolicyInfo>
<BookingRules>
<BookingRule MinAdvancedBookingOffset="P1D" />
<BookingRule MaxAdvancedBookingOffset="P14D" />
</BookingRules>
<CancelPolicy>
<CancelPenalty PolicyCode="15"/>
</CancelPolicy>
<OverridePolicies>
<OverridePolicy PolicyName="PTT_NON_REFUNDABLE">
<BookDates>
<BookDate Start="2021-06-06" End="2021-06-29"/>
<BookDate Start="2021-07-06" End="2021-07-29"/>
</BookDates>
<ActiveWeekdays>
<ActiveWeekday Day="Friday"/>
<ActiveWeekday Day="Saturday"/>
<ActiveWeekday Day="Sunday"/>
</ActiveWeekdays>
</OverridePolicy>
</OverridePolicies>
</PolicyInfo>
</HotelProduct>
</HotelProducts>
</OTA_HotelProductNotifRQ>
Response body example¶
The following is a successful response body example:
<OTA_HotelProductNotifRS>
<Success />
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YUedwgregreg3/GEVjlG+mTXmB9OkyhGlAKEMxDhfrI] -->
The following is a response body example when the limit of 400 roomrates is reached:
<OTA_HotelProductNotifRS>
<Errors>
<Error Type="10" Code="733" Status="NotProcessed" ShortText="Limit 400 of number of Room/Rate combinations has reached for hotel 64231."/>
</Errors>
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YUedwgregreg3/GEVjlG+mTXmB9OkyhGlAKEMxDhfrIcesvuhxkdje8uY] -->
Response body parameters¶
The following table describes the response elements:
Element | Description | Type | Notes |
---|---|---|---|
OTA_HotelProductNotifRS |
Contains the response data. | object | |
> success |
Indicates the success of the request. | object | |
ruid |
Specifies the unique ID of the request. | string | You can send this ID to Booking.com customer support if you run into an issue. This can help to understand what went wrong. |
Updating a roomrate¶
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif
The POST /ota/OTA_HotelProductNotif
request enables you to update roomrates for your property.
When updating a roomrate, it is very important to do the following:
- Set
InvNotifType
toOverlay
. - Include all existing information: This means you send the roomrate information as if you create a new roomrate, changing the elements you want to update.
→ To retrieve most of your roomrate information, see retrieving roomrates.
→ To retrieve the policy names in the same way as you created them, see the CancelPolicy
elements when retrieving property details.
Requirements for updating a roomrate¶
To create a roomrate on Booking.com, the following basic elements are required:
- Property ID
- Room type ID
- Rate plan ID
Body parameters¶
The following table describes what elements you must add in the request body:
Element | Attribute | Description | Type | Required/Optional | Notes |
---|---|---|---|---|---|
OTA_HotelProductNotifRQ |
Contains the HotelProducts array. |
object | required | ||
> HotelProducts |
Contains the HotelProduct objects. |
array | required | ||
HotelCode |
Specifies the unique ID of the property you create roomrates for. | integer | required | ||
>> HotelProduct |
Contains the roomrate information. | object | required | ||
ProductNotifType |
Specifies whether the request is to create a roomrate (New ) or modify an existing one (Overlay ). |
enum | required | Possible values are New and Overlay . You must use New to create a roomrate. |
|
>>> RoomTypes |
Contains a RoomType object. |
object | required | ||
>>>> RoomType |
Contains the room type information. | object | required | ||
RoomTypeCode |
Specifies the room type id. | integer | required | ||
MaxOccupancy |
Specifies the maximum occupancy of the roomtype. | integer | optional | Note that specifying this value overrides the value set at the time of creating or updating the roomtype. Also, the pricing type of the roomrate is changed to RLO. | |
>>> RatePlans |
Contains a RatePlan object. |
object | required | ||
>>>> RatePlan |
Contains the rate plan information. | object | required | ||
RatePlanCode |
Specifies the rate plan id. | integer | required | ||
>>> ValueAddInclusions |
Contains a MealPlan object. |
object | optional | ||
>>>> MealPlan |
Contains the meal plan information. | object | optional | If you do not include this element, the default is no meal plan included. | |
MealPlanCode |
Specifies the meal plan id. | integer | optional | To see the list of meal plan codes at Booking.com, see meal plan codes. | |
>>> PolicyInfo |
Contains the cancellation and booking policy objects. | object | optional | ||
>>>> CancelPolicy |
Contains the CancelPenalty objects. |
object | optional | ||
>>>>> CancelPenalty |
Contains the policy information. | object | optional | ||
PolicyCode |
Specifies the policy (cancellation and prepayment policy combination) you assign to the roomrate. | integer | optional | To see the list of cancellation and prepaymeny policy codes at Booking.com, see cancellation and prepayment polices. | |
>>>> OverridePolicies |
Contains the OverridePolicy objects. |
object | optional | ||
>>>>> OverridePolicy |
Contains the override policy information, which overwrites other policies set for this roomrate on the dates specified within the object. | object | optional | ||
PolicyName |
Specifies the name of the override policy. | string | optional | ||
>>>>>> BookDates |
Contains the BookDate objects. |
object | optional | ||
>>>>>>> BookDate |
Contains the book date information, which specify the dates when the override policy overwrites other policies. | object | optional | ||
Start |
Specifies the start date of the override policy. | string | optional | Follows the format: YYYY-MM-DD . |
|
End |
Specifies the end date of the override policy. | string | optional | Follows the format: YYYY-MM-DD . |
|
>>>>>> ActiveWeekdays |
Contains the ActiveWeekDay objects. |
object | optional | ||
>>>>>>> ActiveWeekday |
Contains the active week day information, which specify the days when the override policy overwrites other policies. | object | optional | ||
Day |
Specifies the name of the day of the week. | string | optional | Possible values are: Monday , Tuesday , Wednesday , Thursday , Friday , Saturday , and Sunday . |
|
>>>> BookingRules |
Contains the BookingRule objects. |
object | optional | ||
>>>>> BookingRule |
Contains the booking policy information. | object | optional | ||
MinimumAdvancedBookingOffset |
Specifies the minimum amount of time in which a room type must be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | optional | This is the format used: P[0-9]+(Y,M,D,H) . An example is: P5H means the room must be booked before 19:00 on the day before the check-in date. |
|
MaximumAdvancedBookingOffset |
Specifies the maximum amount of time in which a room type can be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | optional | This is the format used: P[0-9]+(Y,M,D,H) . An example is: P14D means the room can be booked a maximum of 14 days before the check-in date. |
|
ReleaseTimeOfDayStart |
Specifies the time of the day the room type can start being booked. | HH:MM | optional | This allows time intervals of 15 minutes starting at midnight. For example: 10:15. | |
ReleaseTimeOfDayEnd |
Specifies the time of the day the room type can no longer be booked. | HH:MM | optional | This allows time intervals of 15 minutes starting at midnight. For example: 18:00. |
Request body example¶
The following is a request body example:
<OTA_HotelProductNotifRQ>
<HotelProducts HotelCode="64231">
<HotelProduct ProductNotifType="Overlay">
<RoomTypes>
<RoomType RoomTypeCode="6423112" />
</RoomTypes>
<RatePlans>
<RatePlan RatePlanCode="12483478" />
</RatePlans>
<ValueAddInclusions>
<MealPlan MealPlanCode="0" />
</ValueAddInclusions>
<PolicyInfo>
<BookingRules>
<BookingRule MinAdvancedBookingOffset="P1D" />
<BookingRule MaxAdvancedBookingOffset="P14D" />
</BookingRules>
<CancelPolicy>
<CancelPenalty PolicyCode="15" />
</CancelPolicy>
<OverridePolicies>
<OverridePolicy PolicyName="PTT_NON_REFUNDABLE">
<BookDates>
<BookDate Start="2021-06-06" End="2021-06-29"/>
<BookDate Start="2021-07-06" End="2021-07-29"/>
</BookDates>
<ActiveWeekdays>
<ActiveWeekday Day="Friday"/>
<ActiveWeekday Day="Saturday"/>
</ActiveWeekdays>
</OverridePolicy>
</OverridePolicies>
</PolicyInfo>
</HotelProduct>
</HotelProducts>
</OTA_HotelProductNotifRQ>
Response body example¶
The following is a successful response body example:
<OTA_HotelProductNotifRS>
<Success />
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YUedwgregreg3/GEVjlG+mTXmB9Owf2f+Kq=Mzyiykpi6Yx5oKzRKEMxDhfrI] -->
Response body parameters¶
The following table describes the response elements:
Element | Description | Type | Notes |
---|---|---|---|
OTA_HotelProductNotifRS |
Contains the response data. | object | |
> success |
Indicates the success of the request. | object | |
ruid |
Specifies the unique ID of the request. | string | You can send this ID to Booking.com customer support if you run into an issue. This can help to understand what went wrong. |
Removing roomrates¶
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif
The POST /ota/OTA_HotelProductNotif
request enables you to remove a roomrate by disconnecting the room type and rate plan.
Requirements for removing a roomrate¶
To remove a roomrate from Booking.com, you only need the following elements:
- Property ID
- Room type ID
- Rate plan ID
You must also set ProductNotifType
to Remove
.
Body parameters¶
The following table describes what elements you must add in the request body:
Element | Attribute | Description | Type | Required/Optional | Notes |
---|---|---|---|---|---|
OTA_HotelProductNotifRQ |
Contains the HotelProducts array. |
object | required | ||
> HotelProducts |
Contains the HotelProduct objects. |
array | required | ||
HotelCode |
Specifies the unique ID of the property you create roomrates for. | integer | required | ||
>> HotelProduct |
Contains the roomrate information. | object | required | ||
ProductNotifType |
Specifies whether the request is to remove a roomrate. | enum | required | Value to remove a roomrate is remove . |
|
>>> RoomTypes |
Contains a RoomType object. |
object | required | ||
>>>> RoomType |
Contains the room type information. | object | required | ||
RatePlanCode |
Specifies the rate plan id. | integer | required | ||
>>> RatePlans |
Contains a RatePlan object. |
object | required | ||
>>>> RatePlan |
Contains the rate plan information. | object | required |
Request body example¶
The following is a request body example:
<OTA_HotelProductNotifRQ>
<HotelProducts HotelCode="64231">
<HotelProduct ProductNotifType="Remove">
<RoomTypes>
<RoomType RoomTypeCode="6423112" />
</RoomTypes>
<RatePlans>
<RatePlan RatePlanCode="12483478" />
</RatePlans>
</HotelProduct>
</HotelProducts>
</OTA_HotelProductNotifRQ>
Response body example¶
The following is a successful response body example:
<OTA_HotelProductNotifRS>
<Success />
</OTA_HotelProductNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YUedwgregreg3/GcBkCkoW0/uhiPmwiL6pcbMzyiykpi6Yx5oKzRKEMxDhfrI] -->
Response body parameters¶
The following table describes the response elements:
Element | Description | Type | Notes |
---|---|---|---|
OTA_HotelProductNotifRS |
Contains the response data. | object | |
> success |
Indicates the success of the request. | object | |
ruid |
Specifies the unique ID of the request. | string | You can send this ID to Booking.com customer support if you run into an issue. This can help to understand what went wrong. |
Retrieving active roomrates¶
Booking.com provides the B.XML endpoint. to retrieve roomrates details.
Schema difference between the OTA and B.XML endpoint's response¶
The following table captures the high-level difference between the two endpoints' responses. However, this is not an exhaustive list.
Elements | Description | Available in OTA | Available in B.XML |
---|---|---|---|
NoShowPolicy |
No show policy details | Yes | No |
room > hotel_name |
Property name | No | Yes |
room > room_name |
Roomtype name | No | Yes |
rate > max_persons |
Roomtype's maximum occupancy count | No | Yes |
room > max_children |
Roomtype's maximum child occupancy count | No | Yes, only available in v 1.0 |
rate > policy |
Cancellation policy name | No | Yes |
rate > rate_name |
Rate plan name | No | Yes |
Same value but in a different name | HotelProduct > ChildRate |
rate > is_child_rate |
|
Same value but in a different name | RoomType > MaxOccupancy |
rate > fixed_occupancy |
|
Difference between the both | GuaranteePayment > EffectiveFrom shows effective from value |
guarantee_payment > policy_code shows cancellation policy code |
Using the B.XML endpoint¶
POST
https://supply-xml.booking.com/hotels/xml/roomrates
The POST /xml/roomrates
request enables you to retrieve active roomrates for a property.
You can retrieve the relevant room type and rate plan IDs.
Remember to use Booking.com IDs while creating availability and not your internal IDs.
You can also use this endpoint to retrieve policy override information for active roomrates.
Header parameter¶
Header | Description | Type | Required/ Optional |
Notes |
---|---|---|---|---|
Accept-Version |
Specify the version number to get the API functionality specific to that version. | string | optional | Supports the following values: - 1.1: New version. - 1.0: Previous version. |
Difference between v1.0 and v1.1¶
With the v1.1 B.XML roomrates endpoint, you can:
- Query roomrate details with or without rewritten rate details.
- Retrieve additional response details like flexible children prices, if they are set.
- See improved latency.
Also, in version v1.1:
- The endpoint returns all responses within the
roomrates
object. - The endpoint doesn't return the
max_children
attribute anymore. - The endpoint doesn't return the redundant
follows_room_rate_properties
attribute in the response while retrieving roomrates with rate relations.
For a complete list of changes, see the migration guide.
Body parameters¶
The following table describes what elements you must add in the request body:
Element | Description | Type | Required/Optional | Notes |
---|---|---|---|---|
request |
Contains the request information. | object | required | |
> hotel_id |
Specifies the unique ID of the property you want to retrieve the active rate plans for. | integer | required | |
> policy_override_start |
Specifies the start of the date range for which you want to retrieve policy override information. | string | optional | |
> policy_override_end |
Specifies the end of the date range for which you want to retrieve policy override information. | string | required if policy_override_start is specified |
Request body example 1¶
The following is a request body example:
<request>
<hotel_id>6314570</hotel_id>
</request>
Request body example 2¶
The following request body example retrieves roomrates that have policy overrides defined:
<request>
<hotel_id>6314570</hotel_id>
<policy_override_start_date>2022-06-26</policy_override_start_date>
<policy_override_end_date>2022-07-25</policy_override_end_date>
</request>
Response body example¶
The following is a successful response body example:
<rooms>
<room id="631457025" hotel_id="6314570" hotel_name="The Tech Western" max_children="0" room_name="Double Room">
<rates>
<rate id="20275653" fixed_occupancy="2" max_persons="4" policy="Special conditions" policy_id="278832781" rate_name="standard rate">
<meal_plan meal_plan_code="0"/>
<policies>
<booking_rules/>
<cancel_policy>
<cancel_penalty policy_code="12"/>
<policy_overrides>
<policy_override start_date="2022-06-25" end_date="2022-07-03" policy_code="12"/>
</policy_overrides>
</cancel_policy>
<guarantee_payment_policy>
<guarantee_payment policy_code="1" effective_from="after_reservation_is_made" required="1"/>
<policy_overrides>
<policy_override start_date="2022-06-26" end_date="2022-07-03" policy_code="after_reservation_is_made"/>
</policy_overrides>
</guarantee_payment_policy>
</policies>
<pricing type="RLO"/>
</rate>
<rate id="21532127" fixed_occupancy="2" max_persons="4" policy="Special conditions" policy_id="278832781" rate_name="Luca rate">
<meal_plan meal_plan_code="0"/>
<policies>
<booking_rules/>
<cancel_policy>
<cancel_penalty policy_code="12"/>
</cancel_policy>
<guarantee_payment_policy>
<guarantee_payment policy_code="1" effective_from="after_reservation_is_made" required="1"/>
</guarantee_payment_policy>
</policies>
<pricing type="RLO"/>
</rate>
</rates>
</room>
</rooms>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YYZJoYkt+i+xKsmop1uLVhmRLuQaFc3IDL0E1x2+zdOWYz2pJVzXOVOEnAQEu+HQ4qzGv3MQ3SGU] -->
Response body parameters¶
The following table describes the response elements:
Element | Attribute | Description | Type | Notes |
---|---|---|---|---|
rooms |
Contains the room objects. |
object | ||
> room |
Contains the room type information. | object | ||
id |
Specifies the unique Booking.com ID of the room type. | integer | ||
hotel_id |
Specifies the unique ID of the property. | integer | ||
hotel_name |
Specifies the name of the property. | string | ||
max_children |
Specifies the maximum number of children allowed in the room type. | integer | ||
room_name |
Specifies the name of the room type. | string | ||
>> rates |
Contains the rate objects. |
object | ||
>>> rate |
Contains the rate plan information. | object | ||
id |
Specifies the unique Booking.com ID of the rate plan. | integer | ||
is_child_rate |
Specifies whether the rate plan has a rate relation with a parent rate plan. | boolean | Possible value: 1 (Yes, rate plan is a child rate plan) |
|
fixed_occupancy |
Only applicable for derived pricing types (RLO). Shows the maximum number of occupants specified when creating or updating a roomrate. |
integer | This value can be different from the max_persons value set while creating the roomtype. | |
max_persons |
Specifies the maximum number of adults allowed in the room type. | integer | ||
policy |
Specifies the name of the policy. | string | ||
policy_id |
Specifies the unique ID of the policy. | integer | ||
rate_name |
Specifies the name of the rate plan. | string | ||
>>>> meal_plan |
Contains the meal plan information. | object | ||
meal_plan_code |
Specifies the meal plan ID. | integer | To see the list of meal plan codes at Booking.com, see meal plan codes. | |
>>>> policies |
Contains the cancellation policy details. | object | ||
>>>>> booking_rules |
Contains the BookingRule objects. |
object | ||
>>>>>> booking_rule |
Contains the booking policy information. | object | ||
min_advanced_booking_offset |
Specifies the minimum amount of time in which a room type must be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | This is the format used: P[0-9]+(Y,M,D,H) . An example is: P5H means the room must be booked before 19:00 on the day before the check-in date. |
|
max_advanced_booking_offset |
Specifies the maximum amount of time in which a room type can be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | This is the format used: P[0-9]+(Y,M,D,H) . An example is: P14D means the room can be booked a maximum of 14 days before the check-in date. |
|
>>>> cancel_policy |
Contains the CancelPenalty object. |
object | ||
>>>>> cancel_penalty |
Contains the policy information. | object | ||
policy_code |
Specifies the cancellation policy code. | integer | For a full list of all the available cancellation codes, see the cancellation policy codes. | |
>>>>>>> policy_overrides |
Contains the policy override elements. | object | ||
>>>>>>>> policy_override |
Contains a policy override element. | object | ||
start_date |
Specifies the start date of the override policy. | string | Follows the format: YYYY-MM-DD . |
|
end_date |
Specifies the end date of the override policy. | string | Follows the format: YYYY-MM-DD . |
|
policy_code |
Specifies the cancellation policy (override) code. | integer | To see the list of cancellation and prepayment policy codes at Booking.com, see cancellation and prepayment policies. | |
>>>> guarantee_payment_policy |
Contains the guarantee payment details. | object | ||
>>>>> guarantee_payment |
Contains the guarantee payment details. | object | ||
policy_code |
Specifies the cancellation policy code that has the guarantee payment details. | integer | For a full list of all the available cancellation codes, see the cancellation policy codes. | |
effective_from |
Specifies when the guarantee payment is charged. | enumerated string | Possible values are: - after_reservation_is_made - Enforces guests to make a payment immediately after reservation. - after_cancellation_fee_begins : Enforces guests to make a payment after the free cancellation window has closed. |
|
required |
Specifies whether a guarantee payment is mandatory. | boolean | Possible values are: - 1 : Guarantee payment required - 0 : Guarantee payment is not required |
|
>>>> pricing |
Contains the pricing details. | object | Only available when you enable the feature: Include products extra info ( include_extra_info_room_rates ) using the Provider portal. |
|
type |
Specifies the pricing type. | enumerated string | Possible values are: - Standard - RLO - OBP - LOS |
|
price1 |
Specifies whether the roomrate accepts a single occupancy price. | boolean | Possible values are: 1 - Accepts single occupancy price 0 - Does not support single occupancy price. |
|
>>>> rate_relation |
If the rate plan is a child of a parent rate plan, then this object contains information on the inherited rate attributes. | object | ||
follows_closed |
Indicates whether the rate relation follows the status of the parent rate plan. | boolean | Possible values: - 0 : Never follows parent rate plan status, - 1 : Follows parent status when parent rate plan is open, - 2 : Follows parent status when parent rate plan is closed, and - 3 : Always follows parent rate plan status. Default: 3 . |
|
follows_room_rate_properties |
Introduced for legacy support. You can ignore this parameter. | boolean | ||
follows_restrictions |
Indicates whether the rate relation follows the restrictions of the parent rate plan. | boolean | Possible values: 0 and 1 (Follows parent rate plan). Default: 1 |
|
follows_policygroup_id |
Indicates whether the rate relation follows the policies of the parent rate plan. | boolean | Possible values: 0 and 1 (Follows parent rate plan). Default: 1 |
|
follows_price |
Indicates whether the rate relation follows the price of the parent rate plan. | boolean | Possible values: 0 and 1 (Follows parent rate plan). Default: 1 |
|
parent_rate_id |
Specifies the rate plan ID of the parent rate plan | string | ||
percentage |
Specifies the percentage in relation to the price connected to the parent rate plan. | integer | Minimum value: 1 . Maximum value: 200 . For example, 80 refers to a 20% discount, while 120 refers to a 20% surplus. |
|
>>>>> occupancy |
Contains the occupancy details. | object | ||
persons |
Specifies the number of occupants. | integer | ||
percentage /additional |
Specifies the pricing as a percentage of the base price or as an additional amount from the base price. | integer | For example, if the base price is 200 and the price for 2 occupants is specified as a percentage = 95, then the price for 2 is 90. (95% of 200). Whereas, an additional = -15 , means the price for 2 occupants is 185. |
|
round |
Specifies whether the pricing is rounded down to two digits. Possible values are: - 0 : not rounded down - 1: Rounded down to two digits |
enumerated string | ||
ruid |
Specifies the unique ID of the request. | string | You can send this ID to Booking.com customer support if you run into an issue. This can help to understand what went wrong. |
To retrieve roomrates using the OTA endpoint, click here.
Using the OTA endpoint¶
GET
https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif
The GET OTA_HotelProductNotif
request enables you to retrieve active roomrates for a property.
You can retrieve the relevant room type and rate plan IDs.
Remember to use Booking.com IDs while creating availability and not your internal IDs.
You can also use this endpoint to retrieve policy override information for active roomrates.
Query parameters¶
The following table describes the elements you can add in the query:
Element | Description | Type | Required/Optional | Notes |
---|---|---|---|---|
HotelCode |
Specifies the unique ID of the property you want to retrieve the active rate plans for. | integer | required | |
OverridePolicyStart |
Specifies the start of the date range for which you want to retrieve policy override information. | string | optional | Follows the format (YYYY-MM-DD). |
OverridePolicyEnd |
Specifies the end of the date range for which you want to retrieve policy override information. | string | Required if OverridePolicyStart is specified |
Follows the format (YYYY-MM-DD). |
IncludeReadOnly |
Include roomrates that are read-only from the API. You cannot modify the read-only roomrates using the API. You can edit them only by using the Booking.com Extranet. | boolean | optional | Specify: 1 - Include read-only roomrates, 0 - Exclude read-only roomrates (default) |
SupportRateRewrite |
If set, then the API skips rates that have been rewritten to another rate. | boolean | optional | Specify: 1 - Skip rewritten roomrates, 0 - Include rewritten roomrates (default) |
Query parameter example¶
The following is a query parameter example:
https://supply-xml.booking.com/hotels/ota/OTA_HotelProductNotif?HotelCode=123&IncludeReadOnly=1&OverridePolicyStart=2023-03-01&OverridePolicyEnd=2023-04-01&SupportRateRewrite=0
Response body example¶
The following is a successful response body example:
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelProductNotifRS>
<HotelProducts HotelCode="1">
<HotelProduct ReadOnly="true" ChildRate="true">
<RoomTypes>
<RoomType RoomTypeCode="2" MaxOccupancy="5" />
</RoomTypes>
<RatePlans>
<RatePlan RatePlanCode="11" />
</RatePlans>
<ValueAddInclusions>
<MealPlan MealPlanCode="0" />
</ValueAddInclusions>
<PolicyInfo>
<BookingRules>
<BookingRule MinAdvancedBookingOffset="P10D" />
<BookingRule MaxAdvancedBookingOffset="P10D1H" />
<BookingRule ReleaseTimeOfDayStart="1" />
<BookingRule ReleaseTimeOfDayEnd="2" />
</BookingRules>
<CancelPolicy>
<CancelPenalty PolicyId="325235" PolicyName="general" PolicyCode="222" />
<TPA_Extensions>
<NoShowPolicy Penalty="default"/>
</TPA_Extensions>
</CancelPolicy>
<GuaranteePaymentPolicy>
<GuaranteePayment EffectiveFrom="after_cancellation_fee_begins" PrePaymentRequired="true" />
</GuaranteePaymentPolicy>
<OverridePolicies>
<OverridePolicy PolicyId="333" PolicyName="override1">
<BookDates>
<BookDate Start="2023-01-01" End="2023-01-02" />
</BookDates>
</OverridePolicy>
<OverridePolicy PolicyId="444" PolicyName="override2">
<BookDates>
<BookDate Start="2023-01-03" End="2023-01-04" />
</BookDates>
</OverridePolicy>
</OverridePolicies>
</PolicyInfo>
<TPA_Extensions>
<PricingType Value="RLO" Price1="false">
<Occupancy MaxAdultOccupancy="1" Round="true" Percent="25.9" />
<Occupancy MaxAdultOccupancy="2" Round="false" Amount="25.0" />
</PricingType>
<RateRelation FollowsRestrictions="true" Percent="55.2" FollowsPolicy="true" FollowsPrice="false" ParentRatePlanCode="12" FollowsClosed="2" />
</TPA_Extensions>
<AdditionalGuestAmounts>
<AdditionalGuestAmount AdditionalGuestNumber="0" MinAge="0" AgeBucketID="1" Amount="10.0" MaxAge="3" AgeQualifyingCode="8" />
<AdditionalGuestAmount AdditionalGuestNumber="1" MinAge="4" AgeBucketID="2" Percent="50.0" MaxAge="12" AgeQualifyingCode="8" />
</AdditionalGuestAmounts>
</HotelProduct>
</HotelProducts>
</OTA_HotelProductNotifRS>
<!-- RUID: [Z104215yh9YeXU9U0vxS7qEshGUqEDsuqNgPguHj+W/wiXPORW30Rmu5Qyp2=] -->
Response body parameters¶
The following table describes the response elements:
Element | Attribute | Description | Type | Notes |
---|---|---|---|---|
OTA_HotelProductNotifRS |
Contains the response data. | object | ||
> HotelProducts |
Contains the roomrates details for a property. | object | ||
HotelCode |
Specifies the unique ID of the property. | integer | ||
>> HotelProduct |
Contains more information about the roomrate. | object | ||
ReadOnly |
Specifies whether the rate plan is read only. | boolean | You can set the ReadOnly property only through the Extranet. | |
ChildRate |
Specifies whether the rate plan has a rate relation with a parent rate plan. If true then you will find a RateRelation element in the object. |
boolean | ||
>>> RoomTypes |
Contains the roomtype information | object | ||
RoomTypeCode |
Specifies the unique Booking.com ID of the room type. | integer | ||
MaxOccupancy |
Specifies the maximum number of adults allowed in the room type. | integer | ||
>>> RatePlans |
Contains rate plan information | object | ||
>>>> RatePlan |
Contains individual rate plan information | object | ||
RatePlanCode |
Specifies the unique Booking.com ID of the rate plan. | integer | ||
>>> ValueAddInclusions |
Contains meal plan details | object | ||
>>>> MealPlan |
Contains the meal plan information. | object | ||
MealPlanCode |
Specifies the meal plan ID. | integer | To see the list of meal plan codes at Booking.com, see meal plan codes. | |
>>> PolicyInfo |
Contains cancellation and prepayment policy details | object | ||
>>>> BookingRules |
Contains the BookingRule objects. |
object | ||
>>>>> BookingRule |
Contains the booking policy information. | object | ||
MinAdvancedBookingOffset |
Specifies the minimum amount of time in which a room type must be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | This is the format used: P[0-9]+(Y,M,D,H) . An example is: P5H means the room must be booked before 19:00 on the day before the check-in date. |
|
MaxAdvancedBookingOffset |
Specifies the maximum amount of time in which a room type can be booked relative to midnight (24:00 CE(S)T) of the check-in date start. | string | This is the format used: P[0-9]+(Y,M,D,H) . An example is: P14D means the room can be booked a maximum of 14 days before the check-in date. |
|
ReleaseTimeOfDayStart |
string | |||
ReleaseTimeOfDayEnd |
string | |||
>>>> CancelPenalty |
Contains individual cancellation and prepayment policy details | object | ||
PolicyCode |
Specifies the cancellation penalty code. | integer | ||
PolicyId |
Specifies the unique ID of the policy. | integer | ||
PolicyName |
Specifies the name of the policy. | string | ||
>>>>> TPA_Extensions |
Contains the no show information. | object | ||
>>>>>> NoShowPolicy |
Contains the no show penalty details. | object | ||
Penalty |
Specifies the penalty charged in case the guest does not turn up for the reservation. | enumerated string | Possible values are: - default : Use if you want the no show penalty to follow the cancellation fee. - total_price : Use if you want the no show penalty to equal the total reservation price. |
|
>>>> GuaranteePaymentPolicy |
Contains the guarantee payment details. | object | ||
>>>>> GuaranteePayment |
Contains the guarantee payment details. | object | ||
EffectiveFrom |
Specifies when the guarantee payment is charged. | enumerated string | Possible values are: - after_reservation_is_made - Enforces guests to make a payment immediately after reservation. - after_cancellation_fee_begins : Enforces guests to make a payment after the free cancellation window has closed. |
|
PrePaymentRequired |
Specifies whether a guarantee payment is mandatory. | boolean | Possible values are: - true : Guarantee payment required - false : Guarantee payment is not required |
|
>>>> OverridePolicies |
Contains the policy override elements. | object | ||
>>>>> OverridePolicy |
Contains a policy override element. | object | ||
PolicyCode |
Specifies the cancellation policy (override) code. | integer | To see the list of cancellation and prepayment policy codes at Booking.com, see cancellation and prepayment policies. | |
>>>>>> BookDates |
Contains the BookDate object. | object | ||
>>>>>> BookDate |
Contains the overriding date. | object | ||
Start |
Specifies the start date of the override policy. | string | Follows the format: YYYY-MM-DD . |
|
End |
Specifies the end date of the override policy. | string | Follows the format: YYYY-MM-DD . |
|
>>> TPA_Extensions |
Contains pricing type information. | object | ||
>>>> PricingType |
Contains the pricing and occupancy details. | object | Only available when you enable the feature: Include products extra info ( include_extra_info_room_rates ) using the Provider portal. |
|
Value |
Specifies the pricing type. | enumerated string | Possible values are: - Standard - RLO - OBP - LOS |
|
Price1 |
Specifies whether the roomrate accepts a single occupancy price. | boolean | Possible values are: true - Accepts single occupancy price false - Does not support single occupancy price. |
|
>>>>> Occupancy |
Contains the maximum occupancy details specified while creating derived pricing. | object | For more information on how to set derived pricing, see [Create or update derived pricing rates.][b_xml-derivedprices] | |
MaxAdultOccupancy |
Specifies the maximum number of occupants allowed to stay for this rate. | integer | ||
Percent /Amount |
Specifies the pricing as a percentage of the base price or as an additional amount from the base price. | integer | For example, if the base price is 200 and the price for 2 occupants is specified as a percentage = 95, then the price for 2 is 90. (95% of 200). Whereas, an additional = -15 , means the price for 2 occupants is 185. |
|
Round |
Specifies whether the pricing is rounded down to two digits. Possible values are: - 0 : not rounded down - 1: Rounded down to two digits |
enumerated string | ||
>>>> RateRelation |
If the rate plan is a child of a parent rate plan, then this object contains information on the inherited rate attributes. | object | ||
FollowsClosed |
Indicates whether the rate relation follows the status of the parent rate plan. | boolean | Possible values: - 0 : Never follows parent rate plan status, - 1 : Follows parent status when parent rate plan is open, - 2 : Follows parent status when parent rate plan is closed, and - 3 : Always follows parent rate plan status. Default: 3 . |
|
FollowsRestrictions |
Indicates whether the rate relation follows the restrictions of the parent rate plan. | boolean | Possible values: true and false (Follows parent rate plan). Default: true |
|
FollowsPolicy |
Indicates whether the rate relation follows the policies of the parent rate plan. | boolean | Possible values: true and false (Follows parent rate plan). Default: true |
|
FollowsPrice |
Indicates whether the rate relation follows the price of the parent rate plan. | boolean | Possible values: true and false (Follows parent rate plan). Default: true |
|
ParentRatePlanCode |
Specifies the rate plan ID of the parent rate plan | string | ||
Percent |
Specifies the percentage in relation to the price connected to the parent rate plan. | integer | Minimum value: 1 . Maximum value: 200 . For example, 80 refers to a 20% discount, while 120 refers to a 20% surplus. |
|
>>> AdditionalGuestAmounts |
Contains the AdditionalGuestAmount elements. |
array | ||
>>>> AdditionalGuestAmount |
Contains the children pricing details. | object | ||
AgeQualifyingCode |
Specifies that the prices are for children. | integer | You must use 8 to signal that the prices are for children only. Note that you cannot set adult prices here, but only within the BaseByGuestAmts object (see example). |
|
AgeBucketID |
Specifies the ID of the property-level age bucket. | integer | You must either use AgeBucketID or MinAge with MaxAge . However, the MinAge to MaxAge age range must match an existing age bucket age range. |
|
MinAge |
Specifies the beginning of an age range. | integer | You must either use AgeBucketID or MinAge with MaxAge . However, the MinAge to MaxAge age range must match an existing age bucket age range. |
|
MaxAge |
Specifies the end of an age range and is inclusive. | integer | You must either use AgeBucketID or MinAge with MaxAge . However, the MinAge to MaxAge age range must match an existing age bucket age range. |
|
Amount |
Specifies the price for a child within a certain age bucket. | integer | The price cannot exceed the adult price for the roomrate. You must use either Amount and DecimalPlaces , or Percent alone. |
|
DecimalPlaces |
Specifies the number of decimal places to apply to Amount . |
integer | The default value is 0 , which means the value of Amount is without a decimal point. |
|
Amount |
Specifies the price for a child within a certain age bucket. | integer | The price cannot exceed the adult price for the roomrate. You must use either Amount and DecimalPlaces , or Percent alone. |
|
Percent |
Specifies the price for the child as a percentage of the adult price. | integer | Possible value between 0 and 100 . You must use either Amount and DecimalPlaces , or Percent alone. |
|
AdditionalGuestNumber |
Specifies the order of prices within the same age bucket. | integer | This means that you can set different prices per child within the same age bucket age range. For example: Price for 1 (first child) is 5000, while the price for 2 (second child) is 2500, and 3 (third child) is free (0 ). Default value is 0 , meaning all prices are the same for children in the specified age bucket. |
|
RUID |
Specifies the unique ID of the request. | string | You can send this ID to Booking.com customer support if you run into an issue. This can help to understand what went wrong. |