DoorDash Scraper - Stores, Menus, Reviews & Leads
Pricing
from $3.30 / 1,000 results
DoorDash Scraper - Stores, Menus, Reviews & Leads
Scrape DoorDash restaurants by US city: store leads (name, rating, cuisines, delivery fee, address, ETA), full menus with item prices, and customer reviews. No login or API key.
Pricing
from $3.30 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Security
Limited permissionsShare
DoorDash Scraper — Restaurants, Menus, Reviews & Restaurant Leads
Scrape restaurants, menus and reviews from DoorDash — the #1 US food‑delivery marketplace — without login or code. This DoorDash scraper turns any US city into a clean list of restaurants (ready‑to‑use leads with ratings, cuisines, delivery fees, ETA, full address and GPS coordinates) and can optionally pull each store's full menu with item prices and its customer reviews. Give it a city, press Start, and scrape DoorDash at scale.
Export every result to JSON, CSV, Excel, or API — no login, no API key, no browser extension.
Built for lead‑generation agencies, restaurant tech & aggregators, market researchers, pricing analysts, data journalists and anyone who needs structured DoorDash data instead of copy‑pasting from the app.
🔎 Why scrape DoorDash?
DoorDash is the largest on‑demand food‑delivery platform in the United States, listing hundreds of thousands of restaurants with ratings, cuisines, delivery economics, menus and recent reviews. That is an extraordinary, constantly‑updating source of restaurant leads, menu/price intelligence and local market data — but there is no public DoorDash API, and the site is US‑only and protected by a Cloudflare challenge, so collecting it by hand is slow and brittle.
Manually opening each city page, scrolling through 50 restaurants, clicking into every store for its menu, address and reviews, then re‑typing it into a spreadsheet does not scale past a handful of stores. A DoorDash scraper does it for you: one input, structured output, repeatable on a schedule. In a verification run this actor pulled 350 de‑duplicated restaurants across 7 major US cities in about 35 seconds (leads‑only), with every core field — name, rating, cuisines, price tier, delivery fee, ETA, address and coordinates — populated on essentially every row.
Common reasons people scrape DoorDash:
- Restaurant lead generation — build targeted lists of restaurants in any US metro with name, full address, profile URL, rating, review count, cuisines and price tier for sales and outreach.
- Menu & price intelligence — collect menu items and prices across competitors for pricing strategy, menu research or catalog building.
- Market & delivery research — compare delivery fees, ETAs, price tiers, cuisine mix and ratings city‑by‑city.
- Review & reputation analysis — pull the recent customer reviews (text, star rating, date) DoorDash shows per store.
- Database enrichment — match your own restaurant records to DoorDash coverage, ratings, geo‑coordinates and menus.
- Market sizing & expansion — count and map restaurants per cuisine or neighborhood before launching a product or service.
- Investor / industry research — track the local food‑delivery landscape across multiple cities over time.
✨ What this DoorDash scraper does
- 🏪 Store leads by city — enter one or more US cities as
City, STand get up to ~50 restaurants per city:name,averageRating,numRatings,cuisines,priceTier,deliveryFee,etaMinutes,distance, fulladdress+latitude/longitude,logo,popularItems, plusisSponsoredandoffersPickupflags. - 📋 Full menus (optional) — toggle
includeMenuto open each store page and extract every menu item:name,description, numericpriceand the originalpriceDisplaytext. - ⭐ Reviews (optional) — toggle
includeReviewsto capture the recent customer reviews on each store page:reviewer, starrating,dateandtext. - 🎯 Direct store URLs — paste specific DoorDash store URLs into
storeUrlsto scrape exactly the restaurants you want, with or without a city list. - 🌎 Any US city — just type
New York, NY,Los Angeles, CA,Chicago, IL, etc. - 🧾 Clean, analysis‑ready output — one row per store, numeric prices and ratings, de‑duplicated by store ID, with a
searchLocationandscrapedAttimestamp on every record. - 🔐 Cloudflare handled for you — the actor solves DoorDash's Cloudflare challenge once with a stealth browser over a US residential IP, then reuses that session over fast HTTP. No setup beyond the default US residential proxy.
- ⚡ Fast & reliable — after a one‑time ~6‑second Cloudflare solve, each city page is read as plain HTTP in 1–2 seconds; a leads‑only pull of 350 stores finishes in well under a minute.
- 📤 Export anywhere — download as JSON, CSV, Excel, HTML or XML, or pull from the Apify API.
🎯 Use cases
- Sales & lead‑gen teams building restaurant prospect lists (POS, delivery, marketing, insurance, supply) for a city or region.
- Restaurant‑tech & aggregators enriching their catalogs with DoorDash ratings, cuisines, menus and geo‑coordinates.
- Pricing & category managers benchmarking menu prices and delivery fees against competitors.
- Market researchers & analysts sizing the food‑delivery market by cuisine, price tier or neighborhood.
- Agencies & consultants delivering local‑market reports to restaurant clients.
- Data journalists analyzing delivery economics, ratings or cuisine trends across US cities.
- Ghost‑kitchen & franchise operators scouting demand and competition before opening in a new area.
- Reputation / review analysts monitoring the recent reviews surfaced on store pages.
📥 Input
Enter at least one US city (or one or more store URLs). Everything else is optional.
| Field | Type | Description |
|---|---|---|
location | array of strings | US cities as City, ST (e.g. New York, NY). Each returns up to ~50 restaurants. Leave empty (with no store URLs) to run a small New York demo. |
storeUrls | array of strings | Optional. Specific DoorDash store URLs (e.g. https://www.doordash.com/store/.../) to scrape directly. Works with or without the city list. |
includeMenu | boolean | Also scrape each store's full menu (item names, descriptions, prices). One extra request per store. Default false. |
includeReviews | boolean | Also scrape each store's customer reviews (reviewer, rating, date, text). Shares the request with menus if both are on. Default false. |
maxStores | integer | Maximum stores to save across all cities (default 50). Raise it to pull multiple cities in one run. |
proxyConfiguration | object | US residential proxy required — DoorDash is US‑only + Cloudflare‑protected. Defaults to Apify Residential (US). |
Example input
{"location": ["New York, NY", "Los Angeles, CA", "Chicago, IL"],"storeUrls": [],"includeMenu": false,"includeReviews": false,"maxStores": 150,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" }}
Tip: Start with menus/reviews off to grab store leads for a whole city fast and cheap. Turn them on for a shortlist — each adds one page fetch per store (menus and reviews share the same fetch).
📤 Output
One row per store. Numbers are real numbers, prices are normalized, and records are de‑duplicated by storeId. Menu and reviews are populated only when their toggles are enabled — on a leads‑only run menu and reviews are null.
Example record (leads‑only, from a fresh run)
{"storeId": "39641643","name": "Big Wong Restaurant","url": "https://www.doordash.com/store/big-wong-restaurant-new-york-39641643/","averageRating": 4.6,"numRatings": 364,"numRatingsDisplay": "300+","cuisines": ["Cantonese", "Chinese"],"priceTier": 1,"deliveryFee": "$0 delivery fee","etaMinutes": 33,"distance": "0.9 mi","address": "67 Mott St, New York, NY 10013, USA","streetAddress": "67 Mott St","city": "New York","state": "NY","zipCode": null,"latitude": 40.7161869853735,"longitude": -73.99824502877891,"logo": "https://img.cdn4dd.com/.../header.png","isSponsored": false,"offersPickup": false,"tags": [],"popularItems": ["Combination of any 2 items over rice", "Pork & Shrimp Shu Mai", "Salted Pork with Thousand Year Egg"],"phone": null,"menu": null,"reviews": null,"searchLocation": "New York, NY","scrapedAt": "2026-11-02T00:21:31.216Z"}
When includeMenu / includeReviews are enabled, the same record additionally carries:
{"menu": [{ "id": "41262867532", "name": "Fried Homemade Wonton (10pcs)", "description": "Crispy wontons with shrimp & pork…", "price": 10.95, "priceDisplay": "2 for $10.95" },{ "id": "41262867999", "name": "Sliced Peking Duck (half)", "description": "Served with pancakes and scallions…", "price": 39.95, "priceDisplay": "$39.95" }],"reviews": [{ "reviewer": "Amy L", "rating": 5, "date": "2026-06-19T14:47:08.482Z", "text": "The quality of the duck got a lot better…" }]}
Field reference
| Field | Description |
|---|---|
storeId | DoorDash store ID (used for de‑duplication). |
name | Restaurant name. |
url | DoorDash store profile URL. |
averageRating | Average star rating (number). |
numRatings | Number of ratings (number, e.g. 364, 42874). |
numRatingsDisplay | Rating count as DoorDash shows it (e.g. 300+, 42k+). |
cuisines | Array of cuisine/category labels (e.g. ["Cantonese", "Chinese"]). |
priceTier | Price tier 1–4 (= $–$$$$). |
deliveryFee | Delivery fee as displayed (e.g. $0 delivery fee). |
etaMinutes | Estimated delivery time in minutes. |
distance | Distance from the search location (e.g. 0.9 mi). |
address | Full printable address — includes the ZIP code (e.g. 67 Mott St, New York, NY 10013, USA). |
streetAddress | Street line only (present when available). |
city / state | City and state. |
zipCode | Separate ZIP field — DoorDash does not expose it on city‑list objects, so it is usually null; the ZIP is still inside address. |
latitude / longitude | Store geo‑coordinates (number). |
logo | Store logo / header image URL. |
isSponsored | true if the listing is a sponsored/ad placement. |
offersPickup | true if the store offers pickup. |
tags | Store badges DoorDash shows (e.g. Top Rated) — an array, present when the listing has them (often empty on current city feeds). |
popularItems | Names of popular menu items — present when DoorDash surfaces them (≈90% of city‑list rows). |
phone | Store phone — present on some store pages when includeMenu/includeReviews reach them. |
menu | Array of { id, name, description, price, priceDisplay } — populated when includeMenu is on, otherwise null. |
reviews | Array of { reviewer, rating, date, text } — populated when includeReviews is on, otherwise null. |
searchLocation | The input city (or storeUrls) this record came from. |
scrapedAt | ISO timestamp of the scrape. |
Coverage notes (from a fresh 350‑store run). Core fields —
storeId,name,url,averageRating,numRatings,cuisines,priceTier,deliveryFee,etaMinutes,distance,address,city,state,latitude,longitude,logo,isSponsored,offersPickup— populated on 100% of rows, withstreetAddressat ~99% andpopularItemsat ~91%.tags,zipCodeandphoneare present when available — DoorDash doesn't attach badges, a separate ZIP, or a phone number to every city‑list store (the ZIP is still insideaddress). Prices are the store's current displayed prices (some shown as "2 for $X" —priceis the dollar amount,priceDisplaykeeps the original text). DoorDash shows only a handful of recent reviews per store page; the actor returns those.
🔁 Pagination & scale
Each DoorDash city page (/food-delivery/{city}-restaurants/) embeds its full restaurant list — up to ~50 restaurants per city — in a single Next.js document, so the actor reads them all in one request (there is no numbered "next page" to click on a city page). To scale beyond one city, add more cities to location and/or paste specific storeUrls: the actor iterates every input, de‑duplicates by storeId, and keeps going until it reaches your maxStores cap. In the verification run, 10 cities with maxStores: 350 returned exactly 350 unique stores (0 duplicates) — 50 from each of the first 7 cities, then it stopped the instant the cap was hit. Ten cities ≈ up to ~500 de‑duplicated stores, fifty cities ≈ thousands — you control the total with maxStores. When menus/reviews are enabled, each store adds one extra page fetch; leave them off for the fastest, cheapest city‑wide lead pulls.
⚙️ How to use
- Open the actor on Apify Console.
- Enter one or more US cities in
location(e.g.New York, NY) — or paste DoorDash store URLs instoreUrls. - (Optional) Turn on
includeMenuand/orincludeReviewsfor a shortlist. - Set
maxStores(raise it to pull several cities at once) and keep the default US residential proxy. - Press Start, then download results as JSON, CSV, Excel, HTML or XML — or fetch them from the Apify API.
- Automate it: schedule runs (hourly/daily/weekly) and pipe output to Make, Zapier, Google Sheets or a webhook to keep a live DoorDash dataset.
💡 Tips
- Leads first, enrichment later. Run a city with menus/reviews off to pull ~50 leads in seconds, then re‑run a shortlist of
storeUrlswithincludeMenuon. - Menus and reviews share one fetch — enabling both costs the same page load as enabling one.
- Use
City, STformat. The actor slugifies your input into DoorDash's city URL;Los Angeles, CAworks, a vagueLAmay not. - Scale by stacking cities. Add every metro you care about to
locationand raisemaxStores— the actor de‑dupes bystoreIdautomatically, so overlapping cities won't double‑count a restaurant. - Keep the US residential proxy. DoorDash blocks datacenter and non‑US traffic; the default proxy is required for the Cloudflare clearance to hold.
priceDisplayvsprice. Usepricefor math andpriceDisplaywhen you need the exact on‑screen text (e.g. "2 for $10.95").- Need the ZIP? It's embedded in the full
addressstring even though the standalonezipCodefield is usuallynull.
❓ FAQ
Is scraping DoorDash legal? This actor collects publicly available restaurant, menu and review information shown on DoorDash store and city pages. Scraping public data is generally permissible, but you are responsible for complying with DoorDash's Terms of Service and applicable laws (including privacy/CCPA and anti‑spam rules when contacting businesses). Use the output responsibly.
Do I need a DoorDash account, login or API key? No. There is no public DoorDash API — this scraper needs no account, login or key. Enter a city and run.
How many restaurants can I get, and how fast?
About 50 restaurants per city, in seconds for leads‑only. A fresh verification run returned 350 de‑duplicated stores across 7 cities in ~35 seconds. Add more cities or store URLs and raise maxStores for more — a run can return hundreds to thousands of de‑duplicated stores.
Do I need a proxy? Yes — a US residential proxy (the default). DoorDash is US‑only and Cloudflare‑protected; the actor solves the challenge once (~6 seconds) with a stealth browser over a US residential IP and reuses that session over fast HTTP.
What export formats are supported? JSON, CSV, Excel, HTML and XML, plus the Apify API and dataset webhooks.
Can I get menus and reviews too?
Yes — toggle includeMenu and/or includeReviews. Both read the same store page, so enabling both costs the same as one. On a leads‑only run menu and reviews stay null.
Why only a few reviews per store? DoorDash displays a handful of recent reviews on each store page; the actor returns those.
Can I scrape specific restaurants?
Yes — paste their DoorDash URLs into storeUrls. This works with or without a city list, and the actor de‑dupes them against the city results by storeId.
How fresh is the data?
Every record is scraped live when you run the actor and stamped with scrapedAt. Schedule runs to keep a continuously updated DoorDash dataset.
Can I filter by cuisine or price?
The actor returns the full ~50‑store city feed with cuisines and priceTier on each row, so you can filter the output in your own tool, spreadsheet or dataset view.
🔗 Related scrapers
- Grubhub Restaurant Scraper — Ratings, Fees & Cuisines
- Just Eat Scraper - UK Restaurants, Ratings & Delivery
- Wongnai Scraper - Thailand Restaurants & Businesses
Ready to scrape DoorDash?
Enter a US city, press Start, and export your DoorDash restaurants, menus, reviews and leads to JSON, CSV, Excel or API.
Legal & ethical use
This actor collects publicly available restaurant, menu and review information. Use it responsibly and in line with DoorDash's Terms of Service and applicable laws (including privacy/CCPA and anti‑spam rules when contacting businesses). You are responsible for how you use the output.