OpenTable Restaurants, Ratings & Reviews Scraper avatar

OpenTable Restaurants, Ratings & Reviews Scraper

Pricing

from $19.00 / 1,000 results

Go to Apify Store
OpenTable Restaurants, Ratings & Reviews Scraper

OpenTable Restaurants, Ratings & Reviews Scraper

Scrape OpenTable restaurants in any city. Export profiles, ratings, reviews, menus, cuisine, price, hours, coordinates as CSV, Excel, JSON, or XML.

Pricing

from $19.00 / 1,000 results

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

ParseForge Banner

🍽️ OpenTable Scraper: Restaurants, Ratings & Reviews

πŸš€ Export OpenTable restaurant listings in seconds. Ratings, reviews, cuisine, hours, menus, prices, and exact coordinates for any city OpenTable indexes, ready to drop into your spreadsheet, BI tool, or AI pipeline.

πŸ•’ Last updated: 2026-05-21 Β· πŸ“Š 48 fields per record Β· 60k+ restaurants indexed worldwide Β· OpenTable coverage across 20+ countries Β· Real-time ratings + reservations

OpenTable is the long-running reservations network that restaurant operators have used since the late 1990s, with active listings in cities from New York to Tokyo to Madrid. The structured data sitting behind each restaurant page is far richer than the booking widget you see on the front end: rating breakdowns by food, service, ambience, value, and noise, cuisine tags, dining style, hours of operation, price band, accepted payment methods, accessibility flags, neighborhood and metro, exact latitude and longitude, contact phone, and a recent reservation count. This Actor pulls all of it into clean JSON or CSV so you can analyze restaurants the way OpenTable's own analytics team does.

The Actor accepts plain-English search terms ("New York", "Greenwich Village italian", "Paris brunch") and walks the OpenTable search results page by page, enriching each restaurant with the full profile data fetched from its dedicated page. You can also pass direct restaurant URLs if you already have a target list. Output is the same flat record shape regardless of input mode, so it merges cleanly into existing datasets, and the run finishes whether the user is on a free preview or a paid plan up to a million items.

🎯 Target AudienceπŸ’‘ Primary Use Cases
Restaurant operators, food critics, hospitality investors, marketing agencies, travel planners, data journalists, academic researchers, location analytics teamsCompetitive analysis, market entry research, restaurant scoring and ranking, neighborhood food density studies, menu trend tracking, review monitoring, deal sourcing for hospitality M&A, dataset enrichment for travel apps

πŸ“‹ What the OpenTable Scraper does

  • πŸ” Searches OpenTable by city, neighborhood, or cuisine. Pass any term OpenTable's search bar accepts and the Actor paginates through every result page until your maxItems cap is hit.
  • πŸ’° Filters by price band. Restrict the output to $, $$, $$$, or $$$$ tiers, alone or combined.
  • πŸ“Š Sorts by Featured or Distance. Match the order users actually see on the OpenTable site.
  • 🍽️ Enriches each restaurant with its full profile. Hours, executive chef, dress code, parking, payment options, full address, public transit, and accessibility flags all pulled from the restaurant's detail page.
  • πŸ”— Accepts direct restaurant URLs. Drop in a list of /r/... or /restaurant/profile/... links and the Actor scrapes those directly without the search step.
  • πŸ“· Captures every gallery photo. All restaurant photos available on OpenTable's CDN are returned as a deduplicated URL list.

Each record stands on its own with 48 named fields covering identification (restaurant ID, slug, OpenTable URL), commerce (price band, accepted payments, delivery partners, private dining flags), reputation (overall plus 5 sub-ratings, review count, recent reservation count, one recent review text), and geography (street address, neighborhood, metro, latitude, longitude, cross street, public transit). The output is the same shape whether you searched a city or fed a list of URLs.

πŸ’‘ Why it matters: OpenTable is the booking layer that runs a meaningful share of dinner reservations in the English-speaking world. The data sitting behind it is the closest public proxy for actual restaurant traffic in many markets, and it includes detail you cannot get from a generic mapping service: granular sub-ratings, recent reservation counts, and the operator-curated cuisine tags and amenities.


🎬 Full Demo

🚧 Coming soon: a 3-minute walkthrough showing search, enrichment, and CSV export end to end.


βš™οΈ Input

FieldTypeRequiredDescription
searchTermsarray of stringsOne of searchTerms or restaurantUrlsCities, neighborhoods, cuisines, or restaurant names to search on OpenTable. Each entry is paginated independently.
restaurantUrlsarray of stringsOptionalDirect OpenTable restaurant URLs. Used instead of or together with search terms.
maxItemsintegerNoCap on records returned. Free users are limited to 10; paid users may set up to 1,000,000.
priceBandsarray of stringsNoRestrict the search to specific price tiers. Pick from "1" ($), "2" ($$), "3" ($$$), "4" ($$$$).
sortBystringNoHow OpenTable orders results. Either "web_conversion" (Featured, the default) or "distance".
enrichWithProfilebooleanNoIf true (default), each restaurant's profile page is fetched for the complete record. Set to false for a faster, lighter run.

Example: search a city for the top 50 paid records.

{
"searchTerms": ["New York"],
"maxItems": 50,
"priceBands": ["3", "4"],
"sortBy": "web_conversion",
"enrichWithProfile": true
}

Example: scrape three specific restaurants directly.

{
"restaurantUrls": [
"https://www.opentable.com/r/le-bernardin-new-york",
"https://www.opentable.com/restaurant/profile/100",
"https://www.opentable.com/r/eleven-madison-park"
],
"maxItems": 3
}

⚠️ Good to Know: OpenTable serves slightly different result sets per region. Searches default to a US viewpoint. If you want France, Spain, or Japan results, include the country or city name explicitly in searchTerms (e.g. "Paris", "Tokyo Ginza"). The enrichWithProfile step adds roughly 1 second per restaurant.


πŸ“Š Output

Each record is a flat JSON object with all 48 fields below. Empty values are returned as null or empty arrays so downstream tooling never has to guess.

🧾 Schema

FieldTypeExample
πŸ–Ό imageUrlstringhttps://resizer.otstatic.com/v4/photos/49981008-3?width=640&height=640
🍽 titlestringSofia's of Little Italy
πŸ”— urlstringhttps://www.opentable.com/r/sofias-of-little-italy-new-york
πŸ†” restaurantIdinteger1228705
πŸ“ descriptionstringA trendy Italian restaurant & bar located at 143 Mulberry Street...
🍝 primaryCuisinestringItalian
🧾 cuisinesarray of strings["Italian", "Pizza Bar"]
πŸ’° priceRangestring$30 and under
πŸͺ™ priceTierinteger2
🍴 diningStylestringCasual Dining
⭐ ratingnumber4.3
🍲 ratingFoodnumber4.3
πŸ›Ž ratingServicenumber4.4
πŸŒƒ ratingAmbiencenumber4.5
πŸ’΅ ratingValuenumber4.1
πŸ”Š ratingNoisenumber2
πŸ’¬ reviewCountinteger112
πŸ—’ totalReviewCountinteger26
πŸ“… recentReservationCountinteger6
πŸ—£ topReviewTextstringThe food was good. We sat outdoors and I loved how the staff handled a crazy man outside...
πŸ“ž phoneNumberstring(212) 219-9799
🌐 websitestringhttps://www.sofias143.com/
🏠 addressobject{ line1, line2, city, state, postCode, country }
πŸ“ neighborhoodstringLittle Italy
πŸŒ† metrostringNew York City
πŸ›£ crossStreetstringBetween Grand Street and Hester Street
πŸš‡ publicTransitstringCanal Street Station: Served by the N, Q, R, W, 6, and J/Z trains...
πŸ“ latitudenumber40.7189347
πŸ“ longitudenumber-73.9978869
πŸ•’ hoursOfOperationstringDaily 11:00 am-11:00 pm
πŸ‘” dressCodestringBusiness Casual
πŸ‘¨β€πŸ³ executiveChefstring or nullnull
πŸ…ΏοΈ parkingInfostringNone
πŸ…ΏοΈ parkingDetailsstring or nullnull
✨ featuresobject{ bar, counter, highTop, outdoor, reservationMaxPartySize }
πŸ’³ paymentOptionsarray of strings["AMEX", "Discover", "Mastercard", "Visa"]
πŸ”– additionalDetailsarray of strings["Bar/Lounge", "Beer", "Delivery", "Dog Friendly", "Wheelchair Access"]
πŸ₯‘ hasTakeoutbooleantrue
πŸ₯‚ hasPrivateDiningbooleantrue
πŸ›΅ hasDeliveryPartnersbooleanfalse
πŸ›΅ hasDeliveryDirectbooleantrue
πŸ›΅ deliveryPartnersarray of objects[{ deliveryPartnerName, menuUrl }]
🌐 orderOnlineLinkstring or nullhttps://www.grubhub.com/restaurant/sofias-in-little-italy-nyc...
πŸ† awardsarray of objects or nullnull
πŸ’Ž inPremiumMarketplacebooleanfalse
πŸ–Ό photoUrlsarray of strings["https://resizer.otstatic.com/v4/photos/49981008-3?width=640&height=360", ...]
πŸ•’ scrapedAtstring (ISO 8601)2026-05-21T16:25:08.884Z
❌ errorstring or nullnull

πŸ“¦ Sample records


✨ Why choose this Actor

Capability
🍽️Full restaurant detail, not just listings. Every record carries hours, executive chef, dress code, parking, payment methods, accessibility flags, and the full delivery partner list, not just name and rating.
⭐Five-axis ratings, not one number. Overall, food, service, ambience, value, and noise scores arrive separately so you can model "loud but good" or "quiet but expensive" properly.
πŸ“Exact coordinates. Latitude and longitude in every record, suitable for direct ingestion into PostGIS, BigQuery GIS, or a CARTO map.
🌐Multi-country. OpenTable runs in 20+ countries and the search term is the only knob you need to switch from "New York" to "London" to "Madrid".
πŸ”Two input modes. Search by text or feed direct URLs. The output shape is identical so both flows merge cleanly into the same dataset.
πŸ†“Free tier for previewing. Free Apify accounts can run a 10-record preview before committing to a paid plan.
🧾Schema is flat and stable. Forty-eight fields, dot-pathed objects only where the source is structurally nested (address, features, delivery partners).

πŸ“Š A single New York search returns 600 to 800 distinct restaurants depending on price filter, and the Actor pulls roughly 5 records per minute with full profile enrichment on a residential proxy.


πŸ“ˆ How it compares to alternatives

ApproachCostCoverageRefreshFiltersSetup
⭐ OpenTable Scraper (this Actor)Pay per item, free previewAll countries OpenTable indexesOn demandSearch term, price band, sort order, direct URL listOne JSON input, no API key
Generic mapping APIsPer-call pricing, monthly tiersRestaurants alongside other POIsIndexed quarterlyPlace name lookup, categoryAccount, project, billing setup
Paid live reservation APIsEnterprise license, contract negotiationOperator-side onlyReal-timeAPI-key gatedEngineering integration
DIY scraperEngineering time, proxy billWhatever you can maintainWhatever you can maintainWhatever you buildBuild and ship the whole stack
Manual copy-pasteTimeWhat you have patience forStale on day twoManualNone

OpenTable's data shape is consumer-search-first, so this Actor gives you the same view a diner sees plus the structured fields hiding behind it.


πŸš€ How to use

  1. βœ… Sign up for a free Apify account. Use this referral link to get started with $5 in free credit. Free accounts can preview 10 records per run.
  2. 🍽️ Open the OpenTable Scraper. Find it on your dashboard or in the Apify Store.
  3. πŸ› οΈ Paste your input. A list of cities, neighborhoods, or direct restaurant URLs. Pick a price band if you want. Set maxItems.
  4. ▢️ Click Start. The Actor walks search pages and enriches every record. Output appears in the dataset tab as records land.
  5. πŸ“₯ Download CSV, Excel, JSON, or XML. Or stream the dataset into Make, Zapier, Airbyte, or your own webhook.

⏱️ Total time: under 2 minutes to first record, around 1 minute per 50 enriched records after that. A 1,000-restaurant pull typically completes in 20-25 minutes.


πŸ’Ό Business use cases

🍽️ Restaurant operators

  • Track competitor ratings and review counts in your neighborhood
  • Identify newly opened venues in the same price band
  • Benchmark amenities (private dining, takeout, wheelchair access) against peers
  • Watch top-review text for shifts in customer language

πŸ“ˆ Hospitality investors and M&A

  • Source acquisition targets by city and price band
  • Compare review velocity across multiple candidates
  • Pull recent reservation counts as a traffic proxy
  • Build comparable sets for valuation models

πŸ—ΊοΈ Travel and food media

  • Build "best of" city guides with verified data, not guesses
  • Cross-reference Michelin and James Beard award lists
  • Generate consistent restaurant profile cards at scale
  • Power affiliate booking pages with current ratings

🏒 Marketing agencies and analytics

  • Build restaurant prospect lists for hospitality clients
  • Score neighborhoods for emerging food scenes
  • Train recommendation models on real cuisine, price, and rating data
  • Feed CRM systems with phone and address fields

πŸ”Œ Automating OpenTable Scraper

Schedule runs, chain into pipelines, or trigger from your own code. The Actor exposes the standard Apify run API so any HTTP client works.

Schedules run from Apify Console without writing any glue. Pick a frequency, attach an input template, and the dataset rebuilds itself on the cadence you choose, ready for webhooks or storage exports.


🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

πŸŽ“ Research and academia

  • Empirical datasets for papers, thesis work, and coursework
  • Longitudinal studies tracking changes across snapshots
  • Reproducible research with cited, versioned data pulls
  • Classroom exercises on data analysis and ethical scraping

🎨 Personal and creative

  • Side projects, portfolio demos, and indie app launches
  • Data visualizations, dashboards, and infographics
  • Content research for bloggers, YouTubers, and podcasters
  • Hobbyist collections and personal trackers

🀝 Non-profit and civic

  • Transparency reporting and accountability projects
  • Advocacy campaigns backed by public-interest data
  • Community-run databases for local issues
  • Investigative journalism on public records

πŸ§ͺ Experimentation

  • Prototype AI and machine-learning pipelines with real data
  • Validate product-market hypotheses before engineering spend
  • Train small domain-specific models on niche corpora
  • Test dashboard concepts with live input

πŸ€– Ask an AI assistant about this scraper

Not sure if this Actor covers your use case? Paste the question below into ChatGPT, Claude, or Gemini.

"I found the ParseForge OpenTable Scraper on Apify. It scrapes restaurant listings from OpenTable including ratings, cuisine, price band, hours, coordinates, photos, and reservation counts. I want to [describe your project]. Can this Actor help me? What input would I use?"

The AI will map your requirements against the input schema and sample output documented above.


❓ Frequently Asked Questions


πŸ”Œ Integrate with any app

Trigger runs, read datasets, and chain workflows from wherever your team already works.

  • Make - drag-and-drop scenarios that start an OpenTable run and route the dataset to a sheet or CRM.
  • Zapier - zaps that trigger off new dataset items.
  • Slack - post run summaries or new restaurants to a channel.
  • Airbyte - sync the dataset to Postgres, BigQuery, Snowflake, or Redshift.
  • GitHub Actions - run the Actor on every push or on a cron schedule.
  • Google Drive - drop CSV exports straight into a shared folder.

πŸ’‘ Pro Tip: browse the complete ParseForge collection for more hospitality, travel, and review scrapers.


πŸ†˜ Need Help? Open our contact form and we will get back the same day.


⚠️ Disclaimer: Independent tool, not affiliated with OpenTable. Only publicly available restaurant data is collected. Users are responsible for compliance with applicable laws and OpenTable's terms of use.