Uber Eats Restaurant Scraper · Emails, Phones & Business Info
Pricing
from $9.99 / 1,000 results
Uber Eats Restaurant Scraper · Emails, Phones & Business Info
Automatically extract restaurant data from Uber Eats including emails, phone numbers, addresses, and company identifiers. Ideal for sales teams, suppliers, and food-tech companies. Get structured Uber Eats restaurant data for CRM and outreach.
Pricing
from $9.99 / 1,000 results
Rating
0.0
(0)
Developer
Corentin Robert
Actor stats
0
Bookmarked
3
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Uber Eats Pro Scraper
Turn Uber Eats into a qualified lead list — restaurant names, phones, emails (where disclosed), company IDs, VAT numbers, and full addresses in one run. No manual copy-paste, no spreadsheet chaos.
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 (e.g. SIRET in France) 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 mode for market-wide scans; City mode for local campaigns; URL mode to refresh existing leads |
| Transparent runs | Logs show progress %, ETA, and counts so you always know where the run stands |
You pay with compute time, not with hours of your team scraping pages by hand.
Who is this for?
- Sales & outbound — POS, delivery, supplies, packaging, ingredients
- Growth & partnerships — franchise, multi-location brands, local rollouts
- Market & ops — competitor mapping, density analysis, pricing bands (
priceRangeMin/priceRangeMax)
How it works (simple)
- Open the Actor on Apify and go to Input
- Choose a mode (Territory, City, or URLs), set limits, optional cuisine filters
- Click Run
- Open Dataset when it finishes — export CSV, JSON, or Excel
No code required. Optional: schedule recurring runs to keep lists fresh.
What you’ll see in the log
Runs are English and structured so you can estimate time and cost:
- Territory (lister) —
Territory lister: X% — collected/total store URLs — ETA ~Ywhile cities are scanned.progressPctandetaSecondsare in the structured payload. - Detail scrape — For each restaurant:
Detail scrape: {name} — progress current/total (Z%) — ETA ~…. After the first row, ETA is based on average time per page (proxy and retries can shift it). - Start of detail phase — Suggested minimum runtime / timeout so you avoid the default 300s platform cap on large batches.
If you need exhaustive country coverage, read Timeout & long runs below.
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 — clear the cuisine filter or raise the cap for broader runs
- Run → export from Dataset
Modes
Territory — Country or region
Best for large market slices. Scans listing pages by city/region until your maxResults cap (or unlimited if you clear the field — use a long timeout).
{"mode": "territory","country": "fr","region": "fr:idf","categories": ["halal"],"maxResults": 2000}
| Region format | Example |
|---|---|
| Whole country | fr:all, be:all, us:all |
| One region | fr:idf (Île-de-France), fr:ara (Auvergne-Rhône-Alpes) |
City — One or more cities
Best for local campaigns. Type names; country is auto-detected (e.g. Annecy → France). Override with fr:Annecy if needed.
{"mode": "city","cityNames": ["Annecy", "Paris", "Lyon"],"maxResults": 500}
URLs — Enrich existing links
Paste Uber Eats store URLs to pull or refresh fields.
{"mode": "urls","startUrls": ["https://www.ubereats.com/fr/store/mcdonalds-paris/abc123"]}
Output fields (per restaurant)
| Group | Fields |
|---|---|
| Contact | email, phone, phoneFormatted, phoneLandline, phoneMobile |
| Business | companyId (e.g. SIRET), vatNumber |
| Location | address (street, city, region, postal code, country, formatted), location (lat, lng) |
| Profile | name, url, foodCategories, priceRangeMin, priceRangeMax |
| Social proof | rating, reviewCount, imageCover |
CSV uses semicolon separators for Excel-friendly import.
Input reference
| Parameter | Purpose |
|---|---|
mode | territory / city / urls |
country | Country code (Territory mode). In City mode, country is auto-detected from city names |
region | countryCode:regionCode, e.g. fr:idf. Must match the selected country |
cityNames | City names; optional fr:Annecy to force locale |
categories | Cuisine filters — default ["fast-food"]; clear for all cuisines (City mode uses the first item only) |
maxResults | Cap (per city in City mode; total in Territory). Default 15 for a short test; empty = unlimited (long runs) |
collectEmails | When enabled, uses a residential proxy so legal disclosure (and email) can load |
startUrls | Store URLs for URL mode |
Email collection
When Collect emails is on, requests are routed through a residential proxy so pages that only show contact details for certain regions (EU transparency) can return email. European targets → FR proxy; North America → US proxy by default. No proxy setup on your side.
Timeout & long runs
Territory + whole country can run many hours. The platform’s short default timeout (e.g. 300s) will stop the run unless you raise it.
- Run options → Timeout → e.g.
28800(8 hours) or use your Actor’s default if published with a highdefaultRunOptions.timeoutSecs - Or set
maxResults(e.g. 5000–10000) for a representative sample in less time - Or narrow
regioninstead of*:all
Tips
- Defaults are restrictive (15 restaurants, fast food only) so the first run finishes quickly; increase
maxResults, add cuisines, or clear Cuisine filter for full coverage - Use categories to reduce noise and improve reply rates
- Region must match country (
be→be:all, notfr:all)
FAQ
Some emails are empty
Not every restaurant publishes an email. When present, it usually comes from the legal block — keep Collect emails on.
Supported markets
31 countries — see the Country dropdown in the Input form.
Scheduling
Use Apify Scheduler for weekly or monthly refreshes.
Local development
npm installnpm run buildapify run
Input: storage/key_value_stores/default/INPUT.json
Local output: output.csv and storage/datasets/default/
Update geography data from Uber Eats API:
$npm run update-reference
See scripts/generate-input-schema.js before regenerating the input schema (it overwrites .actor/input_schema.json).
Deployment
$apify push
Support
Custom integrations or questions: corentin@outreacher.fr
Apache 2.0 — March 2026