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
| PARAMETER | TYPE | REQ | DEFAULT | DESCRIPTION |
|---|---|---|---|---|
| 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
{
"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.
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)