GrubHub Scraper ๐
Pricing
from $3.00 / 1,000 restaurants
GrubHub Scraper ๐
This no-code tool allows you to easily scrape data from GrubHub. Restaurant details like location, menu, logo, review count and more. Fast and reliable! ๐ฅ
Pricing
from $3.00 / 1,000 restaurants
Rating
0.0
(0)
Developer
Nataniel Santos
Maintained by CommunityActor stats
0
Bookmarked
24
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share
๐ What does GrubHub Scraper do?
This actor scrapes GrubHub for restaurant data. It extracts comprehensive data, enabling you to analyze restaurant offerings, pricing, and more.
โจ Features
- ๐ Extracts detailed restaurant information including name, address, phone number, menu items and more
- ๐ท๏ธ Supports scraping by restaurant URLs, search results URLs, or search terms with location
- ๐ High-performance with built-in proxy rotation
- ๐ Supports pagination to scrape multiple pages from search results
- ๐ Automatically handles retries for failed requests
- ๐ฆ Outputs data in JSON format for easy integration with other tools
๐ฏ Use Cases
- Market Research: Analyze restaurant offerings and pricing in specific areas
- Competitive Analysis: Compare restaurant menus and prices
- Data Enrichment: Enhance your datasets with detailed restaurant information
- Business Intelligence: Gain insights into restaurant trends and customer preferences
- Academic Research: Study food industry trends and consumer behavior
๐ก Input Parameters
The actor accepts the following input parameters:
urls(Optional): A list of URLs to scrape. It can be multiple restaurant URLs or a single search results page URLmaxItems(Optional): The maximum number of restaurants to scrape from the provided URLs or search term. Default is 100searchTerm(Optional): Alternatively, you can provide a search term instead of URLs.location(Optional): Location to search for restaurants. You can provide a city like 'New York, NY', or zip code.sortBy(Optional): The sorting criteria for search results. Options includerecommended,distance,fastest,rating,cheapestandmost_expensive. Default isrecommendeddeliveryType(Optional): The type of delivery to filter search results. Options includedeliveryorpickup. Default isdeliveryscrapeMenu(Optional): Whether to scrape menu items for each restaurant. It raises the run time significantly, so use it only if necessary. Default isfalsescrapeAvailableHours(Optional): Whether to scrape available hours for each restaurant. Default isfalse
๐ฅ Input Examples
๐ Scraping by Search URLs
{"urls": ["https://www.grubhub.com/search?orderMethod=delivery&locationMode=DELIVERY&facetSet=umamiV6&pageSize=36&hideHateos=true&searchMetrics=true&latitude=40.71277618&longitude=-74.00597382&geohash=dr5regw3pgd3&includeOffers=true&featureControl=fastTagBadges%3Atrue&sortSetId=umamiV3&countOmittingTimes=true"],"maxItems": 100,"scrapeMenu": true,"scrapeAvailableHours": true}
๐ Scraping by Restaurant URLs
{"urls": ["https://www.grubhub.com/restaurant/20-dollar-pizza-642-9th-ave-new-york/1172686","https://www.grubhub.com/restaurant/pizza-hut-123-main-street-new-york/1234567"],"scrapeMenu": true,"scrapeAvailableHours": true}
๐ Scraping by Search Term and Location
{"searchTerm": "pizza","location": "New York, NY","maxItems": 100,"sortBy": "recommended","deliveryType": "delivery","scrapeMenu": true,"scrapeAvailableHours": true}
๐ฆ Output Format
The output is a JSON array containing objects with the following fields:
logoUrl: URL of the restaurant's logourl: GrubHub URL of the restaurantname: Name of the restaurantid: Unique identifier for the restaurantdescription: Description of the restaurantphoneNumber: Phone number of the restaurantcuisines: List of cuisines offered by the restaurantdeliveryInfo: Object containing delivery informationfee: Delivery feetimeEstimate: Estimated delivery time (min and max)available: Whether delivery is available
location: Object containing location detailsaddress: Street address of the restaurantcity: City where the restaurant is locatedpostalCode: Postal code of the restaurant's locationcountry: Country of the restaurant (if available)latitude: Latitude coordinate of the restaurantlongitude: Longitude coordinate of the restaurant
currencyCode: Currency code used by the restaurantrating: Average rating of the restaurantratingCount: Number of ratings the restaurant has receivedpriceRating: Price rating of the restaurant (1-4 scale)menuItems: Array of menu items (ifscrapeMenuis true)id: Unique identifier for the menu itemname: Name of the menu itemdescription: Description of the menu itemprice: Object containing prices for pickup and deliverypickup: Price for pickupdelivery: Price for delivery
imageUrl: URL of the menu item's image (if available)
availableHours: Array of available hours for the restaurant (ifscrapeAvailableHoursis true)
๐ค Output Example
This is an example of the output you can expect from this actor. You can choose in which format to download your data: JSON, JSONL, Excel spreadsheet, HTML table, CSV, or XML.
{"logoUrl": "https://res.cloudinary.com/grubhub/image/upload/k4ew096v2bajcbkhzbda.jpg","url": "https://www.grubhub.com/restaurant/20-dollar-pizza-642-9th-ave-new-york/1172686","name": "20 Dollar Pizza","id": "1172686","description": "","phoneNumber": "2122456260","cuisines": ["Pizza"],"deliveryInfo": {"fee": 0,"timeEstimate": {"min": 35,"max": 50},"available": true},"location": {"address": "642 9th Ave","city": "New York","postalCode": "10036","country": "","latitude": 40.7603302,"longitude": -73.99082947},"currencyCode": "USD","rating": "3","ratingCount": 27,"priceRating": 2,"menuItems": [{"id": "49249629","name": "Mozzarella Sticks","description": "Served with marinara sauce.","price": {"pickup": 9.95,"delivery": 9.95},"imageUrl": "https://media-cdn.grubhub.com/image/upload/ucywmpm8etd4xfpfmfre.jpg"},...],"availableHours": [{"dayOfWeek": 1,"timeRanges": ["13:30-08:00"]},...]}
๐ฒ How much will scraping GrubHub cost you?
The pricing changes according to your Apify plan.
| Plan | Restaurant Result | Menu Result |
|---|---|---|
| Free | $5/1000 restaurants | $7/1000 menus |
| Starter | $4/1000 restaurants | $5/1000 menus |
| Scale | $3.5/1000 restaurants | $4.5/1000 menus |
| Business | $3/1000 restaurants | $4/1000 menus |
๐ก Note: The cost of scraping menus is only applicable if you enable the scrapeMenu option. It's only charged once per restaurant, regardless of the number of menu items.
๐งฉ Integrations and GrubHub Scraper
Last but not least, GrubHub Scraper can be connected with almost any cloud service or web app thanks to integrations on the Apify platform. You can integrate with Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more. Or you can use webhooks to carry out an action whenever an event occurs, e.g. get a notification whenever GrubHub Scraper successfully finishes a run.
๐ Using GrubHub Scraper with the Apify API
The Apify API gives you programmatic access to the Apify platform. The API is organized around RESTful HTTP endpoints that enable you to manage, schedule, and run Apify actors. The API also lets you access any datasets, monitor actor performance, fetch results, create and update versions, and more.
To access the API using Node.js, use the apify-client NPM package. To access the API using Python, use the apify-client PyPI package.
Check out the Apify API reference docs for full details.
๐ญ Giving feedback
If you have any feature requests or bug reports, please create an issue on the Issues page.
If you need a custom solution of this actor, reach out to me through my email: nathan.santos159@hotmail.com