OpenTable Restaurants, Ratings & Reviews Scraper
Pricing
from $19.00 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share

π½οΈ 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 teams | Competitive 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
maxItemscap 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
| Field | Type | Required | Description |
|---|---|---|---|
searchTerms | array of strings | One of searchTerms or restaurantUrls | Cities, neighborhoods, cuisines, or restaurant names to search on OpenTable. Each entry is paginated independently. |
restaurantUrls | array of strings | Optional | Direct OpenTable restaurant URLs. Used instead of or together with search terms. |
maxItems | integer | No | Cap on records returned. Free users are limited to 10; paid users may set up to 1,000,000. |
priceBands | array of strings | No | Restrict the search to specific price tiers. Pick from "1" ($), "2" ($$), "3" ($$$), "4" ($$$$). |
sortBy | string | No | How OpenTable orders results. Either "web_conversion" (Featured, the default) or "distance". |
enrichWithProfile | boolean | No | If 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"). TheenrichWithProfilestep 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
| Field | Type | Example |
|---|---|---|
πΌ imageUrl | string | https://resizer.otstatic.com/v4/photos/49981008-3?width=640&height=640 |
π½ title | string | Sofia's of Little Italy |
π url | string | https://www.opentable.com/r/sofias-of-little-italy-new-york |
π restaurantId | integer | 1228705 |
π description | string | A trendy Italian restaurant & bar located at 143 Mulberry Street... |
π primaryCuisine | string | Italian |
π§Ύ cuisines | array of strings | ["Italian", "Pizza Bar"] |
π° priceRange | string | $30 and under |
πͺ priceTier | integer | 2 |
π΄ diningStyle | string | Casual Dining |
β rating | number | 4.3 |
π² ratingFood | number | 4.3 |
π ratingService | number | 4.4 |
π ratingAmbience | number | 4.5 |
π΅ ratingValue | number | 4.1 |
π ratingNoise | number | 2 |
π¬ reviewCount | integer | 112 |
π totalReviewCount | integer | 26 |
π
recentReservationCount | integer | 6 |
π£ topReviewText | string | The food was good. We sat outdoors and I loved how the staff handled a crazy man outside... |
π phoneNumber | string | (212) 219-9799 |
π website | string | https://www.sofias143.com/ |
π address | object | { line1, line2, city, state, postCode, country } |
π neighborhood | string | Little Italy |
π metro | string | New York City |
π£ crossStreet | string | Between Grand Street and Hester Street |
π publicTransit | string | Canal Street Station: Served by the N, Q, R, W, 6, and J/Z trains... |
π latitude | number | 40.7189347 |
π longitude | number | -73.9978869 |
π hoursOfOperation | string | Daily 11:00 am-11:00 pm |
π dressCode | string | Business Casual |
π¨βπ³ executiveChef | string or null | null |
π
ΏοΈ parkingInfo | string | None |
π
ΏοΈ parkingDetails | string or null | null |
β¨ features | object | { bar, counter, highTop, outdoor, reservationMaxPartySize } |
π³ paymentOptions | array of strings | ["AMEX", "Discover", "Mastercard", "Visa"] |
π additionalDetails | array of strings | ["Bar/Lounge", "Beer", "Delivery", "Dog Friendly", "Wheelchair Access"] |
π₯‘ hasTakeout | boolean | true |
π₯ hasPrivateDining | boolean | true |
π΅ hasDeliveryPartners | boolean | false |
π΅ hasDeliveryDirect | boolean | true |
π΅ deliveryPartners | array of objects | [{ deliveryPartnerName, menuUrl }] |
π orderOnlineLink | string or null | https://www.grubhub.com/restaurant/sofias-in-little-italy-nyc... |
π awards | array of objects or null | null |
π inPremiumMarketplace | boolean | false |
πΌ photoUrls | array of strings | ["https://resizer.otstatic.com/v4/photos/49981008-3?width=640&height=360", ...] |
π scrapedAt | string (ISO 8601) | 2026-05-21T16:25:08.884Z |
β error | string or null | null |
π¦ 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
| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| β OpenTable Scraper (this Actor) | Pay per item, free preview | All countries OpenTable indexes | On demand | Search term, price band, sort order, direct URL list | One JSON input, no API key |
| Generic mapping APIs | Per-call pricing, monthly tiers | Restaurants alongside other POIs | Indexed quarterly | Place name lookup, category | Account, project, billing setup |
| Paid live reservation APIs | Enterprise license, contract negotiation | Operator-side only | Real-time | API-key gated | Engineering integration |
| DIY scraper | Engineering time, proxy bill | Whatever you can maintain | Whatever you can maintain | Whatever you build | Build and ship the whole stack |
| Manual copy-paste | Time | What you have patience for | Stale on day two | Manual | None |
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
- β 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.
- π½οΈ Open the OpenTable Scraper. Find it on your dashboard or in the Apify Store.
- π οΈ Paste your input. A list of cities, neighborhoods, or direct restaurant URLs. Pick a price band if you want. Set
maxItems. - βΆοΈ Click Start. The Actor walks search pages and enriches every record. Output appears in the dataset tab as records land.
- π₯ 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
π 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.
- π© Node.js: use the Apify JavaScript client to start runs and read the dataset programmatically.
- π Python: use the Apify Python client for the same operations from a notebook or backend service.
- π Docs: see the Apify Actor API reference for raw HTTP examples.
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.
π€ 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.
π Recommended Actors
- β Yelp Reviews Scraper - restaurant and business reviews from Yelp with star ratings, reviewer profiles, and photo counts.
- πΊοΈ Yellow Pages Scraper - business listings including phone, address, categories, and rating across any US city.
- π¨ Hostelworld Scraper - hostel and budget accommodation listings for the same travel destinations your restaurant searches cover.
- π² Allrecipes Scraper - recipe data to pair with restaurant cuisine analysis, covering ingredients, ratings, and nutrition.
- π Depop Scraper - marketplace listings for second-hand goods, useful for lifestyle and consumer behavior datasets alongside dining data.
π‘ 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.