DoorDash Scraper — Restaurants, Menus, Prices & Reviews
Pricing
Pay per usage
DoorDash Scraper — Restaurants, Menus, Prices & Reviews
Extract DoorDash restaurants with menus, prices, ratings, delivery fees, delivery times, and cuisine types. Search by city or address. Filter by cuisine. Export to JSON, CSV, or Excel. Ideal for food delivery market research and competitive intelligence.
Pricing
Pay per usage
Rating
0.0
(0)
Developer

Ricardo Akiyoshi
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 hours ago
Last modified
Categories
Share
DoorDash Restaurant & Menu Scraper
Scrape DoorDash for restaurant listings with full menus, item prices, ratings, delivery fees, delivery times, cuisine types, and reviews. Search by city or address. Filter by cuisine. Export to JSON, CSV, or Excel.
What data can you extract?
For each restaurant, the scraper extracts:
| Field | Description | Example |
|---|---|---|
name | Restaurant name | "Joe's Pizza" |
address | Street address | "123 Broadway, New York, NY 10001" |
rating | Average rating (0-5) | 4.7 |
reviewCount | Number of ratings | 1234 |
deliveryFee | Delivery fee | "Free" or "$2.99" |
deliveryTime | Estimated delivery time | "25-35 min" |
priceRange | Price level | "$$" |
cuisine | Cuisine type(s) | "Italian, Pizza" |
menu | Full menu with items | Array of menu items |
menuItemCount | Number of menu items | 45 |
url | DoorDash restaurant URL | "https://www.doordash.com/store/..." |
image | Restaurant header image | URL |
Each menu item includes:
| Field | Description | Example |
|---|---|---|
name | Item name | "Margherita Pizza" |
description | Item description | "Fresh mozzarella, tomato, basil" |
price | Item price | "$14.99" |
image | Item image URL | URL |
category | Menu section | "Pizzas" |
isPopular | Whether marked as popular | true/false |
calories | Calorie count (if available) | "850" |
Use cases
- Market research — Analyze food delivery trends, pricing, and competition across cities
- Competitive intelligence — Track competitor restaurant menus, prices, and ratings
- Pricing analysis — Compare delivery fees, item prices, and price ranges across restaurants
- Lead generation — Build lists of restaurants in specific areas for B2B outreach
- Data journalism — Analyze food delivery ecosystems and pricing patterns
- Academic research — Study food deserts, pricing disparities, and restaurant distribution
Input configuration
Locations (required)
List of cities, addresses, or zip codes to search:
{"locations": ["New York, NY", "Los Angeles, CA", "Chicago, IL"]}
Supported formats:
- City and state:
"New York, NY" - Zip code:
"90210" - Full address:
"123 Main St, Chicago, IL"
Cuisine filter (optional)
Filter results by cuisine type:
{"locations": ["New York, NY"],"cuisine": "pizza"}
Supported cuisines: pizza, chinese, mexican, sushi, japanese, burgers, thai, indian, italian, korean, vietnamese, mediterranean, american, seafood, wings, breakfast, desserts, vegan, healthy, sandwiches, chicken, bbq, ramen, pho, tacos, salads, soup, coffee, bakery, and more.
Max results
Maximum number of restaurants to scrape per location (default: 200):
{"locations": ["New York, NY"],"maxResults": 100}
Set to 0 for unlimited results.
Include menus
Whether to scrape full menus for each restaurant (default: true):
{"locations": ["New York, NY"],"includeMenus": false}
Disabling menus produces faster results with only restaurant-level data.
Proxy configuration
DoorDash has aggressive bot detection. Residential proxies are strongly recommended:
{"locations": ["New York, NY"],"proxy": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Example output
{"name": "Joe's Pizza","address": "7 Carmine St, New York, NY 10014","rating": 4.7,"reviewCount": 2847,"deliveryFee": "$1.99","deliveryTime": "20-30 min","priceRange": "$$","cuisine": "Pizza, Italian","menu": [{"name": "Cheese Pizza (Large)","description": "Classic New York style cheese pizza","price": "$22.00","image": "https://img.cdn.doordash.com/...","category": "Whole Pizzas","isPopular": true,"calories": "2400"},{"name": "Pepperoni Slice","description": "Hand-tossed pepperoni pizza slice","price": "$4.50","image": "https://img.cdn.doordash.com/...","category": "Pizza by the Slice","isPopular": true,"calories": "350"}],"menuItemCount": 28,"url": "https://www.doordash.com/store/joes-pizza-new-york-123456/","image": "https://img.cdn.doordash.com/...","searchLocation": "New York, NY","searchCuisine": "pizza","resultPosition": 1,"scrapedAt": "2026-03-01T12:00:00.000Z"}
Performance and tips
- Use proxies — DoorDash has strong anti-bot measures. Residential proxies are essential for reliable scraping.
- Start small — Test with
maxResults: 10before running large scrapes. - Disable menus for speed — Set
includeMenus: falsefor 3-5x faster scraping when you only need restaurant-level data. - One location at a time — For best results, start with a single location to verify your proxy setup works.
- City format — Use "City, ST" format (e.g., "New York, NY") for best URL matching.
Pricing
This actor uses pay-per-event pricing:
- $0.005 per restaurant scraped (including menu data when enabled)
Legal notice
This actor is designed for personal research and data analysis. Users are responsible for ensuring their use complies with DoorDash's Terms of Service and applicable laws. The actor respects rate limits and does not bypass authentication.
Support
Found a bug or have a feature request? Open an issue on GitHub or contact ricardo.yudi@gmail.com.
Built by Sovereign AI.
Integration — Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("sovereigntaylor/doordash-scraper").call(run_input={"searchTerm": "doordash","maxResults": 50})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item.get('title', item.get('name', 'N/A'))}")
Integration — JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('sovereigntaylor/doordash-scraper').call({searchTerm: 'doordash',maxResults: 50});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(item => console.log(item.title || item.name || 'N/A'));