OpenTable Reviews Scraper
Pricing
from $0.99 / 1,000 reviews
OpenTable Reviews Scraper
Extract OpenTable restaurant reviews: ratings, review text, reviewer profiles, helpfulness votes, and restaurant replies. Scrape one restaurant or a whole metro area.
Pricing
from $0.99 / 1,000 reviews
Rating
0.0
(0)
Developer
ParseBird
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
OpenTable Reviews Scraper
OpenTable Reviews Scraper extracts diner reviews from OpenTable restaurant pages — ratings, review text, reviewer profiles, and restaurant replies — for one restaurant or an entire metro area at once.
| Pull star ratings, food/service/ambience/value sub-scores, noise level, helpfulness votes, and reviewer details from any OpenTable restaurant, or point it at a metro page to pull reviews from every restaurant listed there. |
| ParseBird OpenTable Suite • Restaurant & review data | |
|
OpenTable Reviews Scraper You are here |
OpenTable Restaurants Scraper Metro, search & profile listings |
Copy to your AI assistant
Use the Apify actor "parsebird/opentable-reviews-scraper" via the ApifyClient to scrape OpenTable restaurant reviews. Example: client.actor("parsebird/opentable-reviews-scraper").call(run_input={"startUrls": [{"url": "https://www.opentable.com/r/bestia-los-angeles"}], "results_wanted": 50}). Inputs: startUrls (array of {url}, either an OpenTable restaurant profile URL like opentable.com/r/<slug> or a metro/city listing URL like opentable.com/metro/<city>-restaurants — metro URLs expand into every restaurant listed on that page), results_wanted (integer, default 20, max reviews to collect in the run across all Start URLs, split round-robin across restaurants when there's more than one), proxyConfiguration (object, defaults to Apify's Unblocker proxy group, required — OpenTable blocks Datacenter and Residential proxies). Output fields per review include reviewId, restaurantName, restaurantId, restaurantUrl, rating, text, author, date, visitDate, foodRating, serviceRating, ambienceRating, valueRating, noiseLevel, helpfulCount, helpfulUp, helpfulDown, reviewType, reviewerName, reviewerInitials, reviewerReviewCount, reviewerMetro, reviewerIsVip, publicRestaurantReply, publicRestaurantReplyDate, and photoUrls. Full API spec: https://apify.com/parsebird/opentable-reviews-scraper/api. Get an API token at https://console.apify.com/settings/integrations.
What does OpenTable Reviews Scraper do?
OpenTable Reviews Scraper is a review-extraction tool for OpenTable, the restaurant reservation platform used by tens of thousands of restaurants across the US and beyond. Give it a restaurant page and it returns every review OpenTable shows — star rating, sub-ratings, full text, reviewer details, and any public reply from the restaurant — ready for a spreadsheet, sentiment model, or reputation dashboard.
- 🍽️ Scrape reviews from a single restaurant, several named restaurants, or a whole metro/city listing page in one run
- ⭐ Full rating breakdown: overall, food, service, ambience, value, and noise level
- 👤 Reviewer profile data: name, initials, review count, home metro, VIP status, and profile photo
- 👍 Helpfulness votes (upvotes/downvotes) and restaurant replies with reply date
- 📸 Review photo URLs when diners attach photos
- 🔁 Automatic pagination — newest reviews first, no manual page clicking
- ⚙️ Runs on Apify's infrastructure with scheduling, API access, and integrations
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| startUrls | array of {url} | Yes | Bestia (LA) example URL | OpenTable restaurant profile URLs or metro/city listing URLs. Metro/city URLs expand into every restaurant on that page. |
| results_wanted | integer | No | 20 | Maximum number of reviews to collect in this run, across all Start URLs combined. |
| proxyConfiguration | object | No | Unblocker (US) | Proxy settings. OpenTable's Akamai bot protection blocks Datacenter and Residential proxies — Unblocker is required. |
Basic review extraction
{"startUrls": [{ "url": "https://www.opentable.com/r/bestia-los-angeles" }],"results_wanted": 50}
Batch scraping from a metro search
{"startUrls": [{ "url": "https://www.opentable.com/metro/los-angeles-restaurants" }],"results_wanted": 100}
Competitive monitoring across restaurants
{"startUrls": [{ "url": "https://www.opentable.com/r/bestia-los-angeles" },{ "url": "https://www.opentable.com/r/71above-los-angeles" }],"results_wanted": 200}
What data can you extract from OpenTable?
| Field | Description |
|---|---|
| reviewId, restaurantName, restaurantId, restaurantUrl | Identifiers for the review and its restaurant |
| rating, foodRating, serviceRating, ambienceRating, valueRating, noiseLevel | Full rating breakdown |
| text, date, visitDate, submittedDate | Review content and timing |
| author, reviewerInitials, reviewerReviewCount, reviewerMetro, reviewerIsVip, reviewerProfileColor, reviewerPhoto | Reviewer profile |
| helpfulCount, helpfulUp, helpfulDown | Helpfulness voting |
| publicRestaurantReply, publicRestaurantReplyDate | Restaurant's public reply, if any |
| reviewType, fromPreviousConcept, photoUrls | Verification status and attached photos |
Output example
{"reviewId": "OT-96412-2110686937","restaurantName": "Bestia","restaurantId": 96412,"restaurantUrl": "https://www.opentable.com/r/bestia-los-angeles","rating": 5,"text": "The food was incredible, especially the bone marrow and the cavatelli. Service was attentive and the atmosphere was lively.","author": "FoodieLA","date": "2026-09-20T10:45:00Z","visitDate": "2026-09-18T19:30:00-07:00","foodRating": 5,"serviceRating": 5,"ambienceRating": 4,"valueRating": 5,"noiseLevel": "LOUD","helpfulCount": 12,"helpfulUp": 12,"helpfulDown": 0,"reviewType": "OPENTABLEVERIFIED","reviewerReviewCount": 34,"reviewerMetro": "Los Angeles","reviewerIsVip": true}
Download results as JSON, CSV, Excel, HTML, or XML from the Apify Console, or pull them programmatically through the Apify API.
How to scrape OpenTable reviews
- Open OpenTable Reviews Scraper on the Apify Store and click Try for free.
- Paste one or more OpenTable restaurant URLs, or a metro/city listing URL, into Start URLs.
- Set Max reviews to the number of reviews you want.
- Click Start and wait for the run to finish.
- Open the Dataset tab to view, filter, and export the scraped reviews.
How it works
- For each Start URL, the Actor checks whether it's a restaurant profile page or a metro/city listing page.
- Listing pages are expanded into the individual restaurant profile URLs shown on them.
- Each restaurant's reviews are read directly from OpenTable's own server-rendered page data, newest first, paginating 10 reviews at a time.
- When a run has more than one restaurant, review collection round-robins across them so the review budget is shared rather than spent entirely on the first restaurant.
- Every review is written as one dataset row as soon as it's collected.
How much does it cost to scrape OpenTable?
OpenTable Reviews Scraper uses pay-per-event pricing — you're charged only for reviews actually saved to your dataset.
| Plan | Price per review | Price per 1,000 |
|---|---|---|
| Free | $0.00129 | $1.29 |
| Bronze | $0.00119 | $1.19 |
| Silver | $0.00109 | $1.09 |
| Gold | $0.00099 | $0.99 |
Collecting 500 reviews on the Free plan costs about $0.65. Apify's monthly platform usage credits apply to this Actor like any other.
Using the API
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_API_TOKEN>")run = client.actor("parsebird/opentable-reviews-scraper").call(run_input={"startUrls": [{"url": "https://www.opentable.com/r/bestia-los-angeles"}],"results_wanted": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["author"], item["rating"], item["text"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });const run = await client.actor('parsebird/opentable-reviews-scraper').call({startUrls: [{ url: 'https://www.opentable.com/r/bestia-los-angeles' }],results_wanted: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Schedule recurring runs to track new reviews week over week, or connect it to Zapier/Make through Apify's integrations.
Is it legal to scrape OpenTable?
Scraping publicly available data — like reviews shown on a public OpenTable restaurant page — is generally considered legal, and courts have repeatedly upheld this for public web pages. This Actor only collects review data OpenTable already displays to any visitor; it never accesses private diner accounts or reservation details. You are responsible for how you use the collected data and for complying with OpenTable's terms of service and applicable law in your jurisdiction. See Apify's blog post on the legality of web scraping for more detail.
Related Actors
- OpenTable Restaurants Scraper — restaurant listing data (cuisine, price, address, photos) from OpenTable
- TheFork Scraper — restaurant and review data from TheFork (formerly La Fourchette / El Tenedor)
FAQ
How many reviews can I collect in one run?
As many as you set in results_wanted. Each restaurant page is paginated 10 reviews at a time, newest first, up to that restaurant's total review count.
Why does the Actor need Unblocker proxies specifically? OpenTable's Akamai bot protection blocks Apify's Datacenter and Residential proxy groups outright. Unblocker is the only proxy group that reliably loads OpenTable pages, so it's the required default.
What order are reviews returned in? Newest first — the same default order OpenTable shows on the restaurant page itself.
Can I scrape reviews for an entire city at once?
Yes. Pass a metro/city listing URL (e.g. opentable.com/metro/los-angeles-restaurants) as a Start URL and it expands into every restaurant listed on that page.
What happens if a restaurant has fewer reviews than my results_wanted?
The Actor collects everything available for that restaurant and moves on — it never fabricates or duplicates reviews.
Can I schedule recurring runs? Yes. Use Apify's Scheduler to run this Actor daily, weekly, or at any interval.
Does this Actor have an API? Yes — every Apify Actor is automatically available as an API. See the API tab for the full spec, or use the Python/JavaScript examples above.
Something not working? Report it on the Actor's Issues tab in Apify Console — OpenTable occasionally changes its site, and prompt reports help keep this Actor maintained.