Last updated

Update rates

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.

Usage recommendations

  1. Specify availability in advance: You should specify the availability of your connected properties at least 12 months in advance.

  2. Use Delta Updates Only

  3. Single Hotel Per Request

    • All updates in a request must belong to one hotel
    • Do not mix multiple hotels in the same request
  4. Monthly Batching

    • Break down updates by month
    • Each request should cover a single month period
  5. Room-Rate Grouping

    • Multiple room-rates can be grouped together in the same request
    • Must be for the same hotel and same month period

Endpoint

POST https://supply-xml.booking.com/hotels/ota/OTA_HotelRateAmountNotif

Request

Headers

HeaderDescriptionTypeRequiredNotes
Accept-VersionSpecify the version number to get the API functionality specific to that version.stringRequiredSupports the following values:
- 1.1: Current version (default)
Content-TypeRequest content typestringRequiredMust be application/xml

Request body

ElementAttributeDescriptionTypeRequiredNotes
OTA_HotelRateAmountNotifRQRoot element for rate update requestsobjectRequired-
> RateAmountMessagesContainer for one or more rate updatesobjectRequired-
>> RateAmountMessageContains details about a specific rate updateobjectRequired-
>>> StatusApplicationControlDefines which room, rate, and dates to updateobjectRequired-
StartStart date for the update perioddateRequiredFormat: 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
EndEnd date for the update perioddateRequiredFormat: 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
RatePlanCodeThe Booking.com rate plan IDstringRequired-
InvTypeCodeThe Booking.com room type IDstringRequired-
MonApply to MondaysbooleanOptionalDefault: true. See day of week behavior
TueApply to TuesdaysbooleanOptionalDefault: true. See day of week behavior
WedApply to WednesdaysbooleanOptionalDefault: true. See day of week behavior
ThuApply to ThursdaysbooleanOptionalDefault: true. See day of week behavior
FriApply to FridaysbooleanOptionalDefault: true. See day of week behavior
SatApply to SaturdaysbooleanOptionalDefault: true. See day of week behavior
SunApply to SundaysbooleanOptionalDefault: true. See day of week behavior
>>> RatesContainer for rate pricing informationobjectOptional-
>>>> RateContains pricing detailsobjectConditionalRequired when Rates element is specified
>>>>> BaseByGuestAmtsContainer for base pricing by guest countobjectOptional-
>>>>>> BaseByGuestAmtSpecifies the price for the roomobjectConditionalRequired when BaseByGuestAmts element is specified
AmountAfterTaxPrice including all taxesdecimalConditional*Mutually exclusive with AmountBeforeTax. Use when room has both "Including VAT" and "Including taxes" enabled. 0 means room/rate/date is not available
AmountBeforeTaxPrice before taxesdecimalConditional*Mutually exclusive with AmountAfterTax. Use when room doesn't have both tax settings enabled. 0 means room/rate/date is not available
DecimalPlacesNumber of decimal placesintegerOptionalExample: 8550 with DecimalPlaces="2" represents 85.50
NumberOfGuestsSpecifies the prices for number of occupants (adults and children that are priced as adults).integerOptionalSet 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
CurrencyCodeISO 4217 currency codestringRequiredMust match the hotel's configured currency on Booking.com

Request examples

Example 1: Update prices for multiple rates

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>

Example 2: Update single occupancy and standard pricing

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

Response

Response body

ElementAttributeDescriptionTypeNotes
OTA_HotelRateAmountNotifRSRoot element.object-
> SuccessIndicates a successful request.objectOnly returned if there are no Errors elements.
> WarningsGroups a list of individual warnings.object-
>> WarningList details of individual warnings.objectWarnings can occur even if the response contains Success.
CodeReturns an error code for an error.stringSee Troubleshooting availability error responses
DetailsContains additional context about where the warning occurred.stringMay include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the warning.
ShortTextWarning message.string-
> ErrorsGroups a list of individual errors.object-
>> ErrorList details of individual errors.object-
CodeReturns an error code for an error.stringSee Troubleshooting availability error responses
DetailsContains additional context about where the error occurred.stringMay include identifiers such as hotel_id, room_id, rate_id, or date to help identify the specific data that caused the error.
ShortTextError message.string-

Response examples

This section contains examples of successful and unsuccessful responses. For a detailed description of all possible errors and warnings, see Troubleshooting availability error responses.

Success response

<?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==] -->

Success response with warnings

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

Error response

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

Additional information

Day of week behavior

When specifying days of the week (Mon, Tue, Wed, Thu, Fri, Sat, Sun):

  • If you set some days to true and omit others, the omitted days default to false
  • If you explicitly set some days to false without setting any to true, all days will be treated as true
  • If all day attributes are omitted, all days default to true

Price limits and validation

v1.0 behavior: €50,000 maximum price

The maximum price you can set for a room is €50,000 (or equivalent) per night.

Setting availability for child rates

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