Grubhub Restaurant & Menu Scraper avatar

Grubhub Restaurant & Menu Scraper

Pricing

from $11.99 / 1,000 result items

Go to Apify Store
Grubhub Restaurant & Menu Scraper

Grubhub Restaurant & Menu Scraper

Scrapes Grubhub restaurant listings and menus by location, cuisine, or direct URL. Returns restaurant details and optional full menu items with prices.

Pricing

from $11.99 / 1,000 result items

Rating

0.0

(0)

Developer

ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

27

Total users

4

Monthly active users

9 days ago

Last modified

Share

ParseForge

Grubhub Restaurant & Menu Scraper

Scrape Grubhub restaurants and menus from any city, ZIP code, or restaurant URL, up to a million per run. Every restaurant comes with its rating, delivery info, cuisine, and full menu items with prices when you enable menu scraping. No login or API key. Export to CSV, JSON, Excel, or XML.

Grubhub's official API needs a partner account and rate-limits you. This reads the public restaurant and menu pages directly, filtered by cuisine or order method, and returns each match in one fixed schema. Search by location or paste a restaurant URL to get that one restaurant's full menu.

Who uses itWhat they scrape Grubhub for
Market researchersWhich restaurants and cuisines are available in a given city or ZIP code
Food delivery analystsHow menus and prices differ across Grubhub markets
Restaurant ownersWhat competitors in their area charge and offer on Grubhub
App developersBuilding a local restaurant discovery feature with live Grubhub data
Lead generation teamsBuilding a list of restaurants with delivery and contact details

What it does

This Actor collects Grubhub restaurant listings and their menu items by location, cuisine, or direct URL, and returns each restaurant as a flat row with optional nested menu data.

  • ๐Ÿ“ Location search: enter a city, address, or ZIP code to get restaurants in that area.
  • ๐Ÿ”— Direct URL: paste a Grubhub restaurant URL to scrape that one restaurant, or a city listing URL to scrape all restaurants on that page.
  • ๐Ÿฝ๏ธ Full menu scraping: enable scrapeMenu to fetch every menu item with its price for each restaurant.
  • ๐Ÿ• Cuisine filter: narrow results to pizza, chinese, sushi, or any cuisine type.
  • ๐Ÿ›ต Order method: choose delivery or pickup to match the restaurants to the service you care about.
  • โšก Concurrency control: set maxConcurrency from 1 to 20 to balance speed against rate limits.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

What you can do with Grubhub data

๐Ÿ“Š Market research on restaurant supply.

A food delivery analyst scrapes all restaurants in Chicago, IL with cuisine filter set to pizza to map the competitive landscape and identify gaps.

๐Ÿ’ฐ Price monitoring for menu items.

A restaurant owner enables scrapeMenu on competitor URLs to track menu prices and item availability over time.

๐Ÿ“ Lead generation for delivery services.

A B2B sales team scrapes restaurants by ZIP code with orderMethod delivery to build a prospect list of restaurants that offer delivery.

๐Ÿ“ฑ App data for a local food discovery feature.

An app developer scrapes a city listing URL to populate a map of restaurants with ratings and cuisine types for their users.

๐Ÿ” Competitor analysis for a single restaurant.

A restaurant consultant pastes a competitor's Grubhub URL with scrapeMenu true to get their full menu and pricing in one run.

Why choose this scraper

What you get
No API keyScrapes public Grubhub pages directly, no registration or OAuth.
Fixed schemaEvery restaurant returns the same flat fields, with menu items nested when enabled.
ScaleCollect up to 1,000,000 restaurants per run.
Flexible inputSearch by location or paste any Grubhub restaurant or city URL.
Export anywhereDownload as CSV, JSON, Excel, or XML, or push to any API.

How it compares

This Actor focuses on restaurant and menu data, while the competitors below either add reviews or offer similar restaurant scraping with different feature sets.

FeatureParseForgeGrubhub Restaurant Reviews ScraperGrubhub Restaurant ScraperGrubhub Restaurant Scraper ๐Ÿฝ๏ธ
Scrape restaurant listings by locationYesNot listedYesYes
Scrape full menu with pricesYesNot listedYesYes
Filter by cuisineYesNot listedNot listedNot listed
Filter by order method (delivery/pickup)YesNot listedNot listedNot listed
Scrape customer reviewsNoYesNot listedNot listed
Scrape a single restaurant by URLYesNot listedYesYes

Configure the run

Drive the Actor from a location, a restaurant URL, or a city listing URL, and filters run as each restaurant is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

{
"location": "Chicago, IL",
"maxItems": 10,
"scrapeMenu": true
}

A larger pull:

{
"location": "Chicago, IL",
"maxItems": 200,
"scrapeMenu": true
}

Pricing

Pay-per-result: $0.01599 per result collected. You pay only for the results written to your dataset.

Results collectedApproximate cost
100 results$1.60
1,000 results$15.99
10,000 results$159.90

New Apify accounts start with $5 in free credit.

Free users

Free-plan runs return up to 10 results as a preview. Upgrade your Apify plan to collect up to 1,000,000 results per run.

Run it

  1. Create a free Apify account with $5 in credit.
  2. Open the Grubhub Restaurant & Menu Scraper.
  3. Set your inputs and any filters, then click Start.
  4. Export the results as CSV, Excel, JSON, or XML from the Dataset tab.

Run it programmatically through the Apify API (run-sync-get-dataset-items) or the ApifyClient for JavaScript and Python.

Use with AI agents (MCP)

Give an AI agent live access to Grubhub through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

$claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/grubhub-scraper"

Then prompt it in plain language to run the scraper and read back the results.

Troubleshooting

Why am I getting no results?

Check your location string. Use a specific city and state, like 'Chicago, IL', or a valid ZIP code. If you used startUrl, make sure it is a Grubhub restaurant or city listing URL. Also check your cuisine filter: if you typed a cuisine that does not exist in that area, you will get zero results.

Why is the run so slow?

Scraping full menus for many restaurants takes time. Reduce maxItems, or set scrapeMenu to false if you only need restaurant details. You can also increase maxConcurrency up to 20, but be careful not to get rate-limited.

Why am I getting rate-limited or blocked?

Lower maxConcurrency to 1 or 2. Add a delay between requests if possible. Run during off-peak hours. If the problem persists, use Apify proxies.

Why are some menu items missing?

Grubhub sometimes loads menu items dynamically. The Actor waits for the page to load, but if items are still missing, try running again. Some restaurants may have incomplete menus on Grubhub itself.

Can I scrape a restaurant URL that is not in the US?

Grubhub URLs are US-based. If you have a URL from another country, it may not work. Use a US location or URL.

FAQ

QuestionAnswer
Do I need a Grubhub account or API key?No. This Actor scrapes public Grubhub pages directly. You only need an Apify account to run it.
Can I scrape a single restaurant's full menu?Yes. Paste the restaurant's Grubhub URL into startUrl and set scrapeMenu to true. The Actor will fetch that restaurant and all its menu items with prices.
How do I search by location?Enter a city, address, or ZIP code in the location field. The Actor will search Grubhub for restaurants in that area. You can also paste a city listing URL into startUrl.
What does the cuisine filter do?It filters restaurants by cuisine type, such as pizza, chinese, or sushi. Leave it empty to get all cuisines.
What is the difference between delivery and pickup?The orderMethod field filters restaurants by the type of order they support. Choose delivery to get restaurants that deliver, or pickup for restaurants that offer pickup.
How many restaurants can I scrape in one run?You can set maxItems up to 1,000,000. The default is 10. Note that scraping full menus for many restaurants will take longer.
Will I get rate-limited?Grubhub may rate-limit aggressive scraping. Lower maxConcurrency to 1 or 2 if you see errors, and consider running during off-peak hours.
What format is the data in?The Actor returns JSON by default. You can export to CSV, Excel, XML, or JSON from the Apify dataset.
Can I scrape restaurant reviews with this Actor?No, this Actor scrapes restaurant listings and menus, not reviews. For reviews, use the Grubhub Restaurant Reviews Scraper.
Does this Actor work outside the US?Grubhub operates primarily in the US. The Actor works for any location Grubhub serves, but coverage outside the US is limited.

Browse the full ParseForge collection for more scrapers.

๐Ÿ†˜ Need help? Email parseforge@protonmail.com with your run ID, your input, and what you expected.

โš ๏ธ Disclaimer. This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Grubhub Holdings Inc. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.