Docs

Accommodation availability dates

Last updated: 26 Oct 2026

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_dates

Query parameters

ParameterTypeRequiredDescription
start_datestringYesStart of range (YYYY-MM-DD)
end_datestringYesEnd of range (YYYY-MM-DD)
accommodation_ids[]string[]NoFilter to a set of accommodation public IDs
occupancy[adults]integerNoDefaults to 0 if omitted
occupancy[children]integerNoDefaults to 0 if omitted
occupancy[infants]integerNoDefaults to 0 if omitted
include[]string[]NoOpt-in response extensions. Supported values: stay_length (see Stay-length bounds)
horizonintegerNoWhen 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_sell restriction applies on that date.
  • No active min_stay_arrival restriction requires more than 1 night on that date.
  • If occupancy is 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_nights is the largest N such that at least one matching accommodation has a single room free for all N consecutive nights starting on this date, subject to all active stop_sell and max_stay restrictions, the accommodation's own maximum stay, rooms held in other carts, and any occupancy filter.
  • min_nights is the smallest N such that a stay is actually bookable on this date, determined by the tightest applicable min_stay_arrival restriction or the accommodation's own minimum stay (defaults to 1 when 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]=2

Response

{
  "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]=2

Response 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

FieldTypeDescription
datestringYYYY-MM-DD
availablebooleanWhether at least one accommodation accepts check-in
available_for_checkoutbooleanWhether a stay can end on this date (room free previous night)
max_nightsintegerPresent only with include[]=stay_length. Longest bookable stay starting on this date, clamped at horizon
min_nightsintegerPresent only with include[]=stay_length. Shortest bookable stay starting on this date; 0 when unbookable

Meta object

FieldTypeDescription
start_datestringRequested start date
end_datestringRequested end date
location_idstringLocation public ID
horizon_nightsintegerPresent only with include[]=stay_length. Effective max stay length after clamping to [1, 90]

Errors

  • Invalid dates return 400 with { "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.