---
title: "List availability by day for an offering"
method: GET
path: "/shop/item-availability/offering-dates"
tags: ["Availability"]
---

# List availability by day for an offering

`GET /shop/item-availability/offering-dates`

Returns one `OfferingDateAvailability` per day in the
`date_from`..`date_to` range, indicating whether the offering
has any bookable slots on that day plus the cheapest slot
price. Use this to drive a calendar UI that greys-out unbookable
days without firing a slot-level query per day.

The maximum supported range is 31 days. Larger ranges return
`400 Bad Request`.

Supports `appointment`, `session`, `package`, and `area_booking`
offering types.

## Query parameters

- `date_from` string, date, required
- `date_to` string, date, required
- `offering_id` string, required
- `offering_type` 'appointment' | 'session' | 'package' | 'area_booking', required
- `quantity` integer
- `partner_id` string

## Response `200`

Per-day availability for an offering across the requested
date range. Each entry is one calendar day.

- object
  - `data` OfferingDateAvailability[], required
    - `date` string, date, required — The day this entry refers to (in the offering's timezone).
    - `has_availability` boolean, required — Whether at least one slot is bookable on this day.
    - `practitioner_ids` string[] — Practitioners with availability on this day. Only returned for offerings that surface a practitioner picker.
    - `can_enquire` boolean, nullable — For days with no live availability, whether the appointment type supports an enquiry instead. `null` for offerings that don't support enquiries.
    - `bookable_from` string, date-time, nullable — Earliest date-time on this day at which the offering may be booked.
    - `bookable_to` string, date-time, nullable — Latest date-time on this day at which the offering may be booked.
    - `price_from` integer, nullable — Cheapest slot price on this day in the smallest currency unit. `null` when no slots are bookable.
  - `meta` object — Booking-window metadata derived from the offering — `min_advance_bookings_interval`, `max_advance_bookings_interval`, `currency`, and practitioner roster for appointment types.

## Other responses

- `400` — The request failed.
- `401` — The user is unauthenticated
- `404` — The resource couldn't be found
- `422` — The request didn't pass validation

---

[API](https://skmtc.dev/try/apis/trybe-api.md) · [All operations](https://skmtc.dev/try/apis/trybe-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/try/trybe-api/revisions/f37f92702da5/schema)
