The API functionality is in closed beta phase. Currently, the closed beta is available only for select providers. Make sure to direct any questions during the beta phase to your Booking.com contact person via the appropriate channels.
Managing business models
You can sell room inventory on Booking.com by choosing from the following two business models:
- commission model (default)
- net rate model (new)
In the future, we plan to roll out more business models to support different selling strategies.
Difference between the Commission rate and Net rate model
This section outlines the difference between the two models. Properties typically engage with Online Travel Agencies (OTAs) using one or both of these models to sell their room inventory.
| Features | commission model | Net rate model | Description |
|---|---|---|---|
| Commission-based | Yes | No | In this model, the property sets the price, and the OTA retains a percentage of the booking value as a commission. |
| Property provides a rate to the OTA | Yes | Yes | In this model, although the property provides a 'net rate' to the OTA, the OTA then adds its own margin to determine the final price presented to the guests. |
Supported actions
This section outlines the actions you can perform once a property has signed up for a business model.
- Query business models available for a property
- Attach business model to a rate plan
- Query business model attached to a rate plan
- Query business model information when viewing roomrate
- See business model information for a reservation
Query property business models
Use the business_models/properties endpoint to retrieve the eligible business models available for a property or a group of properties.
You can specify one of the following query parameters:
property_id: The ID of the property. You can also specify multiple property IDs separated by commas. Do not specify this parameter if you specify the property's business model ID. If both are specified, theproperty_business_model_idtakes precedence. The endpoint ignores theproperty_idparameter.property_business_model_id: The ID of the property's business model. Do not specify this parameter if you specify the property ID. If both are specified, theproperty_business_model_idtakes precedence. The endpoint ignores theproperty_idparameter.business_model: The type of business model.
When adding multiple property IDs, make sure to not exceed the URL length limit of 2048 characters. This roughly translates to 280-300 properties per request. Exceeding this limit returns a HTTP 500 error.
GET
https://supply-xml.booking.com/business_models/properties?property_id={{property_id}}&property_business_model_id={{property_business_model_id}}&business_model={{business_model}}Query parameters
The following table describes the elements you can specify in the query:
| Element | Description | Type | Required/ Optional | Notes |
|---|---|---|---|---|
property_id | Specifies the unique ID of the property. | integer | required | Optional if property_business_model_id is specified. |
property_business_model_id | Specifies the unique ID of the property's business model. | integer | required | Optional if property_id is specified. |
business_model | Specifies the type of business model. | enumerated string | optional | Possible values are:
|
Response body elements
The following table describes the response elements:
| Element | Description | Type | Notes |
|---|---|---|---|
data | Root element | object | |
property_id | Specifies the unique ID of the property. | integer | - |
property_business_model_id | Specifies the unique ID of the property's business model. | integer | - |
business_model | Specifies the type of business model. | enumerated string | Possible values are:
|
attributes | Specifies the attributes of the business model. | object | - |
> is_net | Specifies whether the business model is a net rate model. | boolean | - |
warnings | Contains any warnings in the response. | object | - |
errors | Contains any errors in the response. | object | - |
meta | Contains metadata information about the response. | object | - |
> ruid | Specifies the unique request ID. | string | You can share this ID with Booking.com customer support when you run into an issue. This can help in understanding what went wrong. |
Response body
The following is a sample response body:
{
"data": [
{
"attributes": {
"is_net": false
},
"property_business_model_id": 5780556,
"business_model": "commission_rate",
"property_id": 8011855
}
],
"meta": {
"ruid": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
},
"errors": []
}Attach business model to a rate plan
Use the v1.1 OTA_HotelRatePlanNotif endpoint to attach a business model when creating a rate plan.
Following are few important considerations to note:
- You can specify a business model only when creating a rate plan, and cannot change it later.
- Make sure to use the v1.1
OTA_HotelRatePlanNotifendpoint when attaching a business model. - You cannot update a rate plan to specify a business model. Alternatively, you cannot change the business model of a rate plan after it is created.
- While creating a roomrate using a rate plan with the net rate model, you must specify a non-refundable cancellation policy.
This section only covers information related to specifying the business model using the OTA_HotelRatePlanNotif endpoint. For more information on the rate plan and all the available request and response elements, see Managing rate plans.
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelRatePlanNotifHeader parameter
| Header | Description | Type | Required/ Optional | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | optional | Currently supports the following versions: - 1.1 (New version) - 1.0 Soon to be deprecated. |
Request body parameters
The following table describes the elements you must add in the request body specific to the business model change. For all related fields see the OTA_HotelRatePlanNotif endpoint documentation.
| Element | Attribute | Description | Type | Required/Optional | Notes |
|---|---|---|---|---|---|
OTA_HotelRatePlanNotifRQ | Contains the RatePlans array. | object | required | ||
> Rateplans | Contains the RatePlan objects. | array | required | ||
HotelCode | Specifies the unique ID of the property you update rate plans for. | integer | required | ||
>> RatePlan | Contains a Description object, which contains the name of the rate plan. | object | required | ||
>>> BusinessModel | Contains the business model details. | object | optional | ||
PropertyBusinessModelId | Specifies the business model ID. | integer | optional | ||
BusinessModel | Specifies the business model name. | enumerated string | optional | Default value: commission_rate |
Request body
The following request body example attaches a business model to a rate plan.
<OTA_HotelRatePlanNotifRQ>
<RatePlans HotelCode="6314570">
<RatePlan RatePlanNotifType="New" RatePlanID="123456">
<Description Name="Summer Rate" />
<BusinessModel PropertyBusinessModelId="12345" BusinessModel=“net_rate”/>
</RatePlan>
</RatePlans>
</OTA_HotelRatePlanNotifRQ>Response body
The following is a sample response body:
<?xml version='1.0' encoding='UTF-8'?>
<OTA_HotelRatePlanNotifRS xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRateAmountNotifRS.xsd" Target="Production" Version="3.000">
<RatePlanCrossRefs>
<RatePlanCrossRef RequestRatePlanCode="123456" ResponseRatePlanCode="58900005"/>
</RatePlanCrossRefs>
<Success/>
</OTA_HotelRatePlanNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX] -->
Query business model attached to a rate plan
Run the v1.2 POST /xml/rates endpoint, to query business model attached to the rate plan, in addition to retrieving rate plans for a property.
This section covers only the information related to retrieving the business model along with the rate plan details. For more information on retrieving rate plans, see Retrieving rate plans.
POST https://supply-xml.booking.com/hotels/xml/ratesRequest body
The following request body example retrieves all rate plans.
<request>
<hotel_id>6314570</hotel_id>
<show_rates_status>1</show_rates_status>
</request>Response body
The following is a sample response body:
<rates>
<rate id="18045111" active="1" hotel_id="6314570" hotel_name="The Tech W" property_business_model_id='12345' business_model= “net_rate” />Non-refundable rate</rate>
<rate id="19454895" active="1" hotel_id="6314570" hotel_name="The Tech W" property_business_model_id='12345' business_model= “net_rate”/>Fully flexible</rate>
<rate id="20275653" active="0" hotel_id="6314570" hotel_name="The Tech W" property_business_model_id='12345' business_model= “net_rate”/>Standard rate</rate>
</rates>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX] -->Response body parameters
The following table describes the response elements:
| Element | Attribute | Description | Type | Notes |
|---|---|---|---|---|
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 | ||
active | Indicates whether the rate plan is active or deactivated. | boolean | Possible values are: 1 (active) and 0 (deactivated) | |
hotel_id | Specifies the unique ID of the property you retrieved the rate plans for. | integer | ||
hotel_name | Specifies the name of the property you retrieved the rate plans for. | 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) | |
property_business_model_id | Specifies the business model ID. | integer | ||
business_model | Specifies the business model name. | enumerated string | Possible values are:
| |
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. |
Query business model information when viewing roomrate
You can use one of the following endpoints to retrieve the business model inherited by the roomrate:
- The v1.3 of the
GET OTA_HotelProductNotifendpoint - The v1.2
/hotels/xml/roomratesendpoint.
Note that you cannot attach a business model to a roomrate. The business model that is attached to the roomrate is inherited from the rate plan.
This section covers only the information related to retrieving the business model along with the roomrates details. For more information, see the respective endpoint documentation:
Using v1.3 of the OTA_HotelProductNotif endpoint
This section provides information about using the v1.3 of the GET OTA_HotelProductNotif endpoint to retrieve the business model inherited by the roomrate.
Response body parameters
The following is a sample response body:
<?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" PropertyBusinessModelId='12345' BusinessModel=“net_rate”/>
</RatePlans>
<ValueAddInclusions>
<MealPlan MealPlanCode="0" />
</ValueAddInclusions>
<PolicyInfo>
<BookingRules>
<BookingRule MinAdvancedBookingOffset="P10D" />
</BookingRules>
<CancelPolicy>
<CancelPenalty PolicyId="325235" PolicyName="general" PolicyCode="222" />
</CancelPolicy>
<GuaranteePaymentPolicy>
<GuaranteePayment EffectiveFrom="after_cancellation_fee_begins" PrePaymentRequired="true" />
</GuaranteePaymentPolicy>
</PolicyInfo>
<ValueAddedServices Name="additional package">
<ValueAddedService serviceId="21" />
</ValueAddedServices>
</HotelProduct>
</HotelProducts>
</OTA_HotelProductNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX] -->Response body parameters
The following table provides a snippet of the response elements to show the business model parameters. For a complete list of response parameters, see the GET OTA_HotelProductNotif documentation.
| 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 | ||
PropertyBusinessModelId | Specifies the business model ID unique to the property. | integer | ||
BusinessModel | Specifies the business model name. | enumerated string | Possible values are:
|
Using v1.4 of the /hotels/xml/roomrates endpoint
This section provides information about using the v1.4 of the POST /hotels/xml/roomrates endpoint to retrieve the business model inherited by the roomrate.
Response body parameters
The following is a sample response body:
<?xml version='1.0' encoding='UTF-8' ?>
<roomrates>
<rooms>
<room id="801185509" hotel_id="8011855" hotel_name="HillTop Hotel" room_name="Penthouse Apartment">
<rates>
<rate id="25278032" max_persons="7" policy="General" policy_id="341337682" rate_name="summer rate" fixed_occupancy="2" property_business_model_id='12345' business_model= “net_rate”/>
<meal_plan meal_plan_code="10" />
<policies>
<booking_rules>
<booking_rule min_advanced_booking_offset="P1D" />
</booking_rules>
<cancel_policy>
<cancel_penalty policy_code="62" />
<policy_overrides>
<policy_override start_date="2024-01-16" end_date="2024-02-23" policy_code="12" />
</policy_overrides>
</cancel_policy>
</policies>
</rate>
</rates>
</room>
</rooms>
</roomrates>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX] -->Response body parameters
The following table provides a snippet of the response elements to show the business model parameters. For a complete list of response parameters, see the POST /xml/roomrates documentation.
| Element | Attribute | Description | Type | Notes |
|---|---|---|---|---|
roomrates | Contains the response details of the roomrate. | object | ||
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 | ||
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)][derived-pricing-type]. 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][creating-a-room-type]. | |
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 | ||
property_business_model_id | Specifies the business model ID unique to the property. | integer | ||
business_model | Specifies the business model name. | enumerated string | Possible values are:
|