Appearance
Hotel Ads - Date-Specific Pricing
Updated: Jun 26, 2026
In a static hotel feed, you provide a single price for each hotel. This price can't vary based on check-in date, length of stay, or room type. To display more accurate prices in your ads based on these variables, use dynamic (date-specific) pricing to provide prices for individual combinations of date, room type, and length of stay. Once you upload the pricing data, you can use hotel template tags to display these prices in your ads.
Use batch upload room types and pricing data to share pricing details with Facebook.
See room and pricing parameters for an explanation of all parameters.
Batch upload room types and pricing data
Batch upload consists of two parts:
If you use batch upload, limit uploads to 50 MB per file, approximately 50,000 items in a file. Make more frequent, smaller updates for pricing variables.
Upload room types
Upload one or more files with room types using the Hotel Rooms Batch API.
Note: If you don't have different room types, you can skip this step.
curl \
-X POST \
-F file=@hotel_rooms_data_xml.xml \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<API_VERSION>/<PRODUCT_CATALOG_ID>/hotel_rooms_batchRoom types file format
You can provide the room types in XML format; see sample.
You should identify each hotel by <property> in the <PropertyDataSet> XML node and provide room type by <RoomData>. Your file must begin with a <?xml declaration tag.
For more details on updating and deleting room types through batch API, see Hotel Rooms, Batch Reference.
Upload pricing
Upload one or more files with pricing details using the Pricing Variable Batch API. You can upload pricing details with or without room types.
Note: If you only have a very small number of rooms, you can also use the Hotel Room API to create room types and setup pricing.
curl \
-X POST \
-F file=@pricings_data_xml.xml \
-F "access_token=<ACCESS_TOKEN>" \
https://graph.facebook.com/<API_VERSION>/<PRODUCT_CATALOG_ID>/pricing_variables_batchPricing file format
Before you upload pricing, make sure the hotels for these rooms already exist in the catalog. You can provide pricing variables in this format:
| File Format and Sample | Description |
|---|---|
| XML with room types | XML Sample |
| XML without room types | XML Sample |
For more details on how to update and delete pricing variables through batch, see Pricing Variable Batch Reference.
Room and pricing parameters
| Field Name and Type | Description |
|---|---|
Property type: string | Required. A unique identifier of the hotel provided by advertiser as hotel_id in the hotel feed. |
RoomID type: string | Required. A unique identifier of the room type provided by advertiser. |
Name type: string | Required. Name of the hotel room type. |
Description type: string | Required. Description of the hotel room type. |
BasePrice type: float | Required. The lowest price of the hotel room. You should include the currency. Example: 159 USD |
URL type: string | Link to the hotel room page. |
CheckinDate type: date | Required. Check in date for the price. You can specify up to 180 days from the date the feed is uploaded. Use ISO‑8601 (YYYY‑MM‑DD). |
Nights type: int | Required. Number of nights staying in the hotel for the price. Max value: 14 |
Baserate type: float | Required. Price based on checkin_date and length_of_stay. Example: 180 |
Tax type: float | Required. Tax value for the stay. |
OtherFees type: float | Required. Applicable fee for the stay. |
SalePrice type: float | The discounted price if applicable. Example: 159 |
SalePriceTax type: float | Tax value for the discounted price. |