OpenTable Availability Tracker
Pricing
from $8.00 / 1,000 dataset items
OpenTable Availability Tracker
Check real OpenTable reservation availability for any restaurant, date, time and party size. Returns every bookable timeslot, booking window, party-size limits and current offers as structured JSON. Schedule it to catch tables opening up. Pay only for the results you get.
Pricing
from $8.00 / 1,000 dataset items
Rating
0.0
(0)
Developer
axly
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
3 days ago
Last modified
Categories
Share
Check real reservation availability on OpenTable for any restaurant, date, time and party size — and get back every bookable timeslot, not just a yes/no.
Point it at a list of restaurants (ids, OpenTable URLs or plain names) or at a whole city, pick your dates and party sizes, and each run returns one row per restaurant × date × party size with the full slot list, booking window, party-size limits and current offers. No browser and no login required.
Who it's for
| You are | You get |
|---|---|
| Chasing a hard-to-book table | Schedule a run every 15 minutes with Only rows with availability on, and let a webhook ping you the moment a slot opens. |
| A concierge or travel service | Availability for a whole shortlist of restaurants across a client's trip dates in a single run. |
| A hospitality analyst | Slot counts over time as a direct occupancy and demand proxy across a market. |
| A travel or dining app developer | A clean JSON availability feed you can poll on a schedule instead of automating a browser. |
What you get — output fields
| Field | Type | Description |
|---|---|---|
restaurantId | string | OpenTable restaurant id |
name, url | string | Restaurant name and profile URL |
address, city, state, postalCode, country | string | Location |
latitude / longitude | number | GPS coordinates |
neighborhood | string | OpenTable neighborhood |
cuisine / cuisines | string / array | Cuisine tags |
priceBand | string | Price band, e.g. $31 to $50 |
phone | string | Restaurant phone number |
rating, reviewCount | number / integer | Overall score and rating volume |
date | string | Date checked |
requestedTime | string | Reference time used |
partySize | integer | Party size checked |
isAvailable | boolean | Whether anything is bookable |
availableSlotCount | integer | Number of bookable slots |
availableTimes | array | Bookable times as HH:MM |
earliestTime / latestTime | string | First and last bookable time |
slots | array | Full slot objects: time, table type, loyalty points, price, offer ids, dining area and booking token |
minPartySize, maxPartySize, maxDaysInAdvance | integer | Booking limits |
noAvailabilityReasons, dateMessages | array | Why nothing is bookable, when applicable |
bookingWindowStart / bookingWindowEnd | string | Current booking window |
hasPrivateDining | boolean | Bookable private dining spaces exist |
suggestedTimes | array | Alternatives OpenTable suggests when the date is full |
offers | array | Promotions and prix-fixe menus |
checkedAt | string | UTC timestamp of the check |
High-value use cases
- Catch a cancellation. Track one restaurant, one date, Only rows with availability on, scheduled every 15 minutes — a webhook fires the moment a table appears, and empty checks cost you nothing in results.
- Plan a trip. Track 20 restaurants across five nights and two party sizes
in one run, then sort the dataset by
availableSlotCount. - Measure demand in a market. Track the top 50 restaurants in a city nightly and chart slot counts as an occupancy proxy.
- Find the quiet nights. Compare the same restaurant across a week to see which evenings still have prime-time tables.
- Compare party sizes. Check 2 versus 4 versus 6 covers to find out where larger groups actually fit.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
restaurants | array | — | Restaurant ids (2295), profile URLs, or names (Balthazar New York) |
location | string | — | Track the top restaurants in an area instead of a fixed list |
maxRestaurants | integer | 20 | How many restaurants to pull when tracking by location |
dates | array | today | Dates as YYYY-MM-DD |
daysAhead | integer | 0 | Used when no dates are given: today plus this many days |
times | array | ["19:00"] | Reference times, 24-hour HH:MM |
partySizes | array | ["2"] | Party sizes to check |
fullDay | boolean | true | Whole service day instead of slots near the reference time |
onlyAvailable | boolean | false | Push only rows that have a bookable slot |
includeRestaurantInfo | boolean | true | Add name, address, GPS, cuisine, price band, phone and rating |
maxItems | integer | 500 | Safety cap on rows |
proxyConfiguration | object | Apify Proxy on | Leave enabled — see the FAQ |
Rows scale as restaurants × dates × times × partySizes. The Actor logs the
planned number of checks before it starts and never exceeds maxItems.
Example input
{"restaurants": ["https://www.opentable.com/restaurant/profile/2295","Balthazar New York"],"daysAhead": 6,"times": ["19:00"],"partySizes": ["2", "4"],"fullDay": true,"onlyAvailable": true,"maxItems": 100}
Example output
{"restaurantId": "2295","name": "Carmine's - 44th Street - NYC","url": "https://www.opentable.com/restaurant/profile/2295","city": "New York","state": "NY","latitude": 40.7573,"longitude": -73.9871,"cuisine": "Italian","priceBand": "$30 and under","rating": 4.6,"reviewCount": 32986,"date": "2026-09-12","requestedTime": "19:00","partySize": 2,"isAvailable": true,"availableSlotCount": 41,"availableTimes": ["11:00", "11:15", "11:30"],"earliestTime": "11:00","latestTime": "22:45","slots": [{"dateTime": "2026-09-12T19:00","time": "19:00","type": "Standard","points": 100,"priceAmount": 0,"offerIds": [],"diningAreas": ["INDOOR"],"token": "eyJ2IjozLCJtIjoxLCJ..."}],"minPartySize": 1,"maxPartySize": 14,"checkedAt": "2026-09-02T12:00:00Z"}
Scheduling, webhooks and integrations
- Schedule the Actor as often as you like — every 15 minutes is a common cadence for cancellation hunting.
- Webhooks on
ACTOR.RUN.SUCCEEDEDlet you alert Slack, email or your own service as soon as a run produces rows. Combine with Only rows with availability so a run that finds nothing produces no rows at all. - Export to JSON, CSV, Excel, XML or RSS, or connect Google Sheets, Zapier, Make, Airbyte or S3.
- Resume-safe: progress is checkpointed after every row, so an interrupted run picks up where it stopped without repeating checks.
Use it from an AI assistant (MCP)
Callable by Claude, ChatGPT or any MCP-compatible agent via the Apify MCP server — an assistant can answer "is there a table for four at Carmine's this Saturday?" by running it. From code:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("axlymxp/opentable-availability-tracker").call(run_input={"restaurants": ["2295"],"daysAhead": 6,"partySizes": ["2"],"onlyAvailable": True,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["date"], row["availableSlotCount"], row["availableTimes"])
FAQ
Is this real availability or an estimate? Real. Each row comes from OpenTable's own availability service for that exact restaurant, date and party size, at the moment the run executes.
Can it book a table for me? No. This Actor is read-only — it reports availability and returns each slot's booking token, but never makes, changes or cancels a reservation.
How do I identify a restaurant?
Any of three ways: the numeric OpenTable id, an
opentable.com/restaurant/profile/<id> URL, or the restaurant's name. Names are
resolved through OpenTable's own search; use the id or URL when a name is
ambiguous.
Why did a restaurant return no rows?
Either the name could not be matched (check the log — it says which entries were
skipped) or the date falls outside the venue's booking window. In the latter case
you still get a row with isAvailable: false and noAvailabilityReasons filled
in, unless Only rows with availability is on.
How far ahead can I check?
As far as the restaurant allows; maxDaysInAdvance in each row tells you the
limit for that venue (commonly 90 days).
Does it work outside the US? Yes — restaurants in every OpenTable market are supported.
Do I need a proxy? It is on by default and there is nothing to configure. OpenTable silently drops some requests coming from datacenter IP ranges, so leaving it enabled keeps runs reliable.
Is this legal? The Actor reads publicly available reservation information. You are responsible for using the output in line with OpenTable's terms and applicable law.