Use the availability endpoint to:
- Set adult prices by specifying room type, rate plan and date.
- Set prices for children by specifying room type, rate plan and date. Check flexible children rates.
Booking.com supports different pricing models. Ensure you're using the correct pricing approach for your property For more information on pricing models, see Pricing Models.
- Specify availability in advance: Provide availability for at least 12 months ahead.
- Use Delta Updates Only: Send only changes using the roomRateAvailability API, not full refreshes.
- Single Hotel Per Request: All updates must belong to one hotel only.
- Monthly Batching: Break down updates by month: one month per request.
- Room-Rate Grouping: Multiple room-rates can be grouped in the same request for the same hotel and month.
POST https://supply-xml.booking.com/hotels/ota/OTA_HotelRateAmountNotif| Header | Description | Type | Required | Notes |
|---|---|---|---|---|
Accept-Version | Specify the version number to get the API functionality specific to that version. | string | Required | Supports the following values: - 1.1: Current version (default) |
Content-Type | Request content type | string | Required | Must be application/xml |
| Element | Attribute | Description | Type | Required | Notes |
|---|---|---|---|---|---|
OTA_HotelRateAmountNotifRQ | Root element for rate update requests | object | Required | - | |
> RateAmountMessages | Container for one or more rate updates | object | Required | - | |
>> RateAmountMessage | Contains details about a specific rate update | object | Required | - | |
>>> StatusApplicationControl | Defines which room, rate, and dates to update | object | Required | - | |
Start | Start date for the update period | date | Required | Format: YYYY-MM-DD (inclusive). Supports dates from 1 day in the past (follows Central European Time (CET) timezone) and up to 5 years in future | |
End | End date for the update period | date | Required | Format: YYYY-MM-DD (inclusive). Supports dates from 1 day in the past (follows Central European Time (CET) timezone) and up to 5 years in future | |
RatePlanCode | The Booking.com rate plan ID | string | Required | - | |
InvTypeCode | The Booking.com room type ID | string | Required | - | |
Mon | Apply to Mondays | boolean | Optional | Default: true. See day of week behavior | |
Tue | Apply to Tuesdays | boolean | Optional | Default: true. See day of week behavior | |
Wed | Apply to Wednesdays | boolean | Optional | Default: true. See day of week behavior | |
Thu | Apply to Thursdays | boolean | Optional | Default: true. See day of week behavior | |
Fri | Apply to Fridays | boolean | Optional | Default: true. See day of week behavior | |
Sat | Apply to Saturdays | boolean | Optional | Default: true. See day of week behavior | |
Sun | Apply to Sundays | boolean | Optional | Default: true. See day of week behavior | |
>>> Rates | Container for rate pricing information | object | Optional | - | |
>>>> Rate | Contains pricing details | object | Conditional | Required when Rates element is specified | |
>>>>> BaseByGuestAmts | Container for base pricing by guest count | object | Optional | - | |
>>>>>> BaseByGuestAmt | Specifies the price for the room | object | Conditional | Required when BaseByGuestAmts element is specified | |
AmountAfterTax | Price including all taxes | decimal | Conditional* | Mutually exclusive with AmountBeforeTax. Use when room has both "Including VAT" and "Including taxes" enabled. 0 means room/rate/date is not available | |
AmountBeforeTax | Price before taxes | decimal | Conditional* | Mutually exclusive with AmountAfterTax. Use when room doesn't have both tax settings enabled. 0 means room/rate/date is not available | |
DecimalPlaces | Number of decimal places | integer | Optional | Example: 8550 with DecimalPlaces="2" represents 85.50 | |
NumberOfGuests | Specifies the prices for number of occupants (adults and children that are priced as adults). | integer | Optional | Set to 1 for single occupancy pricing. Maximum value is the room maximum adult occupancy. Used only for OBP pricing model and LOS pricing model. Verify you're using the correct pricing model | |
CurrencyCode | ISO 4217 currency code | string | Required | Must match the hotel's configured currency on Booking.com |
The following example updates prices for two different rate plans on the same room type:
- Sets price for room (id=801185512) and rate (id=25278032) to €38.00 for 4 guests on Sundays only from November 19 to December 20, 2023
- Sets price for room (id=801185512) and rate (id=25278036) to €55.00 per night for all days from November 19 to December 20, 2023
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.opentravel.org/OTA/2003/05"
xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRateAmountNotifRQ.xsd"
TimeStamp="2023-11-12T11:34:05"
Version="3.000">
<RateAmountMessages>
<RateAmountMessage LocatorID="1">
<StatusApplicationControl
Mon="false"
Tue="false"
Wed="false"
Thu="false"
Fri="false"
Sat="false"
Sun="true"
Start="2023-11-19"
End="2023-12-20"
RatePlanCode="25278032"
InvTypeCode="801185512" />
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt
AmountBeforeTax="3800"
DecimalPlaces="2"
NumberOfGuests="4"
CurrencyCode="EUR" />
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
<RateAmountMessage LocatorID="2">
<StatusApplicationControl
Start="2023-11-19"
End="2023-12-20"
RatePlanCode="25278036"
InvTypeCode="801185512"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt
AmountAfterTax="5500"
DecimalPlaces="2"
CurrencyCode="EUR"/>
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ><?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRQ
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.opentravel.org/OTA/2003/05"
xsi:schemaLocation="http://www.opentravel.org/OTA/2003/05 OTA_HotelRateAmountNotifRQ.xsd"
TimeStamp="2024-01-15T10:30:05"
Version="3.000">
<RateAmountMessages>
<RateAmountMessage LocatorID="1">
<StatusApplicationControl
Start="2024-02-01"
End="2024-02-29"
RatePlanCode="1278606"
InvTypeCode="36745604"/>
<Rates>
<Rate>
<BaseByGuestAmts>
<BaseByGuestAmt
AmountAfterTax="3800"
DecimalPlaces="2"
NumberOfGuests="1"
CurrencyCode="EUR"/>
</BaseByGuestAmts>
</Rate>
</Rates>
</RateAmountMessage>
</RateAmountMessages>
</OTA_HotelRateAmountNotifRQ>| Element | Attribute | Description | Type | Notes |
|---|---|---|---|---|
OTA_HotelRateAmountNotifRS | Root element. | object | - | |
> Success | Indicates a successful request. | object | Only returned if there are no Errors elements. | |
> Warnings | Groups a list of individual warnings. | object | - | |
>> Warning | List details of individual warnings. | object | Warnings can occur even if the response contains Success. | |
Code | Returns an error code for an error. | string | See Troubleshooting availability error responses | |
Details | Contains additional context about where the warning occurred. | string | May include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the warning. | |
ShortText | Warning message. | string | - | |
> Errors | Groups a list of individual errors. | object | - | |
>> Error | List details of individual errors. | object | - | |
Code | Returns an error code for an error. | string | See Troubleshooting availability error responses | |
Details | Contains additional context about where the error occurred. | string | May include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the error. | |
ShortText | Error message. | string | - |
This section contains examples of successful and unsuccessful responses. For a detailed description of all possible errors and warnings, see Troubleshooting availability error responses.
<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelRateAmountNotifRS
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_HotelAvailNotifRS.xsd"
Version="1.004" TimeStamp="2026-02-12T15:35:01.665872Z">
<Success />
</OTA_HotelRateAmountNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->Warnings can be combined with success messages if the request was still processed:
<?xml version="1.0" encoding="UTF-8"?>
<?xml version='1.0' encoding='UTF-8'?>
<OTA_HotelRateAmountNotifRS 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"
Version="1.004" TimeStamp="2026-02-12T15:44:22.321141Z">
<Warnings>
<Warning Code="WARN_DUPLICATE_DATES" ShortText="Request contains duplicate dates, we have applied only the first occurrence" Details="room_ids: 12345; rate_ids: 45678; dates: 2026-02-19; hotel_ids: 9876;"/>
</Warnings>
<Success/>
</OTA_HotelRateAmountNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->Errors are only returned without success/warnings:
<?xml version='1.0' encoding='UTF-8'?>
<OTA_HotelRateAmountNotifRS 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"
Version="1.004" TimeStamp="2026-02-12T16:26:57.077791Z">
<Errors>
<Error Code="RATE_NOT_ACTIVE_FOR_ROOM" ShortText="Rate '1234' is not active for room '4567'" Details="room_ids: 4567; hotel_ids: 9876; dates: 2027-02-12,2027-02-12; rate_ids: 1234;"/>
</Errors>
</OTA_HotelRateAmountNotifRS>
<!-- RUID: [XXXXXXXXXXXXXXXXXXXXXXXXXXX==] -->When specifying days of the week (Mon, Tue, Wed, Thu, Fri, Sat, Sun):
- If you set some days to
trueand omit others, the omitted days default tofalse - If you explicitly set some days to
falsewithout setting any totrue, all days will be treated astrue - If all day attributes are omitted, all days default to
true
The maximum price you can set for a room is €50,000 (or equivalent) per night.
While setting up availability using rate IDs that are configured as child rates, make sure the request doesn't set values for fields that are configured to inherit from the parent rate plan.
For example, if you try to set price when FollowsPrice is set, the API returns an error.
To resolve the error, specify a rate plan ID that is either configured as a parent rate, or a child rate that does not have the following restrictions: FollowsPrice