Grubhub Email Scraper
Pricing
from $2.49 / 1,000 results
Grubhub Email Scraper
Grubhub Email Scraper SD - Grubhub Email Scraper is a lead generation tool that extracts leads with public contact emails, account names and profile URLs from Grubhub results by keyword, location and email domain - Grubhub email extractor.
Pricing
from $2.49 / 1,000 results
Rating
0.0
(0)
Developer
Leads Scraper
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Grubhub Email Scraper
Grubhub Email Scraper collects publicly indexed restaurant contact emails from Grubhub listings using Google search, then pushes each lead straight to your Apify dataset.
It is built for teams doing restaurant lead generation: POS and online-ordering vendors, food distributors, packaging suppliers, hospitality recruiters and local marketing agencies.
Every row is a business contact attached to a restaurant that publishes an address so diners can arrange catering, large orders and reservations. Grubhub Email Scraper is a B2B prospecting tool, not a personal-data harvester.
In our own test run against a sample of about 10 parsed results, Grubhub Email Scraper was the strongest of the nine food-delivery Actors in this batch: 8 of 10 rows carried an account identity, 8 of 10 carried a profile URL, and the run produced 10 unique emails.
That is an observation from one measured run, not a guarantee. Results vary with your keywords, domains and location.
If you only have budget to test one delivery-marketplace source, Grubhub Email Scraper is the one we would start with.
Who Grubhub Email Scraper is for
Restaurant-tech vendors use Grubhub Email Scraper to build POS sales leads: every merchant on the platform already sells online, so the digital-intent filter is done for you.
Food distributors and wholesale suppliers use it for cuisine-segmented restaurant lead generation, one metro at a time.
Packaging, disposables and equipment suppliers use Grubhub Email Scraper to reach high-volume takeout kitchens, where containers and bags are a recurring line item.
Hospitality recruiters and local marketing agencies use it to assemble local restaurant leads that are territory-shaped rather than national.
If your current restaurant prospecting runs on a bought list, this is the cheaper and fresher alternative: you control the keywords, the city and the email domains.
What Grubhub Email Scraper collects and why Grubhub works well
Grubhub publishes every merchant under a /restaurant/{slug} path, and Google indexes those pages heavily.
Because that slug is a stable, URL-safe handle, Grubhub Email Scraper can usually recover a username and build a canonical profileUrl - which is exactly why handle coverage here is higher than on marketplaces that bury merchants behind city landing pages.
Grubhub is also US-centric, so countryCode: "US" is the sensible default for almost every run.
Its catering surface is unusually strong. The catering query modifier ships in the defaults because Grubhub restaurants openly advertise large-order and catering contacts, and those pages are where the best emails sit.
Grubhub Email Scraper never logs in, never calls a Grubhub API and never opens grubhub.com. It reads Google's public result blocks - titles, snippets and site labels - through the Apify GOOGLE_SERP proxy.
There is no browser, no JavaScript rendering, no authentication and no cookies. It is a Google SERP parsing tool pointed at one domain.
Key features of Grubhub Email Scraper
Everything below is behaviour Grubhub Email Scraper actually implements. Nothing here is aspirational.
| Feature | What it does |
|---|---|
site: operator targeting | Every query is scoped to grubhub.com, so results stay on-platform |
| Query expansion | Base, quoted and intitle: phrasings plus one variant per query modifier; base queries run first |
| Catering-tuned modifiers | Ships with email, contact, catering, reservations, owner |
| Domain filtering | Only emails on your customDomains list are kept |
| Global email deduplication | One email appears once across every query and every page |
| Obfuscated email decoding | Understands name [at] domain [dot] com, name (at) domain, name @ domain.com, domain .com, zero-width characters and the @ full-width at sign |
| Junk filter | Rejects placeholders such as email@, yourname@, test@, xxx@ and single-character locals |
| Boundary-correct matching | @gmail.com does 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 |
| Concurrency control | An asyncio worker pool with a shared stop signal on maxEmails |
| Retries with exponential backoff | Up to 3 attempts per page, with a fresh proxy session per request |
| CAPTCHA detection | Consent pages and "unusual traffic" interstitials are detected and retried, not counted as empty |
| Failed-query requeue | Blocked or failed queries are retried once at the end of the run |
| Resumable runs | State is kept in the key-value store, keyed by an input hash, and saved on PERSIST_STATE, MIGRATING and ABORTING |
| Layout-change fallback | A whole-page parser degrades to "emails without account details" instead of "no emails" |
| Dataset export | Every lead lands in the Apify dataset for CSV, JSON or Excel export |
| Run summary | Logs pages fetched, blocked pages, retries and emails per page |
How Grubhub Email Scraper works
Six steps, and nothing hidden behind them.
- Read input. Grubhub Email Scraper takes your keywords, location, email domains and limits.
- Build
site:queries. Each keyword is combined with your domains and modifiers into Google queries scoped togrubhub.com. - Fetch SERP pages. Pages are pulled asynchronously through the Apify GOOGLE_SERP proxy, with proxy rotation on every request.
- Parse each result block structurally. The parser locates the
<h3>title, then walks up to the smallest surrounding block - it does not depend on Google's CSS class names. - Extract emails. A domain-filtered regex runs over the block text, with snippet extraction feeding
description,accountNameand the Grubhub slug. - Deduplicate and push. Emails are deduplicated globally and each lead is written to the dataset immediately, so you can watch a run fill up live.
Because parsing is structural rather than class-name based, a Google layout change degrades gracefully instead of breaking Grubhub Email Scraper outright.
Query expansion is the single most important setting. Google caps one query at roughly 300 results, so Grubhub Email Scraper works around that ceiling by asking many narrower questions instead of one broad one.
Blocked pages are handled rather than swallowed: CAPTCHA detection flags consent and "unusual traffic" pages, exponential backoff retries them, and anything still failing is re-queued once at the end of the run.
Input for Grubhub Email Scraper
These are the nine input fields, verbatim from the Actor's schema.
| Field | Type | Default | Meaning |
|---|---|---|---|
keywords | array (required) | ["restaurant","delivery"] | Search terms (niche, job title, industry) |
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, GB, DE...) |
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 |
A realistic catering-focused input for Grubhub Email Scraper:
{"keywords": ["restaurant", "catering", "pizzeria"],"location": "Chicago","customDomains": ["@gmail.com", "@yahoo.com"],"maxEmails": 300,"countryCode": "US","expandQueries": true,"queryModifiers": ["email", "contact", "catering", "reservations", "owner"],"maxPagesPerQuery": 30,"maxConcurrency": 5}
Getting location right
location is a plain string appended to every query, and it matters more here than anywhere else, because restaurant prospecting is inherently local.
Run one city per run. "Chicago", then "Manchester", each in its own run with its own dataset. A rep gets a territory-shaped list instead of a national blob.
Use the neighbourhood or borough in dense metros. "Brooklyn" and "Shoreditch" behave far better than a whole-city term where the market is huge.
Pair location with countryCode. For Grubhub that means "US", so the search proxy resolves the right Google locale.
Widen only when you must. If a city returns too little, step up to a state or region rather than dropping location entirely.
Remember it is matched as text. location matches words printed on the indexed page, so a city Grubhub does not print will simply narrow results to nothing.
Output of Grubhub Email Scraper
Every dataset item from Grubhub Email Scraper has all fourteen 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 (handle, display name, or e.g. a subreddit) |
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/caption snippet, cleaned of labels and engagement counters |
email | Lower-cased email address |
emailDomain | The matched domain (e.g. @gmail.com) |
possiblyTruncated | true when Google's snippet ellipsis touched the email - verify before sending |
foundAt | ISO 8601 UTC timestamp |
Sample rows. The third shows what a row looks like when Google prints a display name but no usable slug.
[{"network": "Grubhub","keyword": "catering","query": "site:grubhub.com catering \"@gmail.com\" \"Chicago\"","title": "Mario's Trattoria - Chicago | Order Online | Grubhub","accountName": "Mario's Trattoria","fullName": "Mario's Trattoria","username": "marios-trattoria-chicago","profileUrl": "https://www.grubhub.com/restaurant/marios-trattoria-chicago","url": "https://www.grubhub.com/restaurant/marios-trattoria-chicago","description": "Family-run Italian kitchen. Catering and large orders: mario.catering@gmail.com","email": "mario.catering@gmail.com","emailDomain": "@gmail.com","possiblyTruncated": false,"foundAt": "2026-05-14T09:22:41Z"},{"network": "Grubhub","keyword": "restaurant","query": "site:grubhub.com restaurant owner \"@yahoo.com\" \"Chicago\"","title": "Northside Taqueria | Chicago | Grubhub","accountName": "Northside Taqueria","fullName": "Northside Taqueria","username": "northside-taqueria","profileUrl": "https://www.grubhub.com/restaurant/northside-taqueria","url": "https://www.grubhub.com/restaurant/northside-taqueria","description": "Tacos, burritos, party trays. Owner contact: northside.orders@yahoo.com","email": "northside.orders@yahoo.com","emailDomain": "@yahoo.com","possiblyTruncated": false,"foundAt": "2026-05-14T09:23:07Z"},{"network": "Grubhub","keyword": "delivery","query": "site:grubhub.com delivery contact \"@gmail.com\" \"Chicago\"","title": "Best delivery near Lincoln Park - Grubhub","accountName": "Golden Wok Express","fullName": "Golden Wok Express","username": null,"profileUrl": "","url": "https://www.grubhub.com/","description": "Lunch specials and office catering - goldenwok.events@gmail.com","email": "goldenwok.events@gmail.com","emailDomain": "@gmail.com","possiblyTruncated": true,"foundAt": "2026-05-14T09:24:12Z"}]
Export the dataset from Grubhub Email Scraper as CSV, JSON or Excel, or pull it through the Apify API straight into a CRM import.
For lead enrichment, description is often the most useful field after email: it carries the cleaned snippet, which frequently names the cuisine, the neighbourhood or the catering offer.
That snippet extraction is what turns a raw restaurant email list into something a rep can personalise, and it is why Grubhub Email Scraper keeps the text rather than discarding it.
Use cases for Grubhub Email Scraper
Grubhub Email Scraper suits any team whose ICP targeting is "independent restaurants that already sell online in a given city".
| Buyer | How they use Grubhub Email Scraper |
|---|---|
| POS and online-ordering vendors | Build a restaurant contact database per metro, then work POS sales leads city by city |
| Delivery and integration platforms | Target merchants already selling online - food delivery leads with proven digital intent |
| Food distributors and wholesalers | Segment by cuisine keyword (pizzeria, taqueria, sushi) for territory-matched restaurant lead generation |
| Packaging and disposables suppliers | Reach high-volume takeout kitchens where containers and bags are a recurring spend |
| Equipment suppliers | Find independent kitchens for a restaurant owner email list that is not just chains |
| Hospitality recruiters | Source chef, GM and front-of-house openings by pairing location with cuisine keywords |
| Local marketing and SEO agencies | Assemble local restaurant leads for B2B restaurant outreach in a single postcode or borough |
| Catering platforms and event caterers | Use the catering modifier to surface catering leads and large-order contacts directly |
Example runs for Grubhub Email Scraper
Five recipes that cover most of what people actually do with Grubhub Email Scraper.
Catering leads in one borough. Keywords ["catering", "party trays"], location: "Brooklyn", countryCode: "US", maxEmails: 200.
This is the recipe Grubhub Email Scraper is best at, because catering pages print the large-order contact in plain text.
Cuisine segmentation for a distributor. Keywords ["pizzeria", "italian restaurant"], location: "Chicago", modifiers left at their defaults.
Cuisine segmentation gives a sales team a story to open with, which beats a generic restaurant email list every time.
Wide-domain sweep. Set customDomains to ["@gmail.com", "@yahoo.com", "@outlook.com", "@hotmail.com"] to catch owner-operators who never set up a branded inbox.
Independent restaurants very often run on a free mailbox, so widening domains is the single cheapest way to grow a restaurant contact database.
It is also the fastest way to turn thin food delivery leads into a workable list without touching keywords at all.
High-throughput territory build. maxEmails: 2000, maxConcurrency: 8, maxPagesPerQuery: 30, one run per city.
Keep concurrency moderate; pushing it does not defeat Google's ~300-results-per-query ceiling, query expansion does.
Small verification run. maxEmails: 20 with the defaults, to see what Grubhub Email Scraper returns for your niche before committing budget.
City-level prospecting is the pattern that ties all five together: one city per run, one dataset per city, one rep per dataset.
Run this way and a restaurant owner email list stays clean, attributable and easy to refresh, which matters more for B2B restaurant outreach than raw volume does.
Responsible use
Grubhub Email Scraper collects business addresses published so diners can arrange catering, large orders and reservations. Treat them that way.
Identify yourself and your company in the first line, and say plainly why you are contacting that business address.
Give a working unsubscribe link, honour opt-outs immediately and keep them suppressed. That is a CAN-SPAM baseline, not a nicety.
Under GDPR, keep a record of your lawful basis - usually legitimate interest for B2B contact - and be ready to explain it. Do not send to consumers.
This is not legal advice. Check your own obligations in every market you email into, and adjust your process accordingly.
Limitations of Grubhub Email Scraper
Read these before you plan a campaign around the output.
- Public index only. Grubhub Email Scraper only finds emails that are publicly visible in Google's index. An email that appears only inside a logged-in Grubhub page will not be found.
- The ~300-result ceiling. Google caps a single query at roughly 300 results. That is precisely why query expansion exists and why it is on by default.
possiblyTruncated: true. Google's snippet ellipsis may have cut the address short. Verify those rows before sending.- Apify GOOGLE_SERP proxy required. Grubhub Email Scraper cannot run without Apify proxy credentials.
- Free-plan cap. Free Apify plans are capped at 100 emails per run. Paid plans are uncapped.
- Handles are not always available.
usernameandprofileUrlare only populated when the platform exposes a handle in the Google result; otherwise you getaccountNameandfullNamewith an empty handle. This is a Google limitation, not a bug. - No volume guarantee. Results vary with keywords, domains and location. Our measured sample is an observation, not a promise.
Grubhub Email Scraper FAQ
How many results should I expect?
In our own test run on a sample of about 10 parsed results, Grubhub Email Scraper returned 8 rows with an account identity, 8 with a profile URL and 10 unique emails. That was the strongest showing in this batch of nine, but it is one measured sample, not a guarantee.
Which delivery-marketplace Actor should I run first?
Grubhub, on this evidence. The Seamless Email Scraper shares Grubhub's merchant catalogue and scored the same in our test, so it adds few distinct pages - while Uber Eats Email Scraper and DoorDash Email Scraper cover different merchants and are worth running alongside for coverage rather than instead.
Why is handle coverage so good on Grubhub?
Grubhub exposes each merchant at /restaurant/{slug}, and Google indexes those URLs. A stable slug is a usable handle, so username and profileUrl fill in far more often than on platforms that surface city or cuisine landing pages.
Does it log into Grubhub or use the Grubhub API?
No. Grubhub Email Scraper does not log in, does not use any Grubhub API and does not open grubhub.com. It parses public Google results through the Apify GOOGLE_SERP proxy.
Is it affiliated with Grubhub?
No. This is an independent tool with no affiliation to or endorsement from Grubhub.
What country should I set?
Grubhub is US-centric, so countryCode: "US" is the sensible default. Pair it with a US city in location.
Can I get more catering contacts specifically?
Yes - keep catering in queryModifiers and add catering-flavoured keywords such as party trays or office catering. Catering pages are where large-order contacts are printed.
Why only @gmail.com and @yahoo.com by default?
Independent restaurant owners overwhelmingly use free mailboxes. Add @outlook.com, @hotmail.com or a branded domain to customDomains if you want broader restaurant contact database coverage.
What if a run returns very little?
Widen location from a neighbourhood to a city or state, add cuisine keywords, add more domains, and leave expandQueries on. Those four levers cover most thin runs.
Can I resume an interrupted run?
Yes. Grubhub Email Scraper keeps resumable state in the key-value store, keyed by a hash of the input, and persists it on Apify's PERSIST_STATE, MIGRATING and ABORTING events.
How do I get the data into my CRM?
Export the dataset as CSV, JSON or Excel, or read it through the Apify API. Most teams map email, accountName, profileUrl and description for lead enrichment and ICP targeting before a cold email outreach sequence.
Does it handle obfuscated addresses?
Yes. Grubhub Email Scraper applies obfuscated email decoding covering [at], (at), spaced @, spaced .com, zero-width characters and the full-width @ sign.
Will I get the same email twice?
No. Email deduplication is global across every query and every page in a run, so each address is written to the dataset once.
Does raising maxConcurrency get me more leads?
Not by itself. Concurrency control changes how fast Grubhub Email Scraper works through the queue; query expansion and broader domains are what change total yield.
Related Actors
| Actor | What it collects |
|---|---|
| Grubhub Email and Phone Number Scraper | Emails and phone numbers from Grubhub |
| Grubhub Phone Number Scraper | Public phone numbers from Grubhub |
| 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 |
| 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 |
| OpenTable Email Scraper | Public contact emails from OpenTable |
| 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 |
Leave a review
If the Grubhub 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.