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
18 hours ago
Last modified
Categories
Features
Share
DoorDash Scraper — Restaurants, Menus, Reviews & Restaurant Leads
Extract comprehensive restaurant leads, full itemized menus with pricing, customer reviews, and delivery logistics from DoorDash (doordash.com), the #1 food delivery marketplace in the United States. Scrape verified details including restaurant name, average star rating, number of reviews, cuisine classifications, price tier ($-$$$$), delivery fee estimates, estimated delivery time (ETA in minutes), full street address, and precise GPS coordinates (latitude & longitude).
With optional deep enrichment, you can extract every store's full catalog menu — item titles, descriptions, and numeric prices — alongside authentic customer reviews. Designed for food-tech innovators, restaurant supply sales teams, franchise operators, and market analysts, this actor turns complex food-delivery directories into clean, structured datasets in seconds.
⚡ At a glance
| Feature | Specification |
|---|---|
| Target Website | doordash.com (DoorDash US Food Delivery) |
| Data Fields | Name, rating, review count, cuisines, delivery fee, ETA, address, GPS lat/lng, menu items, reviews |
| Search Capabilities | US cities (City, ST), direct store URLs, or automatic national city sweeps |
| Scale & Capacity | Unlocked deep multi-city extraction (1,000+ stores across metropolitan clusters) |
| Enrichment Toggles | Optional itemized menu extraction and customer review harvesting |
| Typical Speed | 50 store leads per city in 20–30 seconds |
| Proxy Requirement | Apify Proxy enabled (US Residential proxy required for US marketplace compliance) |
| Export Formats | JSON, CSV, Excel (XLSX), XML, HTML Table, RSS |
| Integrations | Make, Zapier, Webhooks, Google Sheets, Airbyte, Keboola, Python, Node.js API |
🔎 Why scrape DoorDash?
DoorDash represents over 65% of the United States food delivery market share, featuring hundreds of thousands of active restaurants ranging from national chains to independent local culinary staples.
Scraping DoorDash delivers actionable intelligence across multiple business verticals:
- High-Converting Restaurant Leads: Equips sales teams selling POS hardware, kitchen automation, food packaging, commercial insurance, and culinary supplies with verified restaurant names, exact street addresses, and active operational statuses.
- Competitive Menu Pricing Intelligence: Track pricing elasticity on signature dishes, monitor inflationary menu adjustments across regional markets, and analyze bundle promotions ("2 for $X").
- Delivery Economics & Fee Audits: Benchmark consumer delivery fees and ETA promises across competitor delivery networks (Uber Eats, Grubhub).
- Local Market Sizing & Expansion: Evaluate restaurant density by cuisine type (e.g., Thai, Mexican, Pizza, Vegan) to uncover underserved delivery zones before opening new brick-and-mortar or ghost-kitchen locations.
- Customer Sentiment & Reviews: Extract qualitative feedback from verified delivery patrons to identify service friction points and top-selling dishes.
📊 Food Delivery Marketplace Comparison
| Dimension | DoorDash Scraper | Grubhub Scraper | Uber Eats Scraper |
|---|---|---|---|
| US Market Share | ~66% (National Leader) | ~10–12% (Regional Pockets) | ~23% (Urban Hubs) |
| Leads Extraction Speed | ~50 stores / city in ~25s | ~30–40 stores / city | Browser-dependent (~60s) |
| Address Precision | Full printable address + Lat/Lng | ZIP code + City | Street + City |
| Delivery Economics | Display fee + ETA minutes | Delivery fee + Min order | Fee + ETA range |
| Menu Depth | Item name, description, price | Item name + price | Item name + price |
| Customer Reviews | Verified customer feedback | Star rating aggregate | Star rating aggregate |
| Suburban Coverage | 🟢 Extremely High | 🟡 Moderate | 🟢 High |
📊 Key Data Fields & Coverage
Every output record represents a single restaurant listing with optional nested menu and review arrays.
🏪 Store Identity & Location
| Field | Type | Description | Coverage |
|---|---|---|---|
storeId | string | Unique persistent DoorDash store identifier | 🟢 High (100%) |
name | string | Official restaurant business name | 🟢 High (100%) |
url | string | Canonical web listing URL | 🟢 High (100%) |
address | string | Full formatted street address with ZIP code | 🟢 High (98%) |
city | string | Municipal city name | 🟢 High (98%) |
latitude | number | Precise geographic latitude coordinate | 🟢 High (98%) |
longitude | number | Precise geographic longitude coordinate | 🟢 High (98%) |
logo | string | High-resolution branding logo image URL | 🟢 High (90%) |
📈 Delivery Economics & Ratings
| Field | Type | Description | Coverage |
|---|---|---|---|
averageRating | number | Customer star rating (1.0 to 5.0) | 🟢 High (95%) |
numRatings | number | Total count of customer ratings received | 🟢 High (95%) |
cuisines | array | Cuisines and food categories (e.g. ["Italian", "Pizza"]) | 🟢 High (98%) |
priceTier | number | Price category index (1 = $, 2 = $$, 3 = $$$, 4 = $$$$) | 🟢 High (90%) |
deliveryFee | string | Current consumer delivery fee (e.g., "$1.99") | 🟢 High (95%) |
etaMinutes | number | Estimated delivery fulfillment duration in minutes | 🟢 High (90%) |
distance | string | Physical distance from target search center | 🟢 High (85%) |
offersPickup | boolean | Whether in-store pickup is supported | 🟢 High (100%) |
isSponsored | boolean | Whether store is currently running paid placement | 🟢 High (100%) |
popularItems | array | High-velocity featured menu item titles | 🟢 High (85%) |
🍽️ Itemized Menus (Optional includeMenu)
| Field | Type | Description | Coverage |
|---|---|---|---|
menu | array | Array of menu item objects | 🟡 Opt-in (100% when enabled) |
menu[].name | string | Title of menu dish or beverage | 🟢 High |
menu[].description | string | Ingredient breakdown or dish description | 🟢 High |
menu[].price | number | Numeric parsed price (e.g., 14.95) | 🟢 High |
menu[].priceDisplay | string | Exact on-screen pricing string (e.g., "$$14.95") | 🟢 High |
⭐ Customer Reviews (Optional includeReviews)
| Field | Type | Description | Coverage |
|---|---|---|---|
reviews | array | Array of recent customer review objects | 🟡 Opt-in (100% when enabled) |
reviews[].reviewer | string | Display name or initials of patron | 🟢 High |
reviews[].rating | number | Individual star rating (1 to 5) | 🟢 High |
reviews[].date | string | ISO publication timestamp of review | 🟢 High |
reviews[].text | string | Full customer commentary text | 🟢 High |
🎯 Detailed Use Cases & Workflows
1. Restaurant Supply & B2B Sales Prospecting
- Objective: Generate qualified outbound prospect lists for restaurant POS terminals, kitchen grease cleaning services, and eco-friendly food containers.
- Workflow: Target top metropolitan areas (e.g.,
Chicago, IL,Dallas, TX,Miami, FL). Extract restaurant records with full addresses and phone coordinates. Filter for independent operators (priceTier >= 2andnumRatings < 500) to deliver high-converting sales leads to your BDRs.
2. Competitive Price Tracking & Menu Analytics
- Objective: Monitor menu price inflation and competitive delivery markups across rival burger or sushi chains.
- Workflow: Provide direct
storeUrlsfor 20 regional locations and toggleincludeMenu: true. Parse itemized prices weekly to calculate average entrée cost fluctuations.
3. Ghost Kitchen & Virtual Brand Market Feasibility
- Objective: Identify market saturation and gaps before launching a virtual chicken wing or smashburger concept.
- Workflow: Scrape all restaurants in target expansion cities. Analyze
cuisinesarrays to determine cuisine concentration, average delivery fees, and consumer ratings in each metro.
4. Local Market Expansion Audits
- Objective: Map competitive restaurant footprints across major US states.
- Workflow: Run a multi-city sweep across 25 major US cities. Ingest
latitudeandlongitudecoordinates into mapping software (Tableau, ArcGIS, or Google Earth) to visualize coverage voids.
⚙️ Input Configuration & Parameters
Every input parameter is optional. If executed with empty inputs, the scraper automatically sweeps top US cities for a fast lead generation sample.
| Parameter | Type | Default | Description |
|---|---|---|---|
location | array | ["New York, NY"] | List of US cities formatted as City, ST (e.g., Austin, TX, Seattle, WA). |
storeUrls | array | [] | List of specific DoorDash restaurant URLs to scrape directly. |
includeMenu | boolean | false | Enable to fetch and parse complete itemized menus with prices for every store. |
includeReviews | boolean | false | Enable to fetch and parse recent verified customer reviews. |
maxStores | integer | 0 | Total maximum restaurants to collect across all cities. 0 = auto/unlimited. |
proxyConfiguration | object | {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"} | Proxy configuration. US Residential proxy is pre-configured. |
📝 Input Configurations for Common Scenarios
Scenario A: Fast Prefill Run (Demo)
{"location": ["New York, NY"],"includeMenu": false,"includeReviews": false,"maxStores": 50}
Scenario B: Multi-Metro Restaurant Lead Generation (500+ Stores)
{"location": ["New York, NY","Los Angeles, CA","Chicago, IL","Houston, TX","Miami, FL","Atlanta, GA","Dallas, TX","Phoenix, AZ","Denver, CO","Seattle, WA"],"includeMenu": false,"includeReviews": false,"maxStores": 500}
Scenario C: Deep Menu & Price Audit for Specific Competitors
{"storeUrls": ["https://www.doordash.com/store/shake-shack-new-york-24750/","https://www.doordash.com/store/sweetgreen-new-york-29381/"],"includeMenu": true,"includeReviews": true,"maxStores": 50}
📦 Sample Output Record
{"storeId": "24750","name": "Shake Shack (Madison Square Park)","url": "https://www.doordash.com/store/shake-shack-new-york-24750/","averageRating": 4.7,"numRatings": 3410,"cuisines": ["American", "Burgers", "Fast Food"],"priceTier": 2,"deliveryFee": "$1.99","etaMinutes": 25,"distance": "0.8 mi","address": "Madison Ave & E 23rd St, New York, NY 10010, USA","city": "New York","latitude": 40.7415,"longitude": -73.9881,"offersPickup": true,"isSponsored": false,"popularItems": ["ShackBurger", "Crinkle Cut Fries", "Classic Shake"],"logo": "https://img.cdn4dd.com/p/software/image/shake-shack-logo.png","menu": [{"name": "ShackBurger","description": "Cheeseburger topped with lettuce, tomato, and ShackSauce on a toasted potato bun.","price": 8.49,"priceDisplay": "$8.49"},{"name": "Crinkle Cut Fries","description": "Crispy crinkle cut fries salted to perfection.","price": 4.69,"priceDisplay": "$4.69"}],"reviews": [{"reviewer": "Michael R.","rating": 5,"date": "2026-11-04T18:22:00.000Z","text": "Fries were still hot and the burger was incredible as always."}],"searchLocation": "New York, NY","scrapedAt": "2026-11-10T13:46:00.000Z"}
💻 Programmatic Usage & API Integration
Trigger runs and retrieve results via the official Apify Client in Python, JavaScript, or direct REST API requests.
Python Integration
from apify_client import ApifyClient# Initialize client with your Apify API tokenclient = ApifyClient("YOUR_APIFY_TOKEN")# Prepare actor inputrun_input = {"location": ["Austin, TX", "San Antonio, TX"],"includeMenu": False,"includeReviews": False,"maxStores": 100}# Run actor and wait for completionrun = client.actor("haketa/doordash-scraper").call(run_input=run_input)# Fetch results from default datasetfor store in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{store['name']} | Rating: {store['averageRating']} | Address: {store['address']}")
Node.js / JavaScript Integration
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: 'YOUR_APIFY_TOKEN',});const input = {location: ["Chicago, IL"],includeMenu: true,maxStores: 25};const run = await client.actor('haketa/doordash-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach((store) => {console.log(`[${store.name}] Menu Items: ${store.menu?.length || 0} (${store.address})`);});
Direct REST API Call
curl -X POST "https://api.apify.com/v2/acts/haketa~doordash-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"location": ["San Francisco, CA"],"maxStores": 50}'
🔗 Integrations & Data Pipelines
Connect your scraped DoorDash dataset directly into your sales CRM or business intelligence suite:
- Google Sheets: Pipe fresh restaurant leads directly into shared spreadsheets for immediate sales rep outreach.
- HubSpot / Salesforce: Import restaurant business records with addresses, ratings, and price tiers directly into your CRM.
- Airtable: Create an interactive regional restaurant database with automated status tracking.
- Zapier & Make: Forward newly discovered restaurants matching specific cuisine criteria directly to communication channels.
- BigQuery & Snowflake: Maintain longitudinal tables of menu price movements across nationwide restaurant brands.
🛠️ Step-by-Step Getting Started Guide
- Open the Actor: Navigate to
haketa/doordash-scraperon the Apify Console. - Enter Cities or Store URLs: Add target locations (e.g.,
Los Angeles, CA,Miami, FL) or paste specific restaurant profile URLs. - Choose Enrichment Level:
- For fast leads: Leave
includeMenuandincludeReviewsunchecked (scrapes ~50 stores per city in ~25s). - For full data: Enable
includeMenuand/orincludeReviews.
- For fast leads: Leave
- Set Store Volume: Set
maxStoresto your desired count (e.g.50for quick testing, or1,000+for large market sweeps). - Click Start: Hit the green Start button in the Console.
- Export Your Records: Download your results in the Dataset tab as CSV, Excel, or JSON.
💡 Best Practices & Pro Tips
- Leads First, Menus Second: For broad market coverage, run leads-only (
includeMenu: false) to pull hundreds of restaurant leads in under a minute. Then, isolate high-priority target stores and run withincludeMenu: true. - Formatting City Names: Always use
City, STsyntax (e.g.Denver, COorMiami, FL) rather than informal nicknames to ensure precise marketplace resolution. - Keep Residential Proxy Enabled: DoorDash enforces strict regional geographical boundaries. Operating through US residential proxies ensures uninterrupted access.
- De-duplication Guarantee: Overlapping metropolitan regions are automatically deduplicated by unique
storeId.
❓ Frequently Asked Questions
How many restaurants can I extract in a single run?
There is no hard limitation. Each US city listing returns ~50 active restaurants. By supplying 20+ cities and configuring maxStores: 1000+, you can extract thousands of de-duplicated restaurant records in a single execution.
Why is a US residential proxy required?
DoorDash is an exclusively US and North American service that restricts non-US or datacenter traffic. The pre-configured US residential proxy ensures maximum reliability and consistent data extraction.
Can I extract menus and prices for specific chains?
Yes. Paste individual DoorDash restaurant URLs directly into the storeUrls parameter and toggle includeMenu: true to extract full itemized menus and prices.
Are phone numbers included?
DoorDash does not publish direct telephone numbers on public web consumer pages. However, the scraper provides full formatted street addresses and GPS coordinates, making external phone enrichment straightforward.
How frequently is pricing data updated?
The scraper reads live page payloads at the exact time of execution, capturing real-time delivery fees, ETA calculations, and active menu prices.
What export formats are supported?
You can export results directly from the Apify Console as JSON, CSV, Excel (XLSX), XML, or HTML Table.
📋 Changelog
v1.2 — 2026-11
- 1,000+ Deep Multi-City Pagination Unlocked: Removed restrictive 20-store caps on fallback runs and added multi-city automated expansion to support 1,000+ store sweeps seamlessly.
- Fast Prefill Optimization: Streamlined default prefill parameters to execute clean 50-store lead runs in under 30 seconds.
- Enhanced Address Parsing: Improved extraction of structured street addresses and geographic coordinates.
- Comprehensive Documentation: Added multi-platform marketplace comparison tables, visual shields badges, and complete Python and Node.js SDK snippets.
v1.1 — 2026-10
- Added itemized menu catalog extraction with numeric price normalization.
- Added verified customer review extraction.
- Optimized hybrid session persistence for accelerated HTTP throughput.
v1.0 — 2026-10
- Initial production release.
- Extraction of restaurant name, rating, review count, cuisines, delivery fee, ETA, address, and GPS coordinates.