OpenTable Scraper
Pricing
Pay per usage
OpenTable Scraper
Extract comprehensive restaurant data from OpenTable, including menus, user reviews, ratings, and location details. Ideal for market research and dining analytics. For seamless extraction and to avoid IP blocking, using residential proxies is highly advised.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Shahid Irfan
Actor stats
0
Bookmarked
7
Total users
4
Monthly active users
3 days ago
Last modified
Categories
Share
OpenTable Restaurants Scraper
Extract restaurant listings and reservation-focused details from OpenTable in a structured dataset. Collect names, ratings, reviews, cuisine, pricing, address, contact data, and more in one run. Built for market research, local dining analysis, lead generation, and reporting workflows.
Features
- Rich restaurant records — Collect identity, rating, reviews, pricing, location, contact, and media fields.
- Flexible search inputs — Run by direct search URL or by date, time, party size, and location.
- Controlled result volume — Set exactly how many restaurants to collect with
results_wanted. - Clean structured output — Receive normalized dataset items ready for BI tools and automations.
- Reliable default run setup — Includes QA-friendly defaults for quick successful runs.
Use Cases
Local Market Research
Track restaurant density, price tiers, and rating distribution across cities and neighborhoods. Use this data to understand positioning and customer demand patterns.
Restaurant Discovery Products
Build searchable dining directories with enriched metadata. Populate cards with cuisine, pricing, ratings, and direct restaurant links.
Competitive Monitoring
Compare restaurants in the same geography by review volume, score, and visibility signals. Identify strong and weak performers in specific dining categories.
Sales Prospecting
Generate outreach lists with restaurant names, addresses, and phone numbers. Segment leads by location, cuisine, and pricing profile.
Reporting and Dashboards
Feed structured records into spreadsheets, BI systems, or internal dashboards. Monitor trends over time by re-running with consistent search inputs.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
start_url | String | No | https://www.opentable.com/s?dateTime=2026-01-20T19%3A00%3A00&covers=2&metroId=4 | Full OpenTable search/collection URL. If provided, this is used directly. |
date | String | No | 2026-01-20 | Reservation date in YYYY-MM-DD format. Used when start_url is not provided. |
time | String | No | 19:00 | Reservation time in HH:MM format. Used when start_url is not provided. |
covers | Integer | No | 2 | Party size from 1 to 20. Used when start_url is not provided. |
location | String | No | Los Angeles | Location term (city or neighborhood) used for search URL construction. |
results_wanted | Integer | No | 20 | Maximum number of restaurants to store in the dataset. |
proxyConfiguration | Object | No | { "useApifyProxy": false } | Proxy settings for improved stability in your environment. |
Output Data
Each dataset item contains:
| Field | Type | Description |
|---|---|---|
restaurant_id | Integer | Null | OpenTable restaurant identifier. |
name | String | Null | Restaurant display name. |
url | String | Null | Canonical restaurant page URL. |
cuisine | String | Null | Primary cuisine label. |
price_range | String | Null | Price band text. |
rating | Number | Null | Overall rating value. |
reviews_count | Integer | Null | Total review count. |
neighborhood | String | Null | Neighborhood or local area. |
city | String | Null | City name. |
state | String | Null | State/region code or label. |
postal_code | String | Null | Postal/ZIP code. |
address_line1 | String | Null | Primary street address. |
address_line2 | String | Null | Secondary address details. |
latitude | Number | Null | Latitude coordinate. |
longitude | Number | Null | Longitude coordinate. |
phone | String | Null | Raw phone number. |
formatted_phone | String | Null | Human-readable phone format. |
is_promoted | Boolean | Promotion flag. |
has_takeout | Boolean | Takeout availability flag. |
dining_style | String | Null | Dining style label. |
description | String | Null | Restaurant description text. |
booking_slots | Array | Available booking slot values when present. |
delivery_partners | Array | Delivery partner labels when available. |
image_url | String | Null | Primary restaurant image URL. |
Usage Examples
Basic URL Run
{"start_url": "https://www.opentable.com/s?dateTime=2026-01-20T19%3A00%3A00&covers=2&metroId=4","results_wanted": 20}
Parameter-Based Search
{"date": "2026-03-15","time": "19:30","covers": 4,"location": "New York","results_wanted": 80}
Large Collection with Proxy
{"start_url": "https://www.opentable.com/s?dateTime=2026-03-15T19%3A00%3A00&covers=2&metroId=8","results_wanted": 300,"proxyConfiguration": {"useApifyProxy": true}}
Sample Output
{"restaurant_id": 4485,"name": "Zuni Cafe","url": "https://www.opentable.com/zuni-cafe","cuisine": "Modern European","price_range": "$31 to $50","rating": 4.7,"reviews_count": 8237,"neighborhood": "Civic Center / Hayes Valley / Van Ness","city": "San Francisco","state": "CA","postal_code": "94102","address_line1": "1658 Market Street","address_line2": null,"latitude": 37.7736,"longitude": -122.421608,"phone": "4155522522","formatted_phone": "(415) 552-2522","is_promoted": false,"has_takeout": false,"dining_style": "Casual Elegant","description": "Zuni Café opened in San Francisco...","booking_slots": [],"delivery_partners": [],"image_url": "https://resizer.otstatic.com/v4/photos/69629956-2.jpg"}
Tips For Best Results
Use Stable Search URLs
- Use complete OpenTable search URLs for reproducible runs.
- Keep date/time/party size consistent when comparing runs.
Start Small, Then Scale
- Test with
results_wanted: 20first. - Increase limits after validating your workflow.
Handle Data Caps In Planning
- Some search contexts can cap total returned results.
- If you need broader coverage, split by location/date/time windows.
Keep Inputs Clean
- Use valid date/time formats.
- Keep
coversbetween1and20.
Integrations
- Google Sheets — Share and review restaurant data quickly.
- Airtable — Build searchable restaurant intelligence tables.
- Looker Studio / BI tools — Create dashboards for ratings and pricing trends.
- Webhooks — Send fresh dataset items to downstream systems.
- Zapier / Make — Automate notifications, enrichment, and storage pipelines.
Export formats available from dataset runs include JSON, CSV, Excel, XML, and RSS.
Frequently Asked Questions
How many restaurants can I collect in one run?
You can request any results_wanted value. Actual collected volume depends on available listings in the selected search context.
Can I run without start_url?
Yes. Provide date, time, covers, and/or location, and the actor will build a search URL automatically.
Why are some fields null?
Some restaurants do not expose every attribute in source listing data. Null values are expected for unavailable fields.
Can I use proxy settings?
Yes. Use proxyConfiguration to match your reliability requirements.
Is this suitable for scheduled monitoring?
Yes. This actor is designed for repeatable runs and can be scheduled in Apify.
Support
For issues or feature requests, use the Apify Actor issue/support channel for this actor.
Resources
Legal Notice
This actor is intended for legitimate data collection use cases. You are responsible for complying with applicable laws, platform terms, and data usage policies in your jurisdiction.