OpenTable Availability Tracker avatar

OpenTable Availability Tracker

Pricing

from $8.00 / 1,000 dataset items

Go to Apify Store
OpenTable Availability Tracker

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

axly

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

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 areYou get
Chasing a hard-to-book tableSchedule 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 serviceAvailability for a whole shortlist of restaurants across a client's trip dates in a single run.
A hospitality analystSlot counts over time as a direct occupancy and demand proxy across a market.
A travel or dining app developerA clean JSON availability feed you can poll on a schedule instead of automating a browser.

What you get — output fields

FieldTypeDescription
restaurantIdstringOpenTable restaurant id
name, urlstringRestaurant name and profile URL
address, city, state, postalCode, countrystringLocation
latitude / longitudenumberGPS coordinates
neighborhoodstringOpenTable neighborhood
cuisine / cuisinesstring / arrayCuisine tags
priceBandstringPrice band, e.g. $31 to $50
phonestringRestaurant phone number
rating, reviewCountnumber / integerOverall score and rating volume
datestringDate checked
requestedTimestringReference time used
partySizeintegerParty size checked
isAvailablebooleanWhether anything is bookable
availableSlotCountintegerNumber of bookable slots
availableTimesarrayBookable times as HH:MM
earliestTime / latestTimestringFirst and last bookable time
slotsarrayFull slot objects: time, table type, loyalty points, price, offer ids, dining area and booking token
minPartySize, maxPartySize, maxDaysInAdvanceintegerBooking limits
noAvailabilityReasons, dateMessagesarrayWhy nothing is bookable, when applicable
bookingWindowStart / bookingWindowEndstringCurrent booking window
hasPrivateDiningbooleanBookable private dining spaces exist
suggestedTimesarrayAlternatives OpenTable suggests when the date is full
offersarrayPromotions and prix-fixe menus
checkedAtstringUTC timestamp of the check

High-value use cases

  1. 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.
  2. Plan a trip. Track 20 restaurants across five nights and two party sizes in one run, then sort the dataset by availableSlotCount.
  3. Measure demand in a market. Track the top 50 restaurants in a city nightly and chart slot counts as an occupancy proxy.
  4. Find the quiet nights. Compare the same restaurant across a week to see which evenings still have prime-time tables.
  5. Compare party sizes. Check 2 versus 4 versus 6 covers to find out where larger groups actually fit.

Input parameters

ParameterTypeDefaultDescription
restaurantsarrayRestaurant ids (2295), profile URLs, or names (Balthazar New York)
locationstringTrack the top restaurants in an area instead of a fixed list
maxRestaurantsinteger20How many restaurants to pull when tracking by location
datesarraytodayDates as YYYY-MM-DD
daysAheadinteger0Used when no dates are given: today plus this many days
timesarray["19:00"]Reference times, 24-hour HH:MM
partySizesarray["2"]Party sizes to check
fullDaybooleantrueWhole service day instead of slots near the reference time
onlyAvailablebooleanfalsePush only rows that have a bookable slot
includeRestaurantInfobooleantrueAdd name, address, GPS, cuisine, price band, phone and rating
maxItemsinteger500Safety cap on rows
proxyConfigurationobjectApify Proxy onLeave 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.SUCCEEDED let 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 ApifyClient
client = 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.