Grubhub + DoorDash + Uber Eats AIO Scraper (Menus/Diffs/Alerts)
Pricing
$10.00 / 1,000 menu items
Grubhub + DoorDash + Uber Eats AIO Scraper (Menus/Diffs/Alerts)
Monitor restaurant menus on DoorDash, Uber Eats, and Grubhub. Extract complete menu data with prices, detect changes, and get alerts when items are added/removed or prices change. Simple pricing: $0.01 per menu item. No per-URL fees, no complicated tiers.
Pricing
$10.00 / 1,000 menu items
Rating
0.0
(0)
Developer
Actor stats
1
Bookmarked
4
Total users
0
Monthly active users
3 months ago
Last modified
Categories
Share
Food Delivery Menu Monitor
Monitor restaurant menus on DoorDash, Uber Eats, and Grubhub for changes. Get notified when prices change, items are added/removed, or menus are updated.
What This Actor Does
This actor scrapes restaurant menu data from food delivery platforms and:
- Extracts complete menus with item names, prices, and descriptions
- Detects changes by comparing with previous runs (diffs)
- Sends alerts via webhooks when changes occur
- Tracks history so you can see what changed and when
Supported Platforms
- โ DoorDash - Full menu extraction with prices
- โ Uber Eats - Complete menu data
- โ Grubhub - Full menu support
Quick Start
Basic Usage
Just provide restaurant URLs and run:
{"urls":["https://www.doordash.com/store/outback-steakhouse-beverly-hills-1037/","https://www.ubereats.com/store/mcdonalds-9502-hwy-5/zm69XuRRTK-mhMG6zndq4g"]}
The actor will:
- Extract all menu items from each restaurant
- Compare with previous runs (if any)
- Output snapshot records with full menu data
- Output diff records showing what changed
With Location (Recommended)
Some platforms require a delivery location:
{"urls":["https://www.doordash.com/store/outback-steakhouse-beverly-hills-1037/"],"locationZipCode":"90210","locationLatitude":34.0901,"locationLongitude":-118.4065}
With Webhook Alerts
Get notified when menus change:
{"urls":["https://www.doordash.com/store/..."],"webhookUrl":"https://hooks.slack.com/services/YOUR/WEBHOOK/URL","webhookSeverityThreshold":"medium"}
Input Parameters
Required
- urls - Array of restaurant URLs to monitor
Optional
- locationZipCode - ZIP code for delivery location (e.g., "90210")
- locationLatitude / locationLongitude - Coordinates for location-gated menus
- webhookUrl - URL to POST alerts when changes detected
- webhookSeverityThreshold - "low", "medium", or "high" (default: "medium")
- diffEnabled - Enable change detection (default: true)
- maxConcurrency - URLs to process in parallel (default: 2)
- maxAttempts - Retry attempts per URL (default: 3)
Advanced
- useApifyProxy - Use residential proxies (recommended)
- doordashMaxWallMs - Max time per DoorDash URL in ms (default: 90000)
- debugSaveBlockedPages - Save debug info for troubleshooting
Output Format
Snapshot Record
{"type":"snapshot","url":"https://www.doordash.com/store/...","platform":"doordash","restaurantName":"Outback Steakhouse","scrapedAt":"2026-03-17T12:00:00Z","menu":{"hash":"abc123...","items":[{"name":"Blackened Salmon Protein Bowl","price":"14.5","description":"Avocado, pickled radish, slaw...","image_url":"https://..."}]},"analytics":{"totalItems":110}}
Diff Record (when changes detected)
{"type":"diff","url":"https://www.doordash.com/store/...","platform":"doordash","severity":"medium","diff":{"counts":{"added":2,"removed":1,"priceChanged":3},"added":[...],"removed":[...],"priceChanged":[...]}}
Pricing
Simple, fair pricing: $0.01 per menu item
No per-URL fees, no complicated tiers. Just pay for what you use.
How It Works
- $0.01 per menu item extracted
- Only charged when items are successfully scraped
- No charge for failed attempts
Examples
Small restaurant (25 items):
- Cost: 25 ร $0.01 = $0.25
Medium restaurant (50 items):
- Cost: 50 ร $0.01 = $0.50
Large restaurant (100 items):
- Cost: 100 ร $0.01 = $1.00
10 restaurants (average 50 items each):
- Cost: 500 ร $0.01 = $5.00
Cost Control
- Use
maxAttempts: 1for cheaper runs (less reliable) - Set
doordashMaxWallMs: 60000to limit time per URL - Disable proxy for lower costs (may be less reliable)
Scheduling
Set up automatic monitoring in Apify Console:
- Go to your Actor โ Schedules
- Create new schedule
- Choose frequency:
- Hourly - For fast-moving menus
- Daily - Most common for restaurant monitoring
- Weekly - For stable menus
Webhook Alerts
The actor can send POST requests when changes are detected:
Slack Example
{"webhookUrl":"https://hooks.slack.com/services/T00000000/B00000000/XXXXXXXXXXXXXXXXXXXXXXXX","webhookSeverityThreshold":"medium"}
Custom Endpoint
Your endpoint will receive:
{"actorRunId":"abc123","timestamp":"2026-03-17T12:00:00Z","diffs":[...],"summary":{"totalUrls":10,"changedUrls":2,"errors":0}}
Troubleshooting
Getting 0 items?
- Check location - Add
locationZipCodeand coordinates - Check URL - Make sure the restaurant is available for delivery
- Enable debug - Set
debugSaveBlockedPages: trueand check the debug store
DoorDash blocked?
DoorDash uses Cloudflare protection. The actor:
- Automatically retries with fresh sessions
- Waits for challenges to resolve (up to
doordashMaxWallMs) - Can use unlocker fallback (advanced users)
Rate limited?
- Reduce
maxConcurrencyto 1 - Enable
useApifyProxywith RESIDENTIAL group - Add delays between runs
Limitations
- DoorDash: May occasionally fail due to Cloudflare (retry usually works)
- Uber Eats: Requires location to be set for most restaurants
- Grubhub: Works reliably with minimal configuration
Support
For issues or questions:
- Check the GitHub repository
- Enable
debugSaveBlockedPagesand inspect debug output - Contact support with your Run ID
Example Use Cases
- Competitive Intelligence - Monitor competitor pricing
- Price Alerts - Get notified when favorite items go on sale
- Menu Tracking - See when restaurants add/remove items
- Data Analysis - Build datasets of restaurant pricing trends
