Uber Eats Restaurant Scraper — Emails, Phones, SIRET by City
Pricing
from $7.49 / 1,000 results
Uber Eats Restaurant Scraper — Emails, Phones, SIRET by City
Turn Uber Eats into CRM-ready restaurant leads — phones, company IDs, addresses, and emails when Uber Eats publishes them. Search by city, territory, or paste store URLs. Built for food suppliers, outbound sales teams, and market research. No login or API key. 31 countries.
Pricing
from $7.49 / 1,000 results
Rating
0.0
(0)
Developer
Corentin Robert
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Uber Eats Pro Scraper
Built for food suppliers, outbound teams, and market researchers — turn Uber Eats listings into CRM-ready restaurant leads with phones, company IDs, and addresses in one export.
No login. No API key. No Uber Eats account.
Phones, SIRET-style company IDs, ratings, and geo filters ship by default. Turn on EU / US email disclosure (proxy) when chains hide contact blocks — each row flags relay vs direct emails so you skip @uber.fr and chain forwarding addresses.
Who is this for?
| You are… | Typical goal | Suggested setup |
|---|---|---|
| B2B supplier (packaging, ingredients, POS) | Prospect restaurants in a city or region | City mode + cuisine filter |
| Outbound / SDR team | CRM-ready phones + emails for sequences | City or Territory + email disclosure: Yes (EU proxy) |
| Food-tech / delivery partner | Map competitive density | Territory mode + maxResults cap |
| Market research | Pricing bands & ratings by geo | Territory + categories; export JSON |
| Agency / growth | Refresh an existing URL list | URLs mode — paste store links |
By default you get name, phone, address, company ID (e.g. SIRET in France), VAT, cuisines, and rating — fast, without extra proxy cost.
Turn on email disclosure (proxy) when chains need EU/US routing for legal contact blocks; expect longer runs and higher cost. Emails can still appear on fast HTTP runs when Uber Eats shows them.
What you get out of it
| Benefit | Why it matters |
|---|---|
| Faster outreach | Phone and email fields ready for your CRM or sequencing tool |
| Cleaner B2B data | Company ID and VAT for verification and enrichment |
| Geo-targeted lists | Pick a country, region, city, or cuisine — only the restaurants you care about |
| Full-funnel coverage | Territory for market scans; City for local campaigns; URLs to refresh leads |
| Transparent runs | Logs show progress %, ETA, and a downloadable RUN_LOG |
How much does it cost to scrape Uber Eats?
Pricing is pay-per-event with two row tiers (plus compute; proxy GB when Collect emails is on):
| Event | Price | When charged |
|---|---|---|
actor-start | $0.05 | Every run |
uber-eats-restaurant-with-email | $0.009 | Row has a direct inbox (isRelayEmail: false) |
uber-eats-restaurant-no-email | $0.004 | No email, or relay only (@uber.fr, @net.mcdonalds.fr) |
apify-default-dataset-item | $0 | Required guard — avoids double-charging with explicit events |
Relay addresses still appear in the dataset but bill at the base tier — use isRelayEmail before cold email.
| Scenario | Listed PPE (rows only) | Typical total |
|---|---|---|
| 15 restaurants (default Try, ~60% direct email) | ~$0.08–0.11 | ~$0.15–0.25 with HTTP compute |
| 1,000 rows, mostly phones / relay | ~$4 | ~$5–7 compute-only |
| 1,000 rows, ~60% direct email | ~$6–7 | ~$8–12 compute-only |
| 1,000 rows + Collect emails (EU proxy) | same row tiers | ~$12–20 with proxy GB |
Console setup: Development → Monetization → Pay per event — event names must match the table above exactly. Set apify-default-dataset-item to $0.
HTTP-only runs keep compute low. Collect emails adds regional routing time and proxy bandwidth on top of row PPE.
Is scraping Uber Eats free?
Apify charges for Actor runs (PPE + compute). A 15-row Try is usually well under $0.25. There is no separate Uber Eats API fee — this Actor uses public store pages only.
Is it legal to scrape Uber Eats?
This Actor only reads public restaurant listing and store pages that Uber Eats shows to consumers. You are responsible for using the data in line with GDPR, local marketing laws, and Uber Eats' terms. Do not use scraped personal data for unlawful outreach.
Quick start
- Input tab → City mode (default)
- Enter city names (e.g.
Annecy,Paris) — country is inferred - Max restaurants defaults to 15; Cuisine defaults to fast food
- Leave email disclosure on No for a fast first Try; turn Yes for EU chain legal blocks
- Run → export from Dataset (CSV, JSON, Excel)
Modes
Territory — Country or region
Best for large market slices.
{"mode": "territory","country": "fr","region": "fr:idf","categories": ["halal"],"maxResults": 2000}
Set maxResults: 0 for no row ceiling (use a long Run timeout).
City — One or more cities
Best for local campaigns. Rows appear in the dataset as each city finishes (no need to wait for every city to be listed first).
{"mode": "city","cityNames": ["Annecy", "Paris", "Lyon"],"maxResults": 500,"collectEmails": "yes"}
URLs — Enrich existing links
{"mode": "urls","startUrls": ["https://www.ubereats.com/fr/store/mcdonalds-paris/abc123"]}
Output fields (per restaurant)
| Group | Fields |
|---|---|
| Identity | name, legalName, storeId, storeSlug, url |
| Contact | email, isRelayEmail, phone, phoneFormatted, phoneLandline, phoneMobile |
| Web | website, instagram, facebook (when listed in JSON-LD) |
| Business | companyId (e.g. SIRET), vatNumber |
| Location | address, location (lat, lng) |
| Profile | foodCategories, priceRangeMin, priceRangeMax, openingHours |
| Social proof | rating, reviewCount, imageCover |
CSV uses semicolon separators for Excel-friendly import.
CRM & outreach workflows
| Goal | Filter / columns | Suggested input |
|---|---|---|
| Cold call list | phone or phoneFormatted not empty | City mode, emails off |
| Cold email (owners only) | isRelayEmail = false and email not empty | Collect emails on for EU |
| Skip chain relays | isRelayEmail = true → use phone + companyId instead | Default export already flags relays |
| Dedup across runs | Key on storeId (stable Uber Eats UUID) | Any mode |
| Enrich from SIRET | companyId + legalName + address | Territory or City, FR sample |
Spreadsheet tip: import the semicolon CSV into Excel or Google Sheets, then filter column isRelayEmail to FALSE before loading into Lemlist, HubSpot, or Apollo.
Output example
One restaurant from a City · Annecy · fast-food · 15 rows run (collectEmails: no):
{"url": "https://www.ubereats.com/fr/store/wamys/oCwUa_VfWJ2wlyiU6xz3Hg","storeId": "oCwUa_VfWJ2wlyiU6xz3Hg","storeSlug": "wamys","name": "Wamy's","legalName": "Wamy's","country": "FR","city": "Annecy","phone": "+33661050784","phoneFormatted": "+33 6 61 05 07 84","phoneMobile": "+33 6 61 05 07 84","email": "wamys94@hotmail.com","isRelayEmail": false,"website": null,"instagram": null,"facebook": null,"companyId": "95408122000012","vatNumber": null,"address": {"street": "19 Avenue de Chambéry","city": "Annecy","postalCode": "74000","country": "FR","formatted": "19 Avenue de Chambéry, Annecy, 74000, FR"},"location": { "lat": 45.8980401, "lng": 6.116261 },"foodCategories": ["Barbecue", "Sandwich", "Burgers", "Halal"],"priceRangeMin": 0.3,"priceRangeMax": 28.9,"rating": 4.3,"reviewCount": 1000,"openingHours": "Sun 11:30-03:45; Mon-Wed 11:30-23:45; Thu 11:30-03:45; Fri-Sat 11:30-23:45"}
Typical fill rates
Reference export: Annecy, FR · fast-food · 15 restaurants · collectEmails: no (smoke run, June 2026). Your market and cuisine mix will differ.
| Field | Fill rate | Notes |
|---|---|---|
name, url, address, rating | 100% | Core listing fields |
companyId (e.g. SIRET) | 100% | On this FR fast-food sample |
phone / phoneFormatted | ~87% | 13/15 rows |
email (any value) | ~87% | Includes relay addresses (@uber.fr, @net.mcdonalds.fr, etc.) |
isRelayEmail: false (direct inbox) | ~60% | Filter on this field in CRM — skip relay rows for cold email |
isRelayEmail: true | ~27% | Chain / platform forwarding — use phone or company ID instead |
vatNumber | 0% | Often absent on Uber Eats legal blocks |
legalName | ~90% | From EU disclosure block on FR sample |
openingHours | ~100% | Compact string from JSON-LD on store pages |
website / social | Low | Only when merchant links appear in JSON-LD sameAs |
Collect emails: Yes (Apify Cloud, EU routing) can surface additional legal-disclosure inboxes on chains and independents where the HTML block was geo-gated — expect longer runs and higher proxy cost. Phones and addresses are still collected when emails are off.
Input reference
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | city | territory, city, or urls |
country | string | fr | Territory mode — country code |
region | string | — | country:region, e.g. fr:idf |
cityNames | string[] | ["Annecy"] | City mode — auto-detect country; fr:Annecy forces locale |
categories | string[] | ["fast-food"] | Clear for all cuisines |
maxResults | integer | 15 | Per city (City) or total (Territory). 0 = unlimited |
collectEmails | string | no | yes = EU/US proxy for geo-gated legal blocks (not “emails on/off”) |
proxyCountryCode | string | FR | FR or US when collectEmails is yes |
startUrls | url[] | — | URL mode — Uber Eats store links |
API only (not in Console form): verboseLogs (boolean, default false) — request URLs and debug detail in run logs.
Email collection
Phones, addresses, and company IDs always export. The Console toggle EU / US email disclosure (proxy) only adds residential routing so geo-gated legal blocks can load (chains, some EU pages). With No, emails still appear when Uber Eats already shows them on the store page. Relay inboxes are flagged in isRelayEmail.
Timeout & long runs
Territory + whole country can run many hours. Raise Run options → Timeout (default Actor setting: 24 h) or set maxResults (e.g. 5000) for a sample.
How it works
- Discover — Territory or City mode lists store URLs from Uber Eats browse pages (reference geography + cuisine filters).
- Enrich — Each store page is parsed for JSON-LD, legal text (SIRET/VAT), and optional email blocks.
- Export — One dataset row per restaurant; City mode writes rows after each city finishes.
- Download — CSV, JSON, or Excel from the Apify Dataset tab (local runs also write
output.csv).
Limitations
- Not every restaurant publishes an email — chains may only show relay inboxes; independents vary by country and disclosure rules.
vatNumberis often empty even when SIRET/companyIdis present (see fill rates above).- Territory-wide runs can take hours and need a long Run timeout or a
maxResultscap. - Collect emails increases cost (proxy + time) — leave off for phone/address prospecting.
- Relay emails (
@uber.fr,@net.mcdonalds.fr) are flagged withisRelayEmail: true— filter them out before cold outreach. - Data reflects what Uber Eats shows publicly at scrape time; menus, ratings, and hours can change.
FAQ
Why is email empty on some rows?
The restaurant may not publish one, or only a relay address appears without EU legal disclosure. Turn Collect emails on for EU targets when outreach needs inboxes.
What does isRelayEmail mean?
true = platform or chain forwarding inbox (e.g. 27524@uber.fr, 0781@net.mcdonalds.fr) — not the owner. false = direct mailbox. null = no email on the row. Filter isRelayEmail = false in your CRM before cold email.
Which countries are supported?
31 countries — see the Country dropdown in Territory mode (driven by data/reference.json).
Can I schedule recurring exports?
Yes — use Apify Scheduler with your saved input (e.g. weekly city refresh).
City vs Territory?
City for fast local lists (dataset fills per city). Territory for regional or national sweeps (lister phase can run long before enrichment).
Do I need proxies?
Not for the default phones + addresses run. Collect emails on Apify Cloud enables regional routing automatically.
Local development
npm installnpm run buildapify run
Console Try input lives in .actor/INPUT.json (15 rows, fast-food, emails off).
Heavy local preset:
$npm run run:local
From monorepo root:
node scripts/run-uber-eats-smoke-local.mjsnode scripts/pull-uber-eats-pro-scraper.mjs
Update geography: npm run update-reference
Also available
- Tripadvisor Restaurant Discovery — find restaurants by location and cuisine on Tripadvisor.
- Google Maps Search Scraper — local business leads with phones, sites, and reviews.
Support
Custom integrations: corentin@outreacher.fr
Apache 2.0 — June 2026