TRAVELAIDEVELOPER TOOLS API MCP READY

OpenTable Reviews API

Scrape OpenTable restaurant reviews as structured JSON: review text, dined and submitted dates, the diner's profile, and the full rating breakdown (overall, food, service, ambience, value, noise). For hospitality analytics and restaurant competitive intelligence. Pay per review, MCP-ready.

MEDIAN LAGon demand
PARAMETERS4
TOTAL USERS20
MONTHLY ACTIVE8
TOTAL RUNS62
RUNS SUCCEEDED88.9%
RATING5.0 (1)

Input parameters

PARAMETERTYPEREQDEFAULTDESCRIPTION
restaurantId string no Enter a single restaurant as either its OpenTable URL slug (for example 'r/central-park-boathouse-new-york-2') or the full restaurant page URL (for example…
restaurantIds string[] no Provide a list of restaurants to fetch in one run, each as an OpenTable URL slug or a full restaurant page URL.
maxResultsPerRestaurant integer no 30 How many reviews to return per restaurant. — drives your bill
includeRestaurantSummary boolean no False If enabled, also return one restaurant-summary row per restaurant with the aggregate rating breakdown and total counts.

Worked examples

Basic — the required input, with the schema's own example values
{
  "restaurantId": "r/central-park-boathouse-new-york-2",
  "restaurantIds": [
    "example"
  ]
}

Tasks

Saved runs with the inputs already filled in — each one a standalone page and a working configuration example.

Request a task →

Code

curl

curl -X POST "https://api.apify.com/v2/acts/johnvc~opentable-reviews-api/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"restaurantId": "r/central-park-boathouse-new-york-2", "restaurantIds": ["example"]}'

Python

from apify_client import ApifyClient

client = ApifyClient("APIFY_TOKEN")
run = client.actor("johnvc/opentable-reviews-api").call(
    run_input={'restaurantId': 'r/central-park-boathouse-new-york-2', 'restaurantIds': ['example']}
)
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)