Accommodation availability dates returns per-day availability for a date range. Use this endpoint to render calendar views efficiently in a single request instead of checking each date individually. It can optionally return per-date stay-length bounds, letting a date picker enable/disable check-out dates for any selected check-in without additional round-trips.
All endpoints are scoped to the organization that owns the API key:
/store/v0
Get availability dates
GET /store/v0/accommodations/availability_datesQuery parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
start_date | string | Yes | Start of range (YYYY-MM-DD) |
end_date | string | Yes | End of range (YYYY-MM-DD) |
accommodation_ids[] | string[] | No | Filter to a set of accommodation public IDs |
occupancy[adults] | integer | No | Defaults to 0 if omitted |
occupancy[children] | integer | No | Defaults to 0 if omitted |
occupancy[infants] | integer | No | Defaults to 0 if omitted |
include[] | string[] | No | Opt-in response extensions. Supported values: stay_length (see Stay-length bounds) |
horizon | integer | No | When include[]=stay_length, caps max_nights at this many nights. Default 30, minimum 1, maximum 90. Values outside are clamped |
How availability is determined
Each date in the response includes two availability flags:
available (check-in availability) is true if at least one matching accommodation is bookable for a 1-night stay starting on that date. This means:
- The accommodation has at least one available room on that date (not occupied by a stay or blocked by a room block).
- No active
stop_sellrestriction applies on that date. - No active
min_stay_arrivalrestriction requires more than 1 night on that date. - If
occupancyis provided, the accommodation's capacity must be sufficient for the number of countable guests (adults + children; infants are excluded from capacity checks).
available_for_checkout is true if a stay can end on that date. This means at least one matching accommodation had a room available the previous night with no stop_sell restriction. A date can be available_for_checkout: true even when available: false, since checkout does not require room availability on the checkout date itself.
Use available to determine selectable check-in dates and available_for_checkout to determine selectable check-out dates in calendar UIs.
Stay-length bounds
Pass include[]=stay_length to receive per-date min_nights and max_nights fields alongside the standard availability flags. Use these to constrain the check-out date once a check-in date has been selected, without an additional request.
For each date, the values describe stays that start on that date:
max_nightsis the largestNsuch that at least one matching accommodation has a single room free for allNconsecutive nights starting on this date, subject to all activestop_sellandmax_stayrestrictions, the accommodation's own maximum stay, rooms held in other carts, and anyoccupancyfilter.min_nightsis the smallestNsuch that a stay is actually bookable on this date, determined by the tightest applicablemin_stay_arrivalrestriction or the accommodation's own minimum stay (defaults to1when neither applies).- When no accommodation is bookable from this date at all, both values are
0.
max_nights is clamped at horizon. If you need to represent stays longer than the clamp, request a larger horizon (up to 90). Clients should treat max_nights === horizon as "the real max is at least this, possibly more."
A stay of length N nights starting on date D is bookable iff min_nights ≤ N ≤ max_nights on the entry for D. This holds per accommodation; the aggregate [min_nights, max_nights] across multiple accommodations may, in rare cases where accommodations have heterogeneous min_stay_arrival restrictions, contain a length that no single accommodation accepts. For typical configurations (location-wide or uniform restrictions) the aggregate range is exact.
When include[]=stay_length is requested, the response meta object includes horizon_nights echoing the effective horizon (after clamping).
Caching
Responses are served with:
Cache-Control: public, max-age=30, stale-while-revalidate=60
The endpoint is safe to cache at the edge for short periods. Clients and CDNs can serve a stale response for up to 60 seconds while revalidating in the background.
Example request
GET /store/v0/accommodations/availability_dates?start_date=2026-07-01&end_date=2026-08-31&occupancy[adults]=2Response
{
"dates": [
{ "date": "2026-07-01", "available": true, "available_for_checkout": true },
{ "date": "2026-07-02", "available": true, "available_for_checkout": true },
{ "date": "2026-07-03", "available": false, "available_for_checkout": true }
],
"meta": {
"start_date": "2026-07-01",
"end_date": "2026-08-31",
"location_id": "2b0a1c2d-3e4f-4a5b-9c6d-7e8f9a0b1c2d"
}
}Example request with stay-length bounds
GET /store/v0/accommodations/availability_dates?start_date=2026-07-01&end_date=2026-07-03&include[]=stay_length&horizon=60&occupancy[adults]=2Response with stay-length bounds
{
"dates": [
{
"date": "2026-07-01",
"available": true,
"available_for_checkout": true,
"min_nights": 2,
"max_nights": 13
},
{
"date": "2026-07-02",
"available": true,
"available_for_checkout": true,
"min_nights": 1,
"max_nights": 7
},
{
"date": "2026-07-03",
"available": false,
"available_for_checkout": true,
"min_nights": 0,
"max_nights": 0
}
],
"meta": {
"start_date": "2026-07-01",
"end_date": "2026-07-03",
"location_id": "2b0a1c2d-3e4f-4a5b-9c6d-7e8f9a0b1c2d",
"horizon_nights": 60
}
}Field reference
Date object
| Field | Type | Description |
|---|---|---|
date | string | YYYY-MM-DD |
available | boolean | Whether at least one accommodation accepts check-in |
available_for_checkout | boolean | Whether a stay can end on this date (room free previous night) |
max_nights | integer | Present only with include[]=stay_length. Longest bookable stay starting on this date, clamped at horizon |
min_nights | integer | Present only with include[]=stay_length. Shortest bookable stay starting on this date; 0 when unbookable |
Meta object
| Field | Type | Description |
|---|---|---|
start_date | string | Requested start date |
end_date | string | Requested end date |
location_id | string | Location public ID |
horizon_nights | integer | Present only with include[]=stay_length. Effective max stay length after clamping to [1, 90] |
Errors
- Invalid dates return
400with{ "error": "Invalid date format: ...", "details": {} }
See Errors.
Relationship to accommodation availabilities
This endpoint answers "which dates have any availability?" (and, optionally, "how long can a stay starting on each date be?") for calendar rendering. To get detailed per-accommodation bookability with pricing for a specific stay, use the Accommodation availability endpoint.