OpenTable Restaurants Scraper
Pricing
from $1.20 / 1,000 results
OpenTable Restaurants Scraper
Extract OpenTable restaurant data at scale, including names, cuisines, locations, ratings, reviews, price ranges, booking details, availability insights, and restaurant URLs. Ideal for restaurant research, local business datasets, market analysis, and lead generation.
Pricing
from $1.20 / 1,000 results
Rating
5.0
(5)
Developer
Shahid Irfan
Maintained by CommunityActor stats
4
Bookmarked
66
Total users
7
Monthly active users
3 days ago
Last modified
Categories
Share
What does OpenTable Restaurants Scraper do?
OpenTable Restaurants Scraper collects restaurant listing data from OpenTable, the online reservation platform. Paste a metro page, search URL, or restaurant profile URL and get a structured dataset with names, cuisine, price band, ratings, review counts, addresses, phone numbers, photos, and dining features. You can also skip URLs entirely and search by location, date, time, party size, and sort order.
The Actor paginates search results automatically and returns up to 50 restaurants per page. It works across OpenTable domains in the United States, United Kingdom, Canada, Australia, France, Germany, Spain, Italy, Japan, Mexico, and other markets.
Why use OpenTable Restaurants Scraper?
- Restaurant datasets without manual work - Build city-level restaurant lists from OpenTable search and metro pages instead of copying rows by hand.
- Four export formats - Download results as JSON, CSV, Excel, or XML from the Apify dataset.
- Scheduling and monitoring - Refresh a city or neighborhood dataset daily to track new openings, rating shifts, and price changes.
- Ready for other tools - Send results to Google Sheets, Airtable, Make, Zapier, or your own API through webhooks.
- Flexible starting points - Use a direct URL when you already know the market, or use filters when your application builds searches on the fly.
What data can you extract from OpenTable?
| Field | Description |
|---|---|
restaurantId | OpenTable restaurant identifier |
name | Restaurant name |
url | OpenTable profile URL |
cuisine | Primary cuisine |
price | Price band label such as $50 and over |
priceBandId | Numeric price band from 1 to 4 |
rating | Overall diner rating |
reviewCount | All-time text review count |
recentReservationCount | Recent reservation activity |
neighborhood | Neighborhood or area |
diningStyle | Dining style such as Casual Dining |
description | Restaurant description |
topReview | Highlighted review snippet |
address | Full address in one line |
addressLine1 / addressLine2 | Street address parts |
city, state, postalCode, country | Address components |
phoneNumber | Phone number in dialable form |
formattedPhoneNumber | Phone number as displayed |
latitude / longitude | Coordinates |
profileImage | Main photo URL |
galleryImages | Additional photo URLs |
hasTakeout | Takeout availability |
hasPrivateDining | Private dining availability |
privateDiningLargestCapacity | Largest private dining party |
isInstantBookable | Instant booking support |
inPremiumMarketplace | Premium marketplace flag |
justAdded | Recently added flag |
bar, counter, highTop, outdoor | Seating features |
reservationMaxPartySize | Maximum party size for reservations |
orderOnlineLink | Online ordering link |
deliveryPartners | Delivery partner names |
awards | Restaurant awards |
sourceUrl | Page used for the record |
sourceType | Listing, landing module, or profile source |
sourcePage | Result page number |
metroId / metroName | Metro context |
totalRestaurantCount | Total results reported for the search |
How to use OpenTable Restaurants Scraper
- Open the Actor on Apify Store.
- Enter one or more OpenTable URLs, or fill in the location filters.
- Set the maximum number of restaurants and the page limit.
- Run the Actor.
- Download the dataset or connect it to a workflow.
If you leave the input empty, the Actor runs the Las Vegas metro example from the input form. You can replace it with any city, neighborhood, cuisine, landmark, or restaurant page.
Input Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
startUrls | Array | No | Las Vegas metro page | One or more OpenTable URLs. Search URLs paginate best. |
location | String | No | - | City, neighborhood, landmark, or restaurant name. Takes priority over the URL field. |
date | String | No | Next evening | Reservation date in YYYY-MM-DD format. Use together with time. |
time | String | No | Next evening | Reservation time in 24-hour HH:MM format. Use together with date. |
people | Integer | No | 2 | Party size from 1 to 20 for filter searches. |
sort | Select | No | OpenTable default | Result order: recommended, distance, rating, price, name, or newest. |
results_wanted | Integer | No | 20 | Maximum number of restaurants to save. |
max_pages | Integer | No | 3 | Maximum number of result pages to request. Each page holds up to 50 restaurants. |
proxyConfiguration | Object | No | No proxy | Optional proxy settings. Leave empty to run direct; add Apify Proxy or custom proxy URLs when needed. |
A location value wins over the URL field, so a prefilled URL in the form cannot override a search you type. When no location is set, the URL fields are used as given and the other filter fields are ignored for that run.
Usage Examples
Collect restaurants from a metro page
Start from a metro page and let the Actor paginate the full market:
{"startUrls": [{ "url": "https://www.opentable.com/metro/las-vegas-restaurants" }],"results_wanted": 150,"max_pages": 4}
Collect from several cities in one run
Use multiple search URLs to build a combined dataset:
{"startUrls": [{ "url": "https://www.opentable.com/s?term=Las%20Vegas&covers=2¤tview=list" },{ "url": "https://www.opentable.com/s?term=New%20York&covers=2¤tview=list" }],"results_wanted": 200,"max_pages": 3}
Search by location and party size
Skip URLs when your application builds searches from user input. Date and time must be supplied together:
{"location": "Chicago","date": "2026-11-14","time": "19:30","people": 4,"sort": "rating","results_wanted": 100,"max_pages": 3}
Collect a single restaurant profile
Use a restaurant page when you need one record with the full field set:
{"startUrls": [{ "url": "https://www.opentable.com/r/hells-kitchen-caesars-palace-las-vegas" }],"results_wanted": 1}
Output Data
| Field | Type | Description |
|---|---|---|
restaurantId | Number | OpenTable restaurant identifier |
name | String | Restaurant name |
url | String | Profile URL |
price | String | Price band label |
cuisine | String | Primary cuisine |
neighborhood | String | Neighborhood name |
rating | Number | Overall rating |
reviewCount | Number | All-time text review count |
recentReservationCount | Number | Recent reservation activity |
description | String | Description text |
topReview | String | Highlighted review snippet |
address | String | Full address |
phoneNumber | String | Phone number |
latitude / longitude | Number | Coordinates |
profileImage | String | Main photo URL |
galleryImages | Array | Additional photo URLs |
deliveryPartners | Array | Delivery partner names |
awards | Array | Award names |
sourceUrl | String | Page used for the record |
sourceType | String | Listing, landing module, or profile source |
sourcePage | Number | Result page number |
Sample Output
{"restaurantId": 5056,"name": "TAO Asian Bistro - Las Vegas","url": "https://www.opentable.com/r/tao-asian-bistro-las-vegas","cuisine": "Contemporary Asian","price": "$50 and over","priceBandId": 4,"currencySymbol": "$","neighborhood": "The Venetian and Palazzo","diningStyle": "Casual Elegant","rating": 4.7,"reviewCount": 14164,"recentReservationCount": 174,"description": "TAO Asian Bistro invites you into a world of bold Pan-Asian flavors and captivating ambiance. Indulge in expertly crafted dishes like the Satay of Chilean Sea Bass and Spicy Tuna on Crispy Rice, inspired by the culinary traditions of Japan, China, and Thailand.","topReview": "Outstanding Food and service. Well worth the visit and will return.","address": "3377 S. Las Vegas Blvd., Suite 2025, Las Vegas, NV, 89109","city": "Las Vegas","state": "NV","postalCode": "89109","phoneNumber": "+17023888338","formattedPhoneNumber": "(702) 388-8338","latitude": 36.1218457,"longitude": -115.1696057,"profileImage": "https://resizer.otstatic.com/v3/photos/29631200-1?width=320&height=180&webp=true","galleryImages": ["https://resizer.otstatic.com/v4/photos/29631200-1?width=640&height=360","https://resizer.otstatic.com/v4/photos/97715600-1?width=640&height=360"],"hasTakeout": true,"hasPrivateDining": true,"outdoor": false,"metroId": 10,"metroName": "Las Vegas","totalRestaurantCount": 420,"sourceUrl": "https://www.opentable.com/s?covers=2&metroId=10&term=Las+Vegas&page=1","sourceType": "multiSearch","sourcePage": 1}
Tips for Best Results
- Use a metro page or a search URL when you need many restaurants. Both give the Actor a full result set to paginate.
- Add
dateandtimewhen availability matters. A weekend dinner shows different restaurants than a weekday lunch. - If you omit the date and time, the Actor picks the next evening automatically so that pagination returns the complete result set.
- Start with a small
results_wantedvalue while testing, then raise it for production runs. - Increase
max_pageswhen you need more than 50 records. Three pages cover 150 restaurants. - Use a search URL with your own filters (cuisine, price, neighborhood) when you want a narrower dataset.
- The Actor runs without a proxy by default. If you plan very large or repeated runs and see blocking, enable Apify Proxy with residential proxies.
- Some fields are missing when a restaurant does not publish them. Empty values are removed from each record.
Integrations
- Google Sheets - Send restaurant lists to a spreadsheet for review.
- Airtable - Build a searchable restaurant directory.
- Webhooks - Push finished datasets to your own systems.
- Make and Zapier - Connect results to no-code workflows.
- API - Read datasets from your application through the Apify API.
Export Formats
- JSON - For applications and data pipelines.
- CSV - For spreadsheets and reporting.
- Excel - For business analysis.
- XML - For system imports.
Frequently Asked Questions
Can I scrape OpenTable restaurants in different countries?
Yes. Use the OpenTable domain for the market you need, such as opentable.co.uk, opentable.ca, opentable.com.au, opentable.fr, opentable.de, opentable.es, opentable.it, opentable.jp, or opentable.com.mx. The Actor matches the request region to the domain.
Can I collect full restaurant reviews?
No. The Actor collects listing data, ratings, review counts, and one highlighted review snippet per restaurant. It does not collect full review threads.
How many restaurants can I collect in one run?
Set results_wanted and max_pages to control the volume. Each result page holds up to 50 restaurants, and large metros return several hundred matching results for a dinner search.
Why does the result count change between runs?
OpenTable builds search results around a reservation date, time, and party size. Availability changes throughout the day, so a search for Friday dinner can return a different set than a search for Tuesday lunch.
Why are some fields empty?
Restaurants publish different amounts of information. A restaurant without a public phone number, description, or photo simply has no value for that field. Empty values are removed to keep the dataset compact.
Can I use filtered OpenTable search URLs?
Yes. Any OpenTable search URL works, including cuisine, neighborhood, price, and date filters. If the URL contains a relative day or meal filter, the Actor converts it to a concrete date and time so that all result pages are returned.
Can I run this Actor on a schedule?
Yes. Schedule the Actor in Apify Console to refresh a market daily, weekly, or at any interval your workflow needs.
Does this Actor work without a browser?
Yes. The Actor requests public OpenTable pages directly. No browser window, login, or extension is needed.
Is it legal to scrape OpenTable?
Scraping public restaurant data can be legal, but you are responsible for following OpenTable's terms, local laws, and data privacy rules. Use the data for legitimate research and analysis.
Related Actors
- Expedia Hotels Scraper - Collect hotel listings, prices, ratings, and property details.
- Propertyfinder Scraper - Collect real estate listings with pricing, specifications, and agent details.
Support
For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.
Legal Notice
This Actor is designed for legitimate collection of publicly available OpenTable restaurant data. Users are responsible for using the data responsibly and complying with OpenTable's terms of service and applicable laws.