DoorDash Scraper - Restaurants, Menus & Prices
Pricing
from $5.00 / 1,000 restaurant scrapeds
DoorDash Scraper - Restaurants, Menus & Prices
Scrape DoorDash restaurants & menus by city: name, full address, cuisine, price tier, menu items with prices, rating, reviews and geo. Optional full menu & review enrichment and monitoring. No login or API key.
Pricing
from $5.00 / 1,000 restaurant scrapeds
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
DoorDash Scraper — Restaurants, Menus, Prices & Reviews
Scrape DoorDash — the #1 US food-delivery marketplace — into clean, structured data. Pull every restaurant in a city with name, full street address, cuisine, price tier, logo, and a menu preview with prices. Turn on store details for the complete menu (every section, item & price), star rating, review count, customer reviews and geo coordinates. Built-in monitor mode returns only new restaurants between runs.
No API key, no login, no browser automation — fast HTTP straight to the source, with a 0–100 quality score on every restaurant.
Why this DoorDash scraper?
Most food-delivery scrapers give you a list of names, then break or stop at the listing card. This actor reads DoorDash's own structured (JSON-LD) data and ships the full record — including the data that powers menu-pricing and competitive-intelligence use cases:
| Data | Typical scrapers | This actor |
|---|---|---|
| Restaurant name + store URL | ✅ | ✅ |
| Full street address + city/state | partial | ✅ |
| Cuisine(s) + price tier ($–$$$$) | partial | ✅ |
| Logo / cover image | ❌ | ✅ |
| Menu preview (popular items + prices) | ❌ | ✅ |
| Full menu — every section, item, description & price (store details) | ❌ | ✅ |
| Star rating + review count (store details) | ❌ | ✅ |
| Customer reviews (author, stars, text) (store details) | ❌ | ✅ |
| Geo (lat/long) (store details) | ❌ | ✅ |
| Filter by city, cuisine, price, rating | partial | ✅ |
| Monitor mode — only new restaurants | ❌ | ✅ |
| Quality score (0–100) | ❌ | ✅ |
Who uses DoorDash data?
- Restaurant-tech, POS, online-ordering & delivery SaaS — build prospect lists of restaurants by city and cuisine, with address and menu.
- Food brands, distributors & suppliers — find and segment restaurants that could carry your products.
- Menu & price intelligence — benchmark competitor menus, item pricing and price tiers across a market.
- Ghost kitchens & virtual brands — map the competitive landscape and white space by cuisine.
- Market researchers & analysts — restaurant density, cuisine mix, ratings and pricing trends by city.
- Investors & real-estate teams — gauge food-service supply and demand in a trade area.
How to use
- Sign up for Apify — the free plan is enough to try this actor.
- Open the DoorDash Scraper, enter one or more cities ("Austin, TX"), optionally add cuisines, and click Start.
- Watch results stream into the dataset table.
- Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.
Input
{"cities": ["Austin, TX", "New York, NY"],"cuisines": ["pizza", "mexican"],"includeStoreDetails": true,"includeReviews": true,"maxReviewsPerStore": 10,"priceTiers": ["1", "2"],"maxResults": 100}
| Field | Type | Description |
|---|---|---|
cities | array | Cities to scrape, as "City, ST" (e.g. "Austin, TX"). |
cuisines | array | Optional cuisine filters — each is scraped separately per city (~50 restaurants each) to expand coverage. |
startUrls | array | DoorDash city pages or single /store/<id>/ URLs (auto-routed; store URLs always pull full details). |
maxResults | integer | Cap on restaurant records (default 100). |
includeStoreDetails | boolean | Open each store page for the full menu, rating, reviews and geo. |
includeReviews | boolean | Include customer reviews when store details are on. |
maxReviewsPerStore | integer | Max reviews per restaurant. |
cuisineFilter | array | Output filter: keep only matching cuisines. |
priceTiers | array | Output filter: 1 = $, 2 = $$, 3 = $$$, 4 = $$$$. |
minRating / minReviews | integer | Output filters (require store details). |
withMenuOnly | boolean | Only restaurants that have menu items. |
monitorMode | boolean | Emit only restaurants not seen in previous runs. |
proxyConfiguration | object | Defaults to Apify Residential, US (recommended). |
Output
Each restaurant is one row tagged type: "restaurant":
{"type": "restaurant","storeId": "62014","name": "The Cheesecake Factory","url": "https://www.doordash.com/store/the-cheesecake-factory-austin-62014/","cuisines": ["American", "Dessert"],"primaryCuisine": "American","priceRange": "$$","priceTier": 2,"street": "10000 Research Boulevard","city": "Austin","state": "TX","rating": 4.5,"reviewCount": 50,"latitude": 30.39098,"longitude": -97.747569,"menu": [{ "section": "Most Ordered", "items": [{ "name": "Whole Wheat Loaf", "price": 3.5, "priceText": "$3.50" }] }],"menuSectionCount": 9,"menuItemCount": 91,"reviews": [{ "author": "Miguel R", "rating": 5, "body": "...delicious!" }],"leadScore": 88,"scrapedAt": "2026-06-24T01:00:00.000Z"}
Without store details, each row carries the city-feed data: name, street/city/state, cuisines, priceRange, imageUrl, and a menuPreview (popular items with prices).
Monitor mode
Turn on monitorMode to remember every restaurant (storeId) across runs and emit only restaurants not seen before — perfect for tracking new restaurant openings in a market. State lives in a named key-value store (monitorStoreName, default doordash-scraper-monitor); use a different name per tracked market. This is orthogonal to Apify Schedules — the schedule decides when to run, monitor mode decides what's new.
Automate & schedule
- Apify API — start runs, fetch datasets, manage schedules over REST.
- apify-client for JavaScript and apify-client for Python — official SDKs.
- Schedules — run it daily/weekly to track new restaurants and menu/price changes in a market.
- Webhooks — trigger downstream actions (CRM import, Slack alert, price-monitoring job) when a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/doordash-scraper').call({cities: ['Austin, TX'],includeStoreDetails: true,maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Integrate with any app
Connect the dataset to 5,000+ apps — no code required:
- Make — multi-step automation scenarios.
- Zapier — push new restaurant leads straight into your CRM.
- Slack — get notified when a monitored city has new restaurants.
- Google Drive / Sheets — auto-export every run to a spreadsheet.
- Airbyte — pipe results into your data warehouse.
- GitHub — trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "list the top-rated pizza restaurants in Austin with their menu prices" and let it run this scraper for you.
More scrapers from scrapesage
- UberEats Scraper — restaurants, menus and prices from Uber Eats.
- Wolt Scraper — restaurant and store data from Wolt.
- Zomato Scraper — restaurant listings, menus and reviews.
- Just Eat Scraper — European food-delivery restaurant data.
- Talabat Scraper — MENA food-delivery restaurants and menus.
- US Restaurant Inspection Scraper — health-inspection scores and violations.
- Google Maps Scraper — local business leads, emails, phones and reviews.
- Website Contact Scraper — emails, phones and socials from any website.
Tips
- Wider coverage per city: add several
cuisines(pizza, mexican, sushi, burgers…) — each pulls ~50 more restaurants for the same city. - Cheapest runs: leave
includeStoreDetailsoff — the city feed already gives name, address, cuisine, price tier and a menu preview. - Menu/price benchmarking: turn on
includeStoreDetailsto capture every menu item and price across a market. - Track new openings: combine Schedules with
monitorMode.
FAQ
Do I need a DoorDash API key or login? No. This actor reads the public city and store pages — no key, no login, no browser.
Can I target a specific city? Yes — the city is set by the URL, so results are reliably localized to the city you enter (unlike IP-based scrapers).
Does it get restaurant phone numbers? DoorDash routes contact through its platform and does not publish restaurant phone numbers, so phone is not available. You get the full street address, which pairs well with the Google Maps Scraper for phone/email enrichment.
Why Residential proxy? DoorDash serves clean pages over US residential IPs but challenges datacenter IPs. The default is Apify Residential (US); blocked requests retry automatically on a fresh IP.
Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.
Not affiliated with or endorsed by DoorDash. Use responsibly and in accordance with applicable laws and terms. Scrapes only publicly available data.