Uber Eats Restaurant Scraper · Emails, Phones & Business Info avatar

Uber Eats Restaurant Scraper · Emails, Phones & Business Info

Pricing

from $9.99 / 1,000 results

Go to Apify Store
Uber Eats Restaurant Scraper · Emails, Phones & Business Info

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

Corentin Robert

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

4 days ago

Last modified

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

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

  1. Open the Actor on Apify and go to Input
  2. Choose a mode (Territory, City, or URLs), set limits, optional cuisine filters
  3. Click Run
  4. 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 ~Y while cities are scanned. progressPct and etaSeconds are 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

  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 — clear the cuisine filter or raise the cap for broader runs
  4. 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 formatExample
Whole countryfr:all, be:all, us:all
One regionfr: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
}

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)

GroupFields
Contactemail, phone, phoneFormatted, phoneLandline, phoneMobile
BusinesscompanyId (e.g. SIRET), vatNumber
Locationaddress (street, city, region, postal code, country, formatted), location (lat, lng)
Profilename, url, foodCategories, priceRangeMin, priceRangeMax
Social proofrating, reviewCount, imageCover

CSV uses semicolon separators for Excel-friendly import.


Input reference

ParameterPurpose
modeterritory / city / urls
countryCountry code (Territory mode). In City mode, country is auto-detected from city names
regioncountryCode:regionCode, e.g. fr:idf. Must match the selected country
cityNamesCity names; optional fr:Annecy to force locale
categoriesCuisine filters — default ["fast-food"]; clear for all cuisines (City mode uses the first item only)
maxResultsCap (per city in City mode; total in Territory). Default 15 for a short test; empty = unlimited (long runs)
collectEmailsWhen enabled, uses a residential proxy so legal disclosure (and email) can load
startUrlsStore 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.

  1. Run optionsTimeout → e.g. 28800 (8 hours) or use your Actor’s default if published with a high defaultRunOptions.timeoutSecs
  2. Or set maxResults (e.g. 5000–10000) for a representative sample in less time
  3. Or narrow region instead 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 (bebe:all, not fr: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 install
npm run build
apify 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