Grubhub Scraper - Extract Restaurant Data, Menus & Reviews
Pricing
from $0.01 / 1,000 results
Grubhub Scraper - Extract Restaurant Data, Menus & Reviews
Scrape comprehensive restaurant data from Grubhub including menus, pricing, ratings, and delivery details. Perfect for market research, competitive analysis, and food industry intelligence. Research Restaurant Markets Track Menu Pricing Compare Platforms Build Restaurant Databases Analyze Trends
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
The Howlers
Maintained by CommunityActor stats
0
Bookmarked
50
Total users
4
Monthly active users
4 days ago
Last modified
Categories
Features
Share
Grubhub Restaurant Scraper
Scrape Grubhub for restaurant listings, menus, prices, ratings, and delivery info. Extract restaurant data for food delivery market research. Built by John Rippy (https://www.linkedin.com/in/johnrippy/).
Note: this actor runs in Demo Mode by default, so a default free run returns sample data. Set demoMode to false to fetch real data.
How it works
Results come from Grubhub's own JSON API, the same one www.grubhub.com uses for visitors who are not logged in: a search near your location (city and state, ZIP code, address, or lat,lng), then one request per restaurant for its menu when includeMenu is on. Requests go out directly and switch to your proxy setting only if Grubhub blocks them. No browser is used.
Quick Start
Test with Demo Mode (free, no API key needed)
{"demoMode": true,"restaurantUrl": "https://example.com"}
Run with real data
{"demoMode": false,"scrapeType": "search","restaurantUrl": "https://example.com","searchTerm": "pizza","location": "Chicago, IL","cuisineType": "all","includeMenu": true,"maxResults": 50,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Input Parameters
| Parameter | Type | Default | Required | Description |
|---|---|---|---|---|
scrapeType | string | "search" | No | What type of data to scrape |
restaurantUrl | string | - | No | Direct Grubhub restaurant page URL |
searchTerm | string | "pizza" | No | Cuisine type or restaurant name |
location | string | "Chicago, IL" | No | City and state, ZIP code, address, or lat,lng to search near |
cuisineType | string | "all" | No | Filter by cuisine |
includeMenu | boolean | true | No | Extract menu items and prices |
maxResults | integer | 50 | No | Maximum number of restaurants to scrape |
proxyConfiguration | object | {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]} | No | Used only if Grubhub blocks direct requests |
demoMode | boolean | true | No | Return sample data without actual scraping |
webhookUrl | string | - | No | Optional webhook URL to receive data as it's scraped |
Pricing
This actor uses pay-per-event billing:
| Event | When it is charged | Price |
|---|---|---|
| Actor start | Once when the run starts, one event per GB of memory (minimum one). At the default 2 GB of memory a run starts at $0.20 | $0.10 per GB |
| Restaurant Listing | Each restaurant listing scraped | $0.003 |
| Menu Item | Each menu item scraped | $0.001 |
| Result | Each item written to the default dataset | $0.00001 |
Demo mode is free -- no charges for sample data.
Troubleshooting
"API error 429" or "Rate limit"
Too many requests. Wait a minute and try again, or reduce the number of items per run.
No results or empty dataset
Check the run log for error messages. Common causes:
- Invalid input format (check the examples above)
- The target data doesn't exist or is too small to track
How do I test without an API key?
Enable Demo Mode in the input. This returns realistic sample data so you can verify the output format works for your workflow.
Built by John Rippy | Actor Arsenal