Managing room amenities

In addition to creating room types (Room type and rate plan API), you can also use the /ota/OTA_HotelInvNotif endpoint to add, update, retrieve, or remove a property's room amenities for one or more existing room types.

What are room amenities?

Room amenities are predefined labels that you can use to list features or facilities available in a physical room of a given property. Booking.com provides a list of supported room amenities each identified using an amenity type code, including bed types room amenities which you can use to specify the types of beds in the room.

→ For a list of all the possible Booking.com room amenities, see room amenity type code. To see a list of all bed types, see bed type codes.

What falls under managing room amenities?

Managing room amenities involves the following actions:

Adding and updating room amenities

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

The POST /ota/OTA_HotelInvNotif request enables you to add and update room amenities of one or more existing room types per property.

To update room amenities:

  • Set InvNotifType to Overlay.
  • Include InvCode, which is the Booking.com ID referring to an existing room type. You do not need to add the RoomType again.
  • Change the Amenities elements you want to update and include all the existing room information.

    → To retrieve a property's room amenities details, see retrieving room amenities.

    → To add room amenities when creating a room type, set the InvNotifType to New. For more information, see creating a room type.

Overlay exception while updating bed-type amenities

In general, when overlaying details of an existing property, room type, or other object, the body of your current request replaces the existing information. Therefore, existing information may get deleted if you do not include it in your request. To update an object without deleting existing information, your request must contain both the updates and the existing information.

However, there is an exception to this overlay behaviour while updating bed-type room amenities. Updating only bed-type room amenities does not overlay existing room amenities. For example, when you add or update bed types, it does not affect existing non-bed type room amenities. Similarly, updating only non-bed type room amenities does not overlay existing bed-type amenities.

Requirements for adding or updating room amenities

To add or update room amenities of a room type on Booking.com, the following elements are required:

  • Property ID
  • Booking.com room type ID
  • Room amenity type code

Body parameters

The following table describes the elements to add in the request body:

Element Attribute Description Type Required/Optional Notes
OTA_HotelInvNotifRQ Contains the SellableProducts array. object required
> SellableProducts Contains the SellableProduct object. array required
HotelCode Specifies the unique ID of the property you update room amenities for. integer required
>> SellableProduct Contains a GuestRoom object. object required
InvNotifType Indicates whether the request is to add room amenities when you create a room type (New) or to modify room amenities of an existing room type (Overlay). enum required Possible values are New and Overlay.
InvCode Specifies the ID generated by Booking.com when you created the room type. integer required Use the value in the ResponseInvCode found in the response body to modify the specified room type.
>>> GuestRoom Contains a GuestRoom object. object required
>>>> Description Contains the room type name object. object required
>>>>> Text Specifies the name of the room type. string required To see a list of the available room type names, see retrieving room type names.
>>>> Occupancy Specifies the occupancies of the room type. object optional
MaxOccupancy Specifies the maximum number of guests allowed to stay in the room type. integer optional The value for MaxOccupancy cannot be higher than the sum of the values for MaxAdultOccupancy and MaxChildOccupancy.
MaxAdultOccupancy Specifies the maximum number of adult guests allowed to stay in the room type. integer optional
MaxChildOccupancy Specifies the maximum number of children allowed to stay in the room type. integer optional The value for MaxChildOccupancy is always lower than that for MaxAdultOccupancy, because you cannot have a room with only children. The maximum value is 4.
>>>> Room Specifies the basic room type information. object optional
RoomID Specifies the room type ID you use in your system. integer optional You can use this field to map room types across interfaces.
RoomType Specifies the room type. string or integer optional To see a list of all available room types, see room type codes. Apartment (PCT code 3) , Aparthotel (PCT code 5000) and Condominium (PCT code 8) require a kitchen or kitchenette in the room types to become open and bookable. For Holiday home (PCT code 5006), Holiday park (PCT code 5009), Lodge (PCT code 22) and Villa (PCT code 35) a kitchen or kitchenette is highly recommended. See Property Class Type Code (PCT).
SizeMeasurement Specifies the numeric size of the room type. integer optional
SizeMeasurementUnit Specifies the system of measurement. string optional Possible values are sqm (metric) and sqft (imperial). The default value is sqm.
NonSmoking Indicates whether smoking is allowed in the room type. boolean optional 1 indicates non-smoking and 0 indicates smoking is allowed. If you do not add this attribute, the default value is unknown.
Quantity Specifies the number of units of a room type. integer optional
>>>> Quantities Contains the crib and extra bed details. object optional
MaximumAdditionalGuests Specifies the maximum number of additional guests allowed to stay in the room in cribs or extra beds (rollaways). integer optional
MaxCribs Specifies the maximum number of cribs in the room. integer optional To specify that a room with an additional guest can hold a crib or an extra bed (but not both), you must specify 1 for both.
MaxRollaways Specifies the maximum number of extra beds in the room. string optional To specify that a room with an additional guest can hold a crib or an extra bed (but not both), you must specify 1 for both.
>>>> Amenities Specifies the room amenities and bed types details of the room type. object optional
AmenityCode Specifies the room amenity and bed type. enum optional Amenities in sub-rooms can only be beds.
Value Specifies the number of room amenities or bed types in the room. enum optional This attribute is required for some of the room amenities and is case sensitive.
Configuration Indicates whether the amenity is available in the standard or alternative room arrangement. enum optional Accepted only for bed types. Accepts: 1 (standard arrangement), 2 (alternative arrangement)

Request body example: Room amenities

The following request body sets a kitchenette, a desk and a minibar in the room type:

<OTA_HotelInvNotifRQ> 
    <SellableProducts HotelCode="6314570">
        <SellableProduct InvNotifType="Overlay" InvCode="631457019">
            <GuestRoom>
                <Amenities>
                    <Amenity AmenityCode="61"/>
                    <Amenity AmenityCode="28"/>
                    <Amenity AmenityCode="69" Value="1"/>
                </Amenities>
            </GuestRoom>
        </SellableProduct>
    </SellableProducts>
</OTA_HotelInvNotifRQ>

Request body example: Bed types

The following request body sets two single beds available in the standard room arrangement in the room type:

<OTA_HotelInvNotifRQ> 
    <SellableProducts HotelCode="6314570">
        <SellableProduct InvNotifType="Overlay" InvCode="631457019">
            <GuestRoom>
                <Amenities>
                    <Amenity AmenityCode="203" Value="2" Configuration="1"/>
                </Amenities>
            </GuestRoom>
        </SellableProduct>
    </SellableProducts>
</OTA_HotelInvNotifRQ>

Request body example: Room amenities and bed types in a multi-bedroom room type

The following request body sets a desk, a refrigerator and free toiletries in the room type Apartment. In addition, it sets one double bed in the subroom Bedroom and one sofa bed in the subroom Living room:

<OTA_HotelInvNotifRQ>
    <SellableProducts HotelCode="6314570">
        <SellableProduct InvNotifType="Overlay" InvCode="631457019">
            <GuestRoom>
                <Amenities>
                  <Amenity AmenityCode="28" />
                  <Amenity AmenityCode="88" />
                  <Amenity AmenityCode="11" />
              </Amenities>
                <TPA_Extensions>
                  <SubRooms>
                      <SubRoom RoomType='Bedroom' PrivateBathroom="0">
                      <Amenities>
                              <Amenity AmenityCode="249" Value="1" />
                          </Amenities>
                      </SubRoom>
                      <SubRoom RoomType="Living room">
                      <Amenities>
                              <Amenity AmenityCode="102" Value="1" />
                          </Amenities>
                      </SubRoom>
                  </SubRooms>
              </TPA_Extensions>
            </GuestRoom>
        </SellableProduct>
    </SellableProducts>
</OTA_HotelInvNotifRQ>

Response body example

The following is a successful response body example:

<OTA_HotelInvNotifRS >
    <Success />
</OTA_HotelInvNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YU4iplNAF3/GEVjlG+mTXmB9OwspcIGa+KqcbMzyiykpi6Yx5oKzRKEMxDhfrI] -->

Response body parameters

The following table describes the response elements:

Element Description Type Notes
OTA_HotelInvNotifRS Contains the response data. object
> warnings Contains potential warnings. These can help you improve your requests. array
> errors Contains potential errors. These can help you understand what went wrong with your request. array
> 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 room amenities

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

The POST /ota/OTA_HotelDescriptiveInfo request enables you to retrieve room amenities of all the active room types of a property.

→ To retrieve room amenities of both deactivated and active room types, you must retrieve the property details and filter on GuestRooms.

Body parameters

The following table describes the elements you must add in the request body:

Element Attribute 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 room types for. integer required

Request body example

The following is a request body example:

<OTA_HotelDescriptiveInfoRQ>
    <HotelDescriptiveInfos>
        <HotelDescriptiveInfo HotelCode="6314570"></HotelDescriptiveInfo>
    </HotelDescriptiveInfos>
</OTA_HotelDescriptiveInfoRQ>

Response body example

The following shows the relevant information of a successful response body example:

<OTA_HotelDescriptiveInfoRS>
...
<GuestRooms>
        <GuestRoom ID="631457019" Active="1" RoomTypeName="Double" NonSmoking="Unknown">
          <Amenity RoomAmenityCode="28" AmenityCode="28"/>
          <Amenity RoomAmenityCode="61" AmenityCode="61"/>
          <Amenity RoomAmenityCode="69" AmenityCode="69"/>
          <Amenity RoomAmenityCode="203" Quantity="2" AmenityCode="203" Value="2" Configuration="1"/>
          <DescriptiveText>Deluxe Double Room with Mountain View</DescriptiveText>
          <Occupancy MaxOccupancy="2" MaxAdultOccupancy="1" MaxChildOccupancy="2"/>
          <Quantities MaxCribs="0" MaxRollaways="0"/>
        </GuestRoom>
      </GuestRooms>
...
</OTA_HotelDescriptiveInfoRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YZvDaUET+NMaXKN+9zcX6t7ygxdUDjvU4TNDD8JwtXxnIZuaEi] -->

Response body parameters

The following table describes the response elements:

Element Attribute Description Type Notes
OTA_HotelDescriptiveInfoRS Contains the response data. object
> GuestRooms Contains the guestroom objects. object
>> GuestRoom Contains the guestroom information. object
ID Specifies the unique Booking.com ID of the room type. integer
Active Specifies if the room type is active or inactive. boolean In this case, 1 means active and 0 means inactive.
RoomTypeName Specifies the name of the room type. string To see a list of the available room type names, see retrieving room type names.
NonSmoking Indicates whether smoking is allowed in the room type. boolean In this case, 1 means non-smoking and 0 means smoking is allowed.
>>> Amenity Contains the Amenity information. object
RoomAmenityCode The Room Amenity Type Code. enum
AmenityCode The Room Amenity Type Code. enum Same as @RoomAmenityCode, introduced for compatibility with OTA_HotelInvNotifRQ.
Quantity The available number of amenities of this type. integer
Value The available number of amenities of this type. integer Same as @Quantity, introduced for compatibility with OTA_HotelInvNotifRQ.
Configuration Specifies whether the amenity is available in the standard or alternative room arrangement. enum Accepted only when amenity type code is a bed type. Possible values: 1 (standard arrangement), 2 (alternative arrangement). Introduced for compatibility with OTA_HotelInvNotifRQ.
>>> DescriptiveText Specifies the name of the room type. object To see a list of the available room type names, see retrieving room type names.
>>> Occupancy Specifies the occupancies of the room type. object
MaxOccupancy Specifies the maximum number of guests allowed to stay in the room type. integer
MaxAdultOccupancy Specifies the maximum number of adult guests allowed to stay in the room type. integer
MaxChildOccupancy Specifies the maximum number of children allowed to stay in the room type. integer
>>> Quantity Specifies the number of units of a room type. integer
MaximumAdditionalGuests Specifies the maximum number of additional guests allowed to stay in the room in cribs or extra beds (rollaways). integer
MaxCribs Specifies the maximum number of cribs in the room. integer
MaxRollaways Specifies the maximum number of extra beds in the room. integer
> warnings Contains potential warnings. These can help you improve your requests. array
> errors Contains potential errors. These can help you understand what went wrong with your request. array
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 room amenities

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

The POST /ota/OTA_HotelInvNotif request enables you to remove room amenities of one or more existing room types for your property.

To remove one or more room amenities:

  • Set InvNotifType to Overlay.
  • Include InvCode, which is the Booking.com ID referring to an existing room type. You do not need to add the RoomType again.
  • Include all the other existing room information and change the Amenities elements you want to update.
  • Specify “0” in attribute Value for the room amenities and bed types you want to remove.

    → To retrieve information on your property's room amenities, see retrieving room amenities.

Overlay exception while removing bed-type amenities

Similar with updating bed-type amenities, there is also an exception to the overlay behaviour while removing bed-type room amenities. Removing only bed-type room amenities does not overlay existing room amenities. For example, when you remove bed types, it does not affect existing non-bed type room amenities. Similarly, removing only non-bed type room amenities does not overlay existing bed-type amenities.

Requirements for removing room amenities

To remove room amenities of a room type on Booking.com, you only need the following elements:

  • Property ID
  • Booking.com room type ID
  • Room amenity type code

Body parameters

The following table describes the elements to add in the request body:

Element Attribute Description Type Required/Optional Notes
OTA_HotelInvNotifRQ Contains the SellableProducts array. object required
> SellableProducts Contains the SellableProduct objects. array required
HotelCode Specifies the unique ID of the property you remove room amenities for. integer required
>> SellableProduct Contains a GuestRoom object. object required
InvNotifType Specifies the request is to remove room amenities of an existing room type (Overlay). enum required Possible values are New and Overlay.
InvCode Specifies the ID generated by Booking.com when you created the room type. integer required Use the value in the ResponseInvCode found in the response body to modify the specified room type.
>>> GuestRoom Contains a GuestRoom object. object required
>>>> Description Contains the room type name object. object required
>>>>> Text Specifies the name of the room type. string required To see a list of the available room type names, see retrieving room type names.
>>>> Occupancy Specifies the occupancies of the room type. object optional
MaxOccupancy Specifies the maximum number of guests allowed to stay in the room type. integer optional The value for MaxOccupancy cannot be higher than the sum of the values for MaxAdultOccupancy and MaxChildOccupancy.
MaxAdultOccupancy Specifies the maximum number of adult guests allowed to stay in the room type. integer optional
MaxChildOccupancy Specifies the maximum number of children allowed to stay in the room type. integer optional The value for MaxChildOccupancy is always lower than that for MaxAdultOccupancy, because you cannot have a room with only children. The maximum value is 4.
>>>> Room Specifies the basic room type information. object optional
RoomID Specifies the room type ID you use in your system. integer optional You can use this field to map room types across interfaces.
RoomType Specifies the room type. string or integer optional To see a list of the available room types, see room type codes. Apartment (PCT code 3) , Aparthotel (PCT code 5000) and Condominium (PCT code 8) require a kitchen or kitchenette in the room types to become open and bookable. For Holiday home (PCT code 5006), Holiday park (PCT code 5009), Lodge (PCT code 22) and Villa (PCT code 35) a kitchen or kitchenette is highly recommended. See Property Class Type Code (PCT).
SizeMeasurement Specifies the numeric size of the room type. integer optional
SizeMeasurementUnit Specifies the system of measurement. string optional Possible values are sqm (metric) and sqft (imperial). The default value is sqm.
NonSmoking Indicates whether smoking is allowed in the room type. boolean optional In this case 1 means non-smoking and 0 means smoking allowed. If you do not add this attribute, the default value is unknown.
Quantity Specifies the number of units of a room type. integer optional
>>>> Quantities Contains the crib and extra bed details. object optional
MaximumAdditionalGuests Specifies the maximum number of additional guests allowed to stay in the room in cribs or extra beds (rollaways). integer optional
MaxCribs Specifies the maximum number of cribs in the room. integer optional In case you want to specify that a room with one additional guest can hold a crib OR an extra bed (but not both), you specify 1 for both.
MaxRollaways Specifies the maximum number of extra beds in the room. string optional If you want to specify that a room with one additional guest can hold a crib OR an extra bed (but not both), you must specify 1 for both.
>>>> Amenities Specifies the room amenities and bed types details of the room type. object optional
AmenityCode Specifies the [amenity type code] [room amenity and bed type]. enum optional Amenities in sub-rooms can only be beds.
Value Specifies the number of room amenities or bed types in the room. enum optional In this case 0 means you are removing the room amenities or bed types for the room type. This attribute is case sensitive.
Configuration Specifies whether the amenity is available in the standard or alternative room arrangement. enum optional Accepted only for bed types. Accepts: 1 (standard arrangement), 2 (alternative arrangement)

Request body example: Room amenities

The following request body removes the Kitchenette, the desk and the minibar in the room type:

<OTA_HotelInvNotifRQ> 
    <SellableProducts HotelCode="6314570">
        <SellableProduct InvNotifType="Overlay" InvCode="631457019">
            <GuestRoom>
                <Amenities>
                    <Amenity AmenityCode="61" Value="0"/>
                    <Amenity AmenityCode="28" Value="0"/>
                    <Amenity AmenityCode="69" Value="0"/>
                </Amenities>
            </GuestRoom>
        </SellableProduct>
    </SellableProducts>
</OTA_HotelInvNotifRQ>

Request body example: Bed types

The following request body removes the single bed (which is available in the standard room arrangement) in the room type:

<OTA_HotelInvNotifRQ> 
    <SellableProducts HotelCode="6314570">
        <SellableProduct InvNotifType="Overlay" InvCode="631457019">
            <GuestRoom>
                <Amenities>
                    <Amenity AmenityCode="203" Value="0" Configuration="1"/>
                </Amenities>
            </GuestRoom>
        </SellableProduct>
    </SellableProducts>
</OTA_HotelInvNotifRQ>

Response body example

The following is a successful response body example:

<OTA_HotelInvNotifRS >
    <Success />
</OTA_HotelInvNotifRS>
<!-- RUID: [UmFuZG9tSVYkc2RlIyh9YU4iplNAF3/GEVjlG+mTXmB9OwspcIGa+KqcbMzyiykpi6Yx5oKzRKEMxDhfrI] -->

Response body parameters

The following table describes the response elements:

Element Description Type Notes
OTA_HotelInvNotifRS Contains the response data. object
> warnings Contains potential warnings. These can help you improve your requests. array
> errors Contains potential errors. These can help you understand what went wrong with your request. array
> 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.