Use this OpenTable reviews scraper and API to export public restaurant data for reputation monitoring, local SEO research, hospitality analytics, and competitive tracking. Provide restaurant IDs, profile URLs, or an OpenTable search URL and receive normalized, deduplicated records.
Input example
{
"restaurantIds": ["1204381", "404046"],
"maxReviewsPerRestaurant": 20,
"maxItems": 40,
"failOnBlocked": true
}
Output example
{
"recordType": "review",
"restaurantId": "1204381",
"restaurantUrl": "https://www.opentable.com/restaurant/profile/1204381",
"restaurantName": null,
"reviewId": "OT-1204381-example",
"reviewText": "Great food and attentive service.",
"reviewRating": 5,
"reviewType": "OPENTABLEVERIFIED",
"reviewTags": ["Good for special occasions"],
"helpfulCount": 3,
"helpfulDownCount": 1,
"helpfulScore": 2,
"restaurantReplyText": "Thank you for dining with us.",
"photoCount": 1,
"page": 1,
"scrapedAt": "2026-08-15T10:00:00.000Z"
}
Input settings
| Field | Description |
|---|---|
restaurantUrls |
Public OpenTable restaurant profile URLs. |
restaurantIds |
Numeric OpenTable restaurant IDs. This is the most reliable option when you already know the IDs. |
searchUrl |
Public OpenTable search-results URL used to discover restaurant profiles. |
maxReviewsPerRestaurant |
Maximum reviews collected for each restaurant. Set to 0 for profile-only collection. |
maxItems |
Maximum total dataset rows across all targets. |
failOnBlocked |
Fail clearly when no valid rows can be produced instead of returning an empty successful run. |
proxyConfiguration |
Optional Apify proxy configuration. The default uses US residential proxy access. |
At least one of restaurantUrls, restaurantIds, or searchUrl is required.
Input recipes
Monitor two restaurants
{"restaurantIds":["1204381","404046"],"maxReviewsPerRestaurant":25,"maxItems":50}
Collect a profile without reviews
{"restaurantUrls":[{"url":"https://www.opentable.com/r/bestia-los-angeles"}],"maxReviewsPerRestaurant":0,"maxItems":1}
Tips and limits
- Use numeric restaurant IDs for dependable recurring review monitoring.
- Keep
maxItemslow for the first run, then increase it after checking the output. - Public source availability varies by restaurant and region; some optional profile fields may be absent.
- The Actor does not access reservations, diner accounts, private booking details, or login-only data.
- If OpenTable denies all requested public pages, the default behavior is an explicit failed run rather than misleading empty output.
Who is it for?
- Restaurant operators tracking guest sentiment and service trends.
- Hospitality analytics teams comparing public ratings and review volume.
- Local SEO teams collecting structured location and reputation signals.
- Reputation-monitoring vendors feeding recurring public review exports into dashboards.
API usage
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~opentable-restaurants-reviews-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"restaurantIds":["1204381"],"maxReviewsPerRestaurant":10,"maxItems":10}'
JavaScript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/opentable-restaurants-reviews-scraper').call({
restaurantIds: ['1204381'], maxReviewsPerRestaurant: 10, maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/opentable-restaurants-reviews-scraper').call(run_input={
'restaurantIds': ['1204381'], 'maxReviewsPerRestaurant': 10, 'maxItems': 10,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
Use the returned dataset through client libraries, webhooks, Google Sheets, n8n, or other Apify integrations.
MCP and AI agents
Add the Apify MCP server from the command line:
claude mcp add --transport http apify https://mcp.apify.com/?tools=fetch_cat/opentable-restaurants-reviews-scraper
Or add it to an MCP client configuration:
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=fetch_cat/opentable-restaurants-reviews-scraper"
}
}
}
Example prompts: “Export the 20 newest reviews for restaurant 1204381” or “Compare the ratings and recurring review themes for these OpenTable restaurant IDs.”
Support
Open an issue from the Actor's Apify Store page with a reproducible public target, expected result, and run ID. Do not include credentials or private customer data.