OpenTable Email Scraper
Pricing
from $2.49 / 1,000 results
OpenTable Email Scraper
OpenTable Email Scraper SD - OpenTable Email Scraper is a lead generation tool that extracts leads with public contact emails, account names and profile URLs from OpenTable results by keyword, location and email domain - OpenTable email extractor.
Pricing
from $2.49 / 1,000 results
Rating
0.0
(0)
Developer
Neuro Scraper
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
OpenTable Email Scraper
The OpenTable Email Scraper collects publicly indexed contact emails connected to opentable.com and opentable.co.uk, the reservation network that most established US and UK restaurants list on.
It builds Google queries with the site: operator against both domains, fetches them through the Apify GOOGLE_SERP proxy, and extracts emails from the result blocks.
No login, no browser, no OpenTable API — only what Google has already published in its index.
Start with the measured part. In a live test run, roughly 10 parsed results produced 5 rows with a usable venue identity, 5 resolvable profile URLs and 4 unique emails. That is a moderate, middle-of-the-pack profile: cleaner venue identity than review-driven platforms, lower raw email density than the highest-yield Actors in this family.
The upside is that when the OpenTable Email Scraper does return a row, it usually comes with a real restaurant name and a working reservation URL. Restaurants list on OpenTable precisely to be contacted for bookings, private dining and events — so the addresses in the index are business inboxes by design.
What one run of the OpenTable Email Scraper produces
Each dataset row is one unique email plus whatever venue context Google printed around it. You get the raw title, an account label, a cleaned snippet, the exact query used and a truncation flag. The OpenTable Email Scraper pushes rows to the Apify dataset as they are found, so you can export CSV, JSON or Excel mid-run.
Exporting and integrating the OpenTable Email Scraper dataset
Because rows are written incrementally, an aborted or migrated run still leaves a usable dataset behind. Export from the Apify console, pull the dataset over the API, or schedule the OpenTable Email Scraper and push results straight into your CRM.
How the OpenTable Email Scraper works: SERP parsing, not an API
The OpenTable Email Scraper runs the same six steps on every query it builds.
- It reads your input: keywords, location, email domains and limits.
- It builds Google queries with the
site:operator, for examplesite:opentable.com OR site:opentable.co.uk "fine dining" "@gmail.com" events. - It fetches result pages through the Apify GOOGLE_SERP proxy using async
aiohttprequests. - It parses each result block structurally — locating the
<h3>and the smallest surrounding block — rather than by CSS class name. - It extracts emails with a domain-filtered regex and normalises obfuscated forms.
- It deduplicates globally and pushes each lead to the dataset immediately.
Both OpenTable domains are searched in a single site: alternation, so a UK-focused run and a US-focused run read the same index from different country vantage points.
There is no browser, no JavaScript rendering, no authentication and no cookies.
The OpenTable Email Scraper never signs into OpenTable and never requests pages from OpenTable's own servers.
OpenTable Email Scraper features
Everything listed below is implemented in the OpenTable Email Scraper today.
| Feature | What it means in practice |
|---|---|
| Query expansion | Base, quoted, intitle: and one variant per modifier; base queries run first |
| Dual-domain search | opentable.com and opentable.co.uk are covered by every query |
| Global deduplication | An email found by several queries is stored exactly once |
| Email normalisation | Understands name [at] domain [dot] com, name (at) domain, name @ domain, domain .com, zero-width characters and the full-width @ |
| Junk filter | Rejects placeholders such as email@, yourname@, test@, xxx@ and single-character locals |
| Boundary-correct matching | @gmail.com will not match inside @gmail.company or @gmail.com.br |
| Soft-wrap repair | Drops a hit that is only the tail of another email in the same block |
| Structural parsing | Independent of Google's obfuscated CSS class names |
| Whole-page fallback | A markup change degrades to "emails without account details" rather than "no emails" |
| Block detection | CAPTCHA, "unusual traffic" and consent pages are detected and retried, not counted as empty |
| Retries | Up to 3 attempts per page with exponential backoff and a fresh proxy session per request |
| Failed-query requeue | Blocked or failed queries are re-queued once at the end of the run |
| Concurrency | An asyncio worker pool with a shared stop signal on maxEmails |
| Resumable state | Key-value store state keyed by an input hash; saves on PERSIST_STATE, MIGRATING and ABORTING |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |
OpenTable Email Scraper input fields
These are the exact input fields the OpenTable Email Scraper accepts, with the defaults it ships with.
| Field | Type | Default | Meaning |
|---|---|---|---|
keywords | array (required) | ["restaurant","fine dining"] | Search terms describing the venues you want |
location | string | "" | Optional location phrase added to every query |
customDomains | array | ["@gmail.com","@yahoo.com"] | Only emails on these domains are kept; @ optional |
maxEmails | integer 1-10000 | 20 | Stop after this many unique emails |
countryCode | string | "" | Two-letter country for the search proxy — US or GB here |
expandQueries | boolean | true | Search each keyword x domain in several phrasings |
queryModifiers | array | ["email","contact","catering","reservations","owner"] | Extra words combined with each keyword when expansion is on |
maxPagesPerQuery | integer 1-50 | 30 | Page cap per query |
maxConcurrency | integer 1-20 | 5 | Parallel queries |
Example OpenTable Email Scraper input
{"keywords": ["fine dining", "steakhouse", "private dining"],"location": "Chicago","customDomains": ["@gmail.com", "@yahoo.com", "@outlook.com"],"maxEmails": 150,"countryCode": "US","expandQueries": true,"queryModifiers": ["email", "contact", "events", "private dining", "owner"],"maxPagesPerQuery": 30,"maxConcurrency": 5}
City-level prospecting with location
location is the highest-leverage field in the OpenTable Email Scraper for any territory-based sales team.
It appends a quoted phrase to every query, so you get one dataset per market instead of one undifferentiated national file.
Strong values on this platform are the metros where OpenTable is densest: New York, Chicago, San Francisco, Los Angeles, Boston, Washington DC, London, Manchester, Edinburgh.
Neighbourhood phrases work too — West Loop, Soho, Mayfair — when you want a walkable prospecting route rather than a metro-wide list.
Leave location empty for a first exploratory run to see what the index holds.
Then narrow, and set countryCode to match: US with a US city, GB with a UK one.
Keyword suggestions for the OpenTable Email Scraper
The shipped defaults, restaurant and fine dining, are broad. Cuisine and service-format terms match a much larger slice of the index.
| Keyword | Why it works on OpenTable |
|---|---|
steakhouse | High-density, high-ticket category with events inboxes |
italian restaurant | One of the largest cuisine cohorts on the platform |
sushi | Dense in US metros and central London |
brunch | Surfaces neighbourhood venues that fine-dining terms miss |
private dining | Directly targets pages that publish an events address |
tasting menu | Chef-led venues with a named contact |
gastropub | Strong UK term when countryCode is GB |
wine bar | Small independents that publish an owner inbox |
Pair a format noun with an intent modifier — steakhouse events, private dining contact — rather than searching a bare noun.
OpenTable Email Scraper output fields
Every dataset item the OpenTable Email Scraper writes carries all fourteen of these fields.
| Field | Meaning |
|---|---|
network | Platform name |
keyword | The keyword that produced the lead |
query | The exact Google query used |
title | Raw result title |
accountName | Account label Google prints |
fullName | Display name parsed from a profile-style title; empty for post captions |
username | URL-safe handle when the platform exposes one; otherwise null |
profileUrl | Canonical account URL when a handle is known; otherwise empty |
url | Direct platform link when exposed, else the profile URL |
description | Bio or snippet text, cleaned of labels and engagement counters |
email | Lower-cased email address |
emailDomain | The matched domain |
possiblyTruncated | true when Google's snippet ellipsis touched the email |
foundAt | ISO 8601 UTC timestamp |
Example OpenTable Email Scraper output
[{"network": "OpenTable","keyword": "steakhouse","query": "site:opentable.com OR site:opentable.co.uk steakhouse \"@gmail.com\" events \"Chicago\"","title": "Prime & Provisions - Chicago, IL | OpenTable","accountName": "Prime & Provisions","fullName": "Prime & Provisions - Chicago, IL","username": "prime-and-provisions-chicago","profileUrl": "https://www.opentable.com/r/prime-and-provisions-chicago","url": "https://www.opentable.com/r/prime-and-provisions-chicago","description": "Steakhouse - West Loop. Private dining and events: events.primeprov@gmail.com","email": "events.primeprov@gmail.com","emailDomain": "@gmail.com","possiblyTruncated": false,"foundAt": "2026-08-31T11:21:07Z"},{"network": "OpenTable","keyword": "gastropub","query": "site:opentable.com OR site:opentable.co.uk gastropub \"@outlook.com\" contact \"London\"","title": "The Anchor Tavern - London | OpenTable","accountName": "The Anchor Tavern","fullName": "The Anchor Tavern - London","username": "the-anchor-tavern-london","profileUrl": "https://www.opentable.com/r/the-anchor-tavern-london","url": "https://www.opentable.co.uk/r/the-anchor-tavern-london","description": "British gastropub in Southwark. Group bookings: anchortavern.bookings@outlook.com","email": "anchortavern.bookings@outlook.com","emailDomain": "@outlook.com","possiblyTruncated": true,"foundAt": "2026-08-31T11:23:40Z"}]
Note the profileUrl shape: OpenTable routes venue pages under /r/, so the canonical link the OpenTable Email Scraper builds is https://www.opentable.com/r/{venue-slug}.
Note also that the second row's url points at the .co.uk domain Google actually indexed, while profileUrl is normalised to the canonical .com form.
What a measured OpenTable Email Scraper run looked like
Per roughly 10 parsed results in a live test: 5 rows with a usable identity, 5 resolvable profile URLs, 4 unique emails. About half of what Google returns for these queries resolves to a named venue, and the email density is moderate.
Practically, that means you should widen rather than deepen.
More cuisine keywords, more modifiers and more cities will move your row count far more than raising maxPagesPerQuery.
Restaurant lead generation use cases for the OpenTable Email Scraper
Here is where the OpenTable Email Scraper fits into real B2B prospecting and market research workflows.
| Use case | How to configure it |
|---|---|
| Reservation and table-management sales | keywords: ["fine dining","steakhouse"], one metro per run |
| POS and payments prospecting | Add owner and contact modifiers to reach decision-maker inboxes |
| Catering, events and private dining suppliers | keywords: ["private dining"] with an events modifier |
| Wine, spirits and beverage distribution | keywords: ["wine bar","tasting menu"] in high-ticket metros |
| Restaurant equipment and furniture | Target independents via gastropub and brunch |
| Hospitality recruitment | Use owner and contact; fine dining publishes named inboxes more often |
| UK territory building | countryCode: "GB", location: "London", keywords: ["gastropub","british restaurant"] |
| Local agency client acquisition | One neighbourhood per run; pitch photography, SEO or menu design |
| CRM enrichment | Match your existing venue list on profileUrl — it is stable and canonical |
| Competitive market mapping | Compare row counts per cuisine keyword across cities |
Practical OpenTable Email Scraper recipes
US metro baseline. Cuisine keywords, countryCode: "US", one city in location, maxEmails: 150.
This is the configuration most likely to return a clean, named dataset.
UK run. Same keywords plus gastropub and british restaurant, countryCode: "GB", location: "London".
Run it separately from the US job so the country vantage point is not diluted.
Events-intent sweep. Replace the default modifiers with events, private dining, functions and enquiries.
These are the pages most likely to publish a real address.
Widen before you deepen. Google caps a single query at roughly 300 results, so keyword breadth beats page depth.
Raise maxPagesPerQuery last.
Pair for coverage. Run the Resy Email Scraper beside this one for upscale venues that skew to Resy, and the Tripadvisor Restaurants Email Scraper for venues that are not on any reservation network.
Responsible use, GDPR and CAN-SPAM
An email that identifies a natural person is personal data even when it was published publicly. Public availability is not consent to send. UK and EU recipients are covered by the GDPR and PECR; commercial email into the United States falls under CAN-SPAM.
Practical steps that keep an OpenTable Email Scraper workflow defensible:
- Prefer role addresses (
info@,events@,reservations@) over addresses naming an individual. - Keep provenance for every lead — the
query,urlandfoundAtfields exist for exactly this. - Give a clear sender identity, a stated purpose and a working opt-out in every message.
- Honour opt-outs immediately and check suppression lists before each follow-up.
- Delete data you are not actively using rather than warehousing scraped lists.
- Take advice before running UK B2B outreach at scale; PECR treats sole traders and partnerships as individuals.
This is operational guidance, not legal advice.
Related Actors
The OpenTable Email Scraper is one of 35 Actors in a Travel, Hospitality and Food family that all share this engine. For a fuller picture of one city, pair it with the Resy Email Scraper for upscale venues, the Toast Restaurant Email Scraper for online-ordering operators, and the Grubhub Email Scraper for delivery-first restaurants.
| Actor | What it collects |
|---|---|
| OpenTable Email and Phone Number Scraper | Emails and phone numbers from OpenTable |
| OpenTable Phone Number Scraper | Public phone numbers from OpenTable |
| Airbnb Email Scraper | Public contact emails from Airbnb |
| Booking.com Email Scraper | Public contact emails from Booking.com |
| Caviar Email Scraper | Public contact emails from Caviar |
| ChowNow Email Scraper | Public contact emails from ChowNow |
| Contiki Email Scraper | Public contact emails from Contiki |
| Craigslist Email Scraper | Public contact emails from Craigslist |
| Delivery.com Email Scraper | Public contact emails from Delivery.com |
| DoorDash Email Scraper | Public contact emails from DoorDash |
| EatStreet Email Scraper | Public contact emails from EatStreet |
| G Adventures Email Scraper | Public contact emails from G Adventures |
| GetYourGuide Email Scraper | Public contact emails from GetYourGuide |
| Grubhub Email Scraper | Public contact emails from Grubhub |
| Hostelbookers Email Scraper | Public contact emails from Hostelworld |
| HotelsCombined Email Scraper | Public contact emails from HotelsCombined |
| Intrepid Travel Email Scraper | Public contact emails from Intrepid Travel |
| Just Eat Email Scraper | Public contact emails from Just Eat |
| Klook Email Scraper | Public contact emails from Klook |
| Resy Email Scraper | Public contact emails from Resy |
| TheFork Email Scraper | Public contact emails from TheFork |
| Toast Restaurant Email Scraper | Public contact emails from Toast |
| TourRadar Email Scraper | Public contact emails from TourRadar |
| Traveloka Email Scraper | Public contact emails from Traveloka |
| Tripadvisor Attractions Email Scraper | Public contact emails from Tripadvisor |
| Tripadvisor Hotels Email Scraper | Public contact emails from Tripadvisor |
| Tripadvisor Restaurants Email Scraper | Public contact emails from Tripadvisor |
| Uber Eats Email Scraper | Public contact emails from Uber Eats |
| Viator Email Scraper | Public contact emails from Viator |
| Wanderlog Email Scraper | Public contact emails from Wanderlog |
| Wego Email Scraper | Public contact emails from Wego |
| Zomato Email Scraper | Public contact emails from Zomato |
| Airbnb Email and Phone Number Scraper | Emails and phone numbers from Airbnb |
| Booking.com Email and Phone Number Scraper | Emails and phone numbers from Booking.com |
| Caviar Email and Phone Number Scraper | Emails and phone numbers from Caviar |
| ChowNow Email and Phone Number Scraper | Emails and phone numbers from ChowNow |
| Contiki Email and Phone Number Scraper | Emails and phone numbers from Contiki |
| Craigslist Email and Phone Number Scraper | Emails and phone numbers from Craigslist |
| Delivery.com Email and Phone Number Scraper | Emails and phone numbers from Delivery.com |
| DoorDash Email and Phone Number Scraper | Emails and phone numbers from DoorDash |
| EatStreet Email and Phone Number Scraper | Emails and phone numbers from EatStreet |
| G Adventures Email and Phone Number Scraper | Emails and phone numbers from G Adventures |
OpenTable Email Scraper limitations
Read these before planning anything around OpenTable Email Scraper output.
- Moderate yield. In a live test, roughly 10 parsed results produced 5 identified venues, 5 profile URLs and 4 unique emails. Useful, but not the highest-volume Actor in this family.
- Publicly indexed emails only. The OpenTable Email Scraper finds addresses already visible in Google's index. Anything behind a reservation widget, a contact form or a login is unreachable.
- Google's ~300-result cap. A single query returns roughly 300 results at most, which is why
expandQueriesdefaults totrueand why keyword breadth matters more than page depth. possiblyTruncated. Whentrue, Google's snippet ellipsis touched the email and it may be cut off. Verify before sending.usernameandprofileUrlcan be empty. They are populated only when Google's result exposes a resolvable/r/venue path; roughly half of rows did in testing. That is a Google limitation, not a bug.- Apify GOOGLE_SERP proxy required. The OpenTable Email Scraper cannot run without Apify proxy credentials.
- Free-plan cap. Free Apify plans stop at 100 emails per run. Paid plans are uncapped.
- No guaranteed volume. Results vary with keywords, domains, location and Google's index on the day.
- Not affiliated with OpenTable. This is an independent tool, not supported, endorsed by or connected to OpenTable.
OpenTable Email Scraper FAQ
Common questions about the OpenTable Email Scraper, its inputs and its output.
How many results should I expect from the OpenTable Email Scraper?
In a live test, roughly 10 parsed results produced 5 identified venues, 5 profile URLs and 4 unique emails — a moderate yield. Total volume depends on your keywords, domains, location and countryCode, and no row count is guaranteed.
Does the OpenTable Email Scraper log into OpenTable?
No. It never logs in, never calls an OpenTable API and never opens opentable.com in a browser. It reads Google results through the Apify GOOGLE_SERP proxy.
Does it cover the UK as well as the US?
Yes. Every query searches opentable.com and opentable.co.uk together. Set countryCode to GB for a UK-vantage run and US for an American one.
Which keywords work best?
Cuisine and service-format terms: steakhouse, italian restaurant, sushi, brunch, private dining, tasting menu, gastropub, wine bar. Pair them with events, contact or owner modifiers.
How do I use location for city-level prospecting?
Put a metro or neighbourhood in it — Chicago, London, West Loop, Mayfair — and run one job per territory. That turns a generic list into a route a rep can work.
Whose emails am I actually finding?
Business inboxes that restaurants publish for reservations, private dining and events enquiries. Treat them as business contacts, not consumer data.
Why is profileUrl an /r/ link?
Because OpenTable routes each venue under /r/{slug}. That is the canonical link shape the OpenTable Email Scraper builds from Google's breadcrumb, and it is stable enough to use as a CRM key.
Does the OpenTable Email Scraper verify deliverability?
No. It extracts and normalises what Google indexed. Check rows flagged possiblyTruncated before using them.
How do I get more rows?
Add cuisine keywords, add email domains such as @outlook.com and @hotmail.com, run more cities, and keep expandQueries on. Raising maxPagesPerQuery is the least effective lever.
Can I resume an interrupted run?
Yes. State lives in the key-value store keyed by a hash of your input, with saves on Apify's PERSIST_STATE, MIGRATING and ABORTING events.
What happens when Google blocks a request?
Block, CAPTCHA and consent pages are detected rather than treated as empty. Pages get up to three attempts with exponential backoff, and failed queries are re-queued once at the end of the run.
Is scraping OpenTable contact emails legal?
The OpenTable Email Scraper only reads publicly indexed Google results. Whether you may then contact those addresses is a separate GDPR, PECR and CAN-SPAM question. See the responsible use section and take your own legal advice.
Leave a review
If the OpenTable Email Scraper saved you time, please leave a star rating and a short review on the Actor page.
Reviews are how other buyers judge whether a tool works, and they tell us which features to build next.
If something did not work, email neurodata.apify@gmail.com instead - bugs get fixed faster than they get complained about.
Support
Questions, a bug, or you need a custom build of the OpenTable Email Scraper? Contact neurodata.apify@gmail.com.