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
24 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