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
ViberLabs
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
3 days 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