OpenTable Restaurants Scraper avatar

OpenTable Restaurants Scraper

Pricing

from $1.20 / 1,000 results

Go to Apify Store
OpenTable Restaurants Scraper

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

Shahid Irfan

Maintained by Community

Actor stats

4

Bookmarked

66

Total users

7

Monthly active users

3 days ago

Last modified

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?

FieldDescription
restaurantIdOpenTable restaurant identifier
nameRestaurant name
urlOpenTable profile URL
cuisinePrimary cuisine
pricePrice band label such as $50 and over
priceBandIdNumeric price band from 1 to 4
ratingOverall diner rating
reviewCountAll-time text review count
recentReservationCountRecent reservation activity
neighborhoodNeighborhood or area
diningStyleDining style such as Casual Dining
descriptionRestaurant description
topReviewHighlighted review snippet
addressFull address in one line
addressLine1 / addressLine2Street address parts
city, state, postalCode, countryAddress components
phoneNumberPhone number in dialable form
formattedPhoneNumberPhone number as displayed
latitude / longitudeCoordinates
profileImageMain photo URL
galleryImagesAdditional photo URLs
hasTakeoutTakeout availability
hasPrivateDiningPrivate dining availability
privateDiningLargestCapacityLargest private dining party
isInstantBookableInstant booking support
inPremiumMarketplacePremium marketplace flag
justAddedRecently added flag
bar, counter, highTop, outdoorSeating features
reservationMaxPartySizeMaximum party size for reservations
orderOnlineLinkOnline ordering link
deliveryPartnersDelivery partner names
awardsRestaurant awards
sourceUrlPage used for the record
sourceTypeListing, landing module, or profile source
sourcePageResult page number
metroId / metroNameMetro context
totalRestaurantCountTotal results reported for the search

How to use OpenTable Restaurants Scraper

  1. Open the Actor on Apify Store.
  2. Enter one or more OpenTable URLs, or fill in the location filters.
  3. Set the maximum number of restaurants and the page limit.
  4. Run the Actor.
  5. 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

ParameterTypeRequiredDefaultDescription
startUrlsArrayNoLas Vegas metro pageOne or more OpenTable URLs. Search URLs paginate best.
locationStringNo-City, neighborhood, landmark, or restaurant name. Takes priority over the URL field.
dateStringNoNext eveningReservation date in YYYY-MM-DD format. Use together with time.
timeStringNoNext eveningReservation time in 24-hour HH:MM format. Use together with date.
peopleIntegerNo2Party size from 1 to 20 for filter searches.
sortSelectNoOpenTable defaultResult order: recommended, distance, rating, price, name, or newest.
results_wantedIntegerNo20Maximum number of restaurants to save.
max_pagesIntegerNo3Maximum number of result pages to request. Each page holds up to 50 restaurants.
proxyConfigurationObjectNoNo proxyOptional 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&currentview=list" },
{ "url": "https://www.opentable.com/s?term=New%20York&covers=2&currentview=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

FieldTypeDescription
restaurantIdNumberOpenTable restaurant identifier
nameStringRestaurant name
urlStringProfile URL
priceStringPrice band label
cuisineStringPrimary cuisine
neighborhoodStringNeighborhood name
ratingNumberOverall rating
reviewCountNumberAll-time text review count
recentReservationCountNumberRecent reservation activity
descriptionStringDescription text
topReviewStringHighlighted review snippet
addressStringFull address
phoneNumberStringPhone number
latitude / longitudeNumberCoordinates
profileImageStringMain photo URL
galleryImagesArrayAdditional photo URLs
deliveryPartnersArrayDelivery partner names
awardsArrayAward names
sourceUrlStringPage used for the record
sourceTypeStringListing, landing module, or profile source
sourcePageNumberResult 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 date and time when 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_wanted value while testing, then raise it for production runs.
  • Increase max_pages when 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.

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.

Support

For issues, feature requests, or custom Actor work, use the Issues tab on the Actor page or contact the developer through Apify.

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.