Uber Eats Restaurant Scraper — Emails, Phones, SIRET by City avatar

Uber Eats Restaurant Scraper — Emails, Phones, SIRET by City

Pricing

from $7.49 / 1,000 results

Go to Apify Store
Uber Eats Restaurant Scraper — Emails, Phones, SIRET by City

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

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

1

Monthly active users

a day ago

Last modified

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 goalSuggested setup
B2B supplier (packaging, ingredients, POS)Prospect restaurants in a city or regionCity mode + cuisine filter
Outbound / SDR teamCRM-ready phones + emails for sequencesCity or Territory + email disclosure: Yes (EU proxy)
Food-tech / delivery partnerMap competitive densityTerritory mode + maxResults cap
Market researchPricing bands & ratings by geoTerritory + categories; export JSON
Agency / growthRefresh an existing URL listURLs 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

BenefitWhy it matters
Faster outreachPhone and email fields ready for your CRM or sequencing tool
Cleaner B2B dataCompany ID and VAT for verification and enrichment
Geo-targeted listsPick a country, region, city, or cuisine — only the restaurants you care about
Full-funnel coverageTerritory for market scans; City for local campaigns; URLs to refresh leads
Transparent runsLogs 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):

EventPriceWhen charged
actor-start$0.05Every run
uber-eats-restaurant-with-email$0.009Row has a direct inbox (isRelayEmail: false)
uber-eats-restaurant-no-email$0.004No email, or relay only (@uber.fr, @net.mcdonalds.fr)
apify-default-dataset-item$0Required 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.

ScenarioListed 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.


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

  1. Input tab → City mode (default)
  2. Enter city names (e.g. Annecy, Paris) — country is inferred
  3. Max restaurants defaults to 15; Cuisine defaults to fast food
  4. Leave email disclosure on No for a fast first Try; turn Yes for EU chain legal blocks
  5. 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"
}
{
"mode": "urls",
"startUrls": [
"https://www.ubereats.com/fr/store/mcdonalds-paris/abc123"
]
}

Output fields (per restaurant)

GroupFields
Identityname, legalName, storeId, storeSlug, url
Contactemail, isRelayEmail, phone, phoneFormatted, phoneLandline, phoneMobile
Webwebsite, instagram, facebook (when listed in JSON-LD)
BusinesscompanyId (e.g. SIRET), vatNumber
Locationaddress, location (lat, lng)
ProfilefoodCategories, priceRangeMin, priceRangeMax, openingHours
Social proofrating, reviewCount, imageCover

CSV uses semicolon separators for Excel-friendly import.


CRM & outreach workflows

GoalFilter / columnsSuggested input
Cold call listphone or phoneFormatted not emptyCity mode, emails off
Cold email (owners only)isRelayEmail = false and email not emptyCollect emails on for EU
Skip chain relaysisRelayEmail = true → use phone + companyId insteadDefault export already flags relays
Dedup across runsKey on storeId (stable Uber Eats UUID)Any mode
Enrich from SIRETcompanyId + legalName + addressTerritory 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.

FieldFill rateNotes
name, url, address, rating100%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
vatNumber0%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 / socialLowOnly 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

ParameterTypeDefaultDescription
modestringcityterritory, city, or urls
countrystringfrTerritory mode — country code
regionstringcountry:region, e.g. fr:idf
cityNamesstring[]["Annecy"]City mode — auto-detect country; fr:Annecy forces locale
categoriesstring[]["fast-food"]Clear for all cuisines
maxResultsinteger15Per city (City) or total (Territory). 0 = unlimited
collectEmailsstringnoyes = EU/US proxy for geo-gated legal blocks (not “emails on/off”)
proxyCountryCodestringFRFR or US when collectEmails is yes
startUrlsurl[]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

  1. Discover — Territory or City mode lists store URLs from Uber Eats browse pages (reference geography + cuisine filters).
  2. Enrich — Each store page is parsed for JSON-LD, legal text (SIRET/VAT), and optional email blocks.
  3. Export — One dataset row per restaurant; City mode writes rows after each city finishes.
  4. 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.
  • vatNumber is often empty even when SIRET/companyId is present (see fill rates above).
  • Territory-wide runs can take hours and need a long Run timeout or a maxResults cap.
  • Collect emails increases cost (proxy + time) — leave off for phone/address prospecting.
  • Relay emails (@uber.fr, @net.mcdonalds.fr) are flagged with isRelayEmail: 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 install
npm run build
apify 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.mjs
node scripts/pull-uber-eats-pro-scraper.mjs

Update geography: npm run update-reference


Also available


Support

Custom integrations: corentin@outreacher.fr


Apache 2.0 — June 2026