SevenRooms APIsevenrooms.com ↗
Search real-time table availability, fetch venue details, and complete restaurant reservations across any SevenRooms venue with 5 structured endpoints.
What is the SevenRooms API?
The SevenRooms API covers 5 endpoints for discovering and booking restaurant tables on the SevenRooms platform. Use get_venue_info to retrieve venue name, address, timezone, currency, and linked venues, then progress through availability checks and a two-step hold-and-confirm flow to complete a reservation. Response fields include IANA timezones, shift identifiers, and a reservation_hold_id that gates the final booking step.
curl -X GET 'https://api.parse.bot/scraper/ad4bb394-079b-49ce-9c1b-bcc748b5ac37/get_venue_info?venue_slug=wildtavernchelsea' \ -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 sevenrooms-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.
"""Walkthrough: SevenRooms SDK — search availability and hold a table."""
from parse_apis.SevenRooms_Restaurant_Reservation_API import SevenRooms, NotFoundError
client = SevenRooms()
# Construct a venue from its slug and check available dates
venue = client.venue("wildtavernchelsea")
dates = venue.available_dates(num_days=30)
print(dates.total_dates, "dates available; first 5:", dates.valid_dates[:5])
# Search for dinner availability for 2 guests
for shift in venue.search_availability(party_size=2, time_slot="19:00", limit=3):
print(shift.date, shift.shift_name, shift.shift_category)
for slot in shift.time_slots[:3]:
print(f" {slot.time} type={slot.type} duration={slot.duration}")
# Drill into the first bookable shift and hold a slot
shift = venue.search_availability(party_size=2, time_slot="19:00", limit=1).first()
if shift:
bookable = [s for s in shift.time_slots if s.access_persistent_id]
if bookable:
slot = bookable[0]
try:
hold = venue.hold(
date=shift.date,
time=slot.time,
party_size=2,
shift_persistent_id=slot.shift_persistent_id,
access_persistent_id=slot.access_persistent_id,
)
print(f"Held: {hold.reservation_hold_id}, expires in {hold.hold_duration_sec}s")
except NotFoundError as exc:
print(f"Hold failed: {exc}")
print("exercised: available_dates / search_availability / hold")
Get venue details including name, address, timezone, currency, and linked venues for any SevenRooms restaurant. The venue_slug is the URL key found in the SevenRooms reservation URL path.
| Param | Type | Description |
|---|---|---|
| venue_slugrequired | string | The venue's URL key/slug (e.g., 'wildtavernchelsea'). Found in the SevenRooms reservation URL. |
{
"type": "object",
"fields": {
"city": "string, city where venue is located",
"name": "string, venue display name",
"address": "string, full street address",
"url_key": "string, venue URL slug",
"currency": "string, three-letter currency code (e.g. 'GBP')",
"timezone": "string, IANA timezone (e.g. 'Europe/London')",
"venue_id": "string, unique venue identifier",
"country_code": "string, two-letter country code (e.g. 'gb')",
"phone_number": "string or null, venue phone number",
"linked_venues": "array of URL slugs for linked venues"
},
"sample": {
"data": {
"city": "London",
"name": "Wild Tavern Chelsea",
"address": "2 Elystan St, Chelsea, London SW3 3NS, United Kingdom",
"url_key": "wildtavernchelsea",
"currency": "GBP",
"timezone": "Europe/London",
"venue_id": "ahNzfnNldmVucm9vbXMtc2VjdXJlchwLEg9uaWdodGxvb3BfVmVudWUYgICE94rM0AkM",
"country_code": "gb",
"phone_number": "+1 (555) 012-3456",
"linked_venues": []
},
"status": "success"
}
}About the SevenRooms API
Venue and Date Discovery
Start with get_venue_info, passing a venue_slug pulled from any SevenRooms reservation URL. The response includes venue_id, city, address, currency, timezone, country_code, phone_number, and a linked_venues array of related venue slugs — useful for restaurant groups that share a booking surface. Once you have a venue, get_available_dates accepts a start_date and num_days (up to 225) and returns a filtered valid_dates array containing only dates with at least one bookable slot, saving unnecessary searches on closed or fully-booked days.
Searching Time Slots
search_availability is the core query endpoint. Supply venue_slug, date, party_size (1–9), and optionally a time_slot in HH:MM format to center results around a preferred hour. The response groups slots into shifts, each carrying a shift_name, shift_persistent_id, and a time_slots array. Every slot has a type of either book (instantly confirmable) or request (requires venue approval), plus duration and policy details. The access_persistent_id and shift_persistent_id from this response are required inputs for the next step.
Holding and Completing a Reservation
hold_reservation claims a slot for 300 seconds (hold_duration_sec). It requires the exact date, time, party_size, venue_slug, shift_persistent_id, and access_persistent_id from search_availability. On success it returns a reservation_hold_id. create_reservation must be called within that 5-minute window with guest details — first_name, last_name, email, optional notes, dial_code, and venue_id — and returns a reservation_id plus a confirmation_number when the venue provides one. Email addresses must be deliverable; example.com domains are rejected.
The SevenRooms API is a managed, monitored endpoint for sevenrooms.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when sevenrooms.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 sevenrooms.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?+
- Build a restaurant discovery app that surfaces open tables across multiple linked SevenRooms venues using
linked_venuesfromget_venue_info. - Automate table booking in a travel itinerary tool by chaining
get_available_datesandsearch_availabilityfor multiple venues and dates. - Filter instantly bookable slots from requestable ones using the
typefield insearch_availabilityresults to present only confirmed availability. - Display venue details — address, phone number, and currency — on a local dining guide without requiring users to visit each SevenRooms page.
- Create a shift-aware availability calendar by mapping
shift_namefields fromsearch_availabilityto lunch and dinner periods. - Send reservation confirmation data including
reservation_idandconfirmation_numberto a CRM or email system after completing a booking.
| 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 SevenRooms have an official developer API?+
What does `search_availability` return, and how do `book` and `request` slot types differ?+
search_availability returns a shifts array. Each shift contains a shift_name, shift_persistent_id, and time_slots array. Each time slot carries a type of either book (the guest can confirm instantly) or request (the venue must approve the booking before it is confirmed). The access_persistent_id and shift_persistent_id from a chosen slot are required inputs for hold_reservation.How long does a reservation hold last, and what happens if I miss the window?+
hold_reservation returns a hold_duration_sec of 300 (5 minutes). If create_reservation is not called within that window, the hold expires and the slot is released back to availability. You would need to call search_availability and hold_reservation again to rebook the same or an alternative slot.