OpenTable Restaurants & Reviews Scraper
Pricing
from $3.22 / 1,000 result saveds
OpenTable Restaurants & Reviews Scraper
Export public OpenTable restaurant profiles, ratings, and diner reviews for reputation monitoring, hospitality analytics, local SEO, and competitive research.
Pricing
from $3.22 / 1,000 result saveds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 days ago
Last modified
Categories
Share
OpenTable Reviews — Restaurants & API Scraper
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.
Output fields
The default dataset contains restaurant and review rows joined by restaurantId.
| Group | Fields |
|---|---|
| Identity | recordType, restaurantId, restaurantUrl, restaurantName, scrapedAt |
| Restaurant rating | rating, reviewCount, priceRange |
| Restaurant details | cuisines, description, phone, website, imageUrl |
| Location | address, city, state, postalCode, country, neighborhood, latitude, longitude |
| Review | reviewId, reviewText, reviewRating, foodRating, serviceRating, ambienceRating, valueRating, noiseLevel, dinedDate, submittedDate, reviewType, reviewTags, helpfulCount, helpfulDownCount, helpfulScore, restaurantReplyText, photoUrls, photoCount, page |
| Reviewer | reviewerName, reviewerInitials, reviewerLocation, reviewerReviewCount, reviewerIsVip |
Optional source fields are returned as null when OpenTable does not publish them for a record.
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}
Pricing
The Actor uses pay-per-event pricing: a small run-start event plus charges only for valid restaurant and review rows saved. See the live Pricing tab for exact current event prices before each run.
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 osfrom apify_client import ApifyClientclient = 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().itemsprint(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.”
FAQ
How can I export public OpenTable restaurant reviews?
Supply one or more restaurantIds or restaurantUrls, set a total maxItems cap, and download the resulting dataset as JSON, CSV, Excel, or another supported format.
How can I monitor OpenTable ratings and reviews through an API?
Schedule the Actor or call its API regularly with the same restaurant IDs. Store the normalized review IDs, ratings, text, and timestamps to detect new feedback and rating changes.
Can I send OpenTable restaurant data to Google Sheets, n8n, or an AI agent?
Yes. Connect the Actor dataset through an Apify integration, webhook, API client, or MCP server to feed Google Sheets, n8n workflows, and AI agents.
Does the Actor remove duplicate reviews?
Yes. Reviews are deduplicated by their public reviewId within each restaurant run.
Is this an official OpenTable API?
No. This Actor exports information visible on public OpenTable surfaces and is not affiliated with OpenTable.
Is scraping legal?
You are responsible for your use case, applicable laws, and website terms. Collect only public data and handle personal information responsibly.
Related Actors
- Google Maps Reviews Scraper
- Booking Reviews Scraper
- Tripadvisor Reviews Scraper
- Yelp Reviews Scraper
- Google Maps Scraper
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.