Accor Price Calendar API
See the cheapest available offer for each date across a window — ideal for finding the best dates to stay.
Overview
One price per date
For each date in [date_from, date_to] this returns the cheapest available offer for a stay of nights nights starting that date, plus an availability status. Dates marked UNAVAILABLE carry a null price. A distinct feature with no equivalent on the other platforms.
Take the id from a Search result and pass it as hotel_id. The window between date_from and date_to can span up to 60 days.
Endpoint URL
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| hotel_id | string | Required | Accor hotel id from the Search endpoint (e.g., "2185") |
| date_from | date | Required | Window start date (YYYY-MM-DD) |
| date_to | date | Required | Window end date (YYYY-MM-DD). Max 60 days after date_from |
| nights | integer | Optional | Length of stay priced for each date (1-30). Default: 1 |
| adults | integer | Optional | Number of adults (1-8). Default: 1 |
| currency | string | Optional | ISO-4217 currency code. Default: USD |
| country_market | string | Optional | ISO-3166 alpha-2 market country. Default: US |
Window limit
date_to must be within 60 days of date_from, otherwise the API returns 400 RANGE_TOO_LARGE. Page through longer ranges with successive calls.
Response Format
Response Structure
- success: Boolean indicating request success
- hotel_id / name / brand: Property identity
- currency: Currency of the calendar prices
- calendar: Array of one entry per date in the window
- total: Number of dates returned
Calendar Day Fields
| Field | Type | Description |
|---|---|---|
| date | string | The calendar date (YYYY-MM-DD) |
| status | string | "AVAILABLE" or "UNAVAILABLE" |
| amount / formatted | float / string | Cheapest price for a stay starting that date. Null on UNAVAILABLE days. |
| aggregation_type | string | Whether the amount is per-night or whole-stay (e.g., "TOTAL_STAY") |
| nights | integer | Length of stay the price covers |
| best_rate_label | string | Label of the cheapest rate, when provided |
Error Responses
Errors follow the RFC 7807 Problem Details format with provider: "accor" and product: "price-calendar".
400 Bad Request
The window exceeds 60 days (RANGE_TOO_LARGE), or dates are invalid/in the past.
{
"type": "https://api.stayapi.com/errors/range-too-large",
"title": "Range Too Large",
"status": 400,
"detail": "date_to must be within 60 days of date_from",
"provider": "accor",
"product": "price-calendar",
"error_code": "RANGE_TOO_LARGE"
}
404 / 502
No property matches the hotel_id (404), or an upstream service error from Accor (502).