OpenTable Scraper — Ratings, Reviews & Cuisine avatar

OpenTable Scraper — Ratings, Reviews & Cuisine

Pricing

from $5.00 / 1,000 restaurant scrapeds

Go to Apify Store
OpenTable Scraper — Ratings, Reviews & Cuisine

OpenTable Scraper — Ratings, Reviews & Cuisine

Scrape OpenTable restaurants by city, cuisine, or name. Returns rating, review count, price band, address, phone, coordinates, and top review. HTTP-only, MCP-ready.

Pricing

from $5.00 / 1,000 restaurant scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

Share

Scrape OpenTable restaurants by city, cuisine, neighborhood, or restaurant name and export a clean, structured dataset: rating, review count, price band, cuisine, full address, phone, coordinates, neighborhood, top review, photos, and dining features. HTTP-only, no login, no cookies — built to be called by AI agents (MCP-ready) and by data teams alike.

What it does

Give it a search term like Miami, Italian, Chicago, or a restaurant name like Carbone, and the actor returns every matching restaurant with the fields you need for lead generation, market research, competitor tracking, or review analysis. One page = 50 restaurants; the actor auto-paginates to your maxRestaurants cap (a large metro can exceed 800 restaurants).

When to use it

  • Local lead generation — build restaurant contact lists (name, phone, address, neighborhood) for a city or cuisine.
  • Market & competitor research — pull an entire metro's dining scene with ratings, review counts, and price tiers.
  • Review & sentiment monitoring — track rating and review-count movement plus a highlighted top-review snippet per restaurant.
  • Geo / mapping datasets — every record ships with latitude/longitude and a full postal address.
  • AI agents — a single natural tool call: search term in, structured JSON out.

When NOT to use it: this actor does not scrape individual restaurant reservation-availability time slots or full review threads (those pages are bot-protected). Search individual restaurants by name to get their profile record.

Output

One record per restaurant. Example:

FieldExample
nameSaltie Girl
primaryCuisineSeafood
priceBand / priceRange$31 to $50 / 3
overallRating / reviewCount4.6 / 2271
neighborhoodBack Bay
addressLine1, city, state, postCode279 Dartmouth Street, Boston, MA, 02116
latitude, longitude42.3512, -71.0776
phone+16172670691
topReview"Fabulous, as always! Great food and service…"
recentReservationCount230
profileUrlhttps://www.opentable.com/r/saltie-girl-back-bay-boston

Also included per record: diningStyle, currency, hasBar, hasOutdoorSeating, hasCounter, hasHighTop, maxPartySize, hasTakeout, inPremiumMarketplace, awards[], offers[], photoUrls[], description, searchTerm, resultPosition, scrapedAt.

{
"restaurantId": 52135,
"name": "Saltie Girl",
"primaryCuisine": "Seafood",
"priceBand": "$31 to $50",
"overallRating": 4.6,
"reviewCount": 2271,
"neighborhood": "Back Bay",
"city": "Boston",
"state": "MA",
"latitude": 42.3511566,
"longitude": -71.0775679,
"phone": "+16172670691",
"topReview": "Fabulous, as always! Great food and service…",
"profileUrl": "https://www.opentable.com/r/saltie-girl-back-bay-boston"
}

Pricing

Pay-per-event.

EventPrice
Actor start$0.00005
Restaurant scraped$0.005 per unique restaurant

A 500-restaurant city pull costs roughly $2.50. You are charged only for unique restaurants actually returned. Pay-per-usage (compute + proxy) is also available for very large jobs — pick whichever billing suits you at run time.

Input

FieldTypeDefaultNotes
searchTermsstring[]["New York"]City, cuisine, neighborhood, or restaurant name — one per line.
startUrlsarrayOpenTable search/listing URLs (e.g. /s/?term=miami). Not /r/ detail pages.
maxRestaurantsinteger50Cap per term / URL. Auto-paginates (50/page).
partySizeinteger2Covers, 1–20.
reservationDatestringOptional YYYY-MM-DD to bias toward availability.
reservationTimestring19:00Optional HH:mm; only used with a date.
proxyConfigurationobjectResidential USRecommended — OpenTable blocks datacenter IPs.

Example input

{
"searchTerms": ["Italian, Chicago", "Steakhouse, Austin"],
"maxRestaurants": 200,
"partySize": 2,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" }
}

Using it via API

curl -X POST "https://api.apify.com/v2/acts/khadinakbar~opentable-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "searchTerms": ["Miami"], "maxRestaurants": 100 }'
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('khadinakbar/opentable-scraper').call({
searchTerms: ['San Francisco'],
maxRestaurants: 150,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

AI agents & MCP

This actor is MCP-ready. In AI frameworks, expose it through the Apify MCP server as apify--opentable-scraper. Input is a single search term; output is structured JSON per restaurant — ideal for restaurant-discovery, lead-enrichment, and local-market agents.

Reliability

OpenTable resets datacenter and non-browser TLS connections at the edge. This actor impersonates a real Chrome TLS/HTTP-2 fingerprint (impit) and runs over Apify Residential proxies, parsing OpenTable's own embedded page state — no brittle HTML selectors. If OpenTable blocks a request, the actor retires the session and retries; if everything is blocked, the run fails honestly rather than returning an empty dataset silently.

FAQ

Can I get email addresses? OpenTable does not publish restaurant emails; you get phone, address, and website-derived profile URL. Pair with a contact-enrichment actor for emails.

Can I scrape one specific restaurant? Yes — put its name (and city) in searchTerms; it will be returned as a record. Direct /r/ profile URLs are bot-protected and not supported.

Does party size / date filter results? They contextualize OpenTable's availability-aware ranking; they do not hard-filter restaurants out.

Which countries? Any OpenTable market — search by the local city name. Proxy country defaults to US; change it for other regions.

This actor collects only publicly available information from OpenTable search result pages. Use the data in compliance with OpenTable's Terms of Service, applicable laws (including GDPR/CCPA where relevant), and only for legitimate purposes. You are responsible for how you use scraped data. This actor is not affiliated with or endorsed by OpenTable.