Booksy APIbooksy.com ↗
Fetch Booksy business profiles (rating, services, staff, hours) and real-time available appointment time slots via two simple API endpoints.
What is the Booksy API?
The Booksy API exposes two endpoints that together cover a full booking workflow: get_business_info returns 10+ fields per business including name, address, rating, services with pricing and duration, staff members, and weekly opening hours, while get_time_slots returns available HH:MM appointment windows for a specific date, service, and optional staff member. Both endpoints accept a numeric business_id to target any listed Booksy business.
curl -X GET 'https://api.parse.bot/scraper/f0902cfa-08ee-43d3-a91b-f350352983ff/get_business_info?business_id=81004' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace booksy-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
from parse_apis.booksy_business_api import Booksy, Business, Service, TimeSlotResult
booksy = Booksy()
# Fetch a business by ID
business = booksy.businesses.get(business_id="81004")
print(business.name, business.rating, business.reviews_count)
print(business.address, business.city)
print(business.booking_link)
# Explore staff members
for member in business.staff:
print(member.name, member.position)
# Browse services with pricing and duration
for service in business.services:
print(service.name, service.service_price, service.duration)
# Check available appointment time slots for a specific service
slots = business.time_slots.check(
date="2026-06-12",
service_variant_id="9911968",
staffer_id="-1",
)
print(slots.date, slots.slot_count)
for time in slots.available_slots:
print(time)
Fetch full business profile from Booksy including name, rating, review count, booking link, services offered (with pricing and duration), staff members, and weekly opening hours. Each service includes a variant_id needed for time-slot lookups. Returns one business per call; no pagination.
| Param | Type | Description |
|---|---|---|
| business_id | string | Numeric Booksy business ID. |
{
"type": "object",
"fields": {
"id": "integer business ID",
"city": "string city name",
"name": "string business name",
"staff": "array of staff objects with id, name, position",
"rating": "number average rating out of 5",
"address": "string full street address",
"website": "string business website URL or null",
"services": "array of service objects with id, name, price, service_price, duration, variant_id",
"instagram": "string Instagram profile URL or null",
"open_hours": "array of objects with open_from, open_till, day_of_week",
"description": "string business description",
"booking_link": "string URL to book on Booksy",
"reviews_count": "integer total review count"
},
"sample": {
"data": {
"id": 81004,
"city": "Los Angeles",
"name": "Paul the Barber In Westwood",
"staff": [
{
"id": 97021,
"name": "John Doe",
"position": ""
},
{
"id": 1645530,
"name": "Jane Doe",
"position": "Barber"
}
],
"rating": 4.85,
"address": "123 Main St, Los Angeles, 90024",
"website": "https://paulthebarbershop.com",
"services": [
{
"id": 3520068,
"name": "Regular Student Haircut",
"price": 40,
"duration": 35,
"variant_id": 9911968,
"service_price": "$40.00"
}
],
"instagram": "https://www.instagram.com/1paulthebarber/",
"open_hours": [
{
"open_from": "08:00",
"open_till": "19:00",
"day_of_week": 2
}
],
"description": "World Class Service every time...",
"booking_link": "https://booksy.com/en-us/81004_paul-the-barber-in-westwood_barber-shop_134655_los-angeles",
"reviews_count": 551
},
"status": "success"
}
}About the Booksy API
Business Profile Data
get_business_info takes a business_id and returns a structured profile. The services array includes each service's id, name, price, service_price, duration, and — critically — a variant_id required for availability lookups. The staff array provides each team member's id, name, and position. Contact fields include address, website, and instagram. The open_hours array lists each day's open_from and open_till times alongside day_of_week, giving a full picture of when the business operates.
Appointment Availability
get_time_slots checks real-time availability for a given business_id, service_variant_id (from get_business_info), and date in YYYY-MM-DD format. The staffer_id parameter lets you target a specific staff member or pass -1 to accept any available staffer. The response echoes back all input parameters alongside available_slots — an array of 24-hour HH:MM strings — and a slot_count integer. An empty available_slots array indicates the business is either closed or fully booked on that date.
Workflow
A typical integration calls get_business_info first to collect the variant_id for the desired service and the id of the preferred staff member, then passes those directly into get_time_slots to retrieve bookable windows. The date parameter defaults to three days from the current date if omitted, making quick spot-checks easy without constructing a date string.
The Booksy API is a managed, monitored endpoint for booksy.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when booksy.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official booksy.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Display a barber shop's full service menu with prices and durations in a booking UI
- Check staff-specific appointment availability before surfacing booking options to a user
- Aggregate Booksy business ratings and review counts across multiple locations for comparison
- Pull weekly opening hours to warn users when a business is closed on their preferred day
- Sync Booksy service
variant_idvalues into a scheduling tool to automate slot lookups - Monitor available slot counts over time to analyze booking demand patterns
- Enrich a local business directory with Booksy contact fields including Instagram and website URLs
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Booksy have an official developer API?+
What does `get_time_slots` return when a business has no openings?+
available_slots array and a slot_count of 0. This happens when the business is closed on the requested date or all slots are already booked. The response still echoes business_id, service_variant_id, staffer_id, and date so you can log or retry without re-constructing the request context.Does the API return customer reviews or review text?+
rating (a number out of 5) from get_business_info, but individual review text, reviewer names, and per-review dates are not included. You can fork the API on Parse and revise it to add an endpoint that returns individual review records.Is there a way to search for businesses by location or category rather than by a known `business_id`?+
business_id. Discovery — searching by city, service type, or coordinates to find business IDs — is not covered. You can fork the API on Parse and revise it to add a search endpoint that returns matching business IDs.How current is the availability data returned by `get_time_slots`?+
get_time_slots as close to the actual booking action as possible.