Grubhub Scraper for Menus, Prices and Fees

A Grubhub price is never one number: it moves with the delivery address, the merchant, the promo and whether Grubhub+ is on. We extract Grubhub menus and every layer of that price.

Grubhub Scraper
Solutions

Managed Grubhub scraping, run end to end by us

ScrapeIt runs the Grubhub scraper as a managed service. You name the metros, delivery addresses and fields; we build the crawl, run it on your cadence and hand back CSV, JSON, Excel or a push into your warehouse. Anti-bot handling, proxy rotation and CAPTCHA solving are part of the service rather than something you arrange - this marketplace is defended hard, and some days that is the bulk of the work.

We take only what the site shows without an account: no sign-in, no order history, no checkout, nothing from the Instacart tab. Reviewer names, courier names and anything else that identifies a private person stay out of the export. Merchants, menus, prices, fees and hours are the product.

Grubhub terms of use forbid scraping and systematic retrieval without written permission. We put that in front of you rather than bury it: take the use case to your own counsel, and we scope the run to what counsel signs off.

Grubhub restaurant and menu fields in every export

The fields we extract from Grubhub start with the listing card, which is already a dense record: restaurant_id and merchant UUID, name and merchant_url_path, brand and chain identifiers, logo and media images on the Cloudinary CDN, full postal address with latitude and longitude, phone number, time zone, a cuisines array, price_rating from one to four dollar signs, distance_from_location, a delivery estimate with lower and upper bounds, a pickup estimate, delivery_fee beside delivery_fee_without_discounts and min_delivery_fee, delivery_minimum, open state with next_open_at and next_closed_at, and tag sets like no_fees, top_rated, budget_friendly, most_ordered, bodega and OPEN_LATE_NIGHT.

Ratings arrive in three shapes at once: a raw rating count, a Bayesian ten-point value, and a faceted breakdown that scores Delivery Speed, Order Accuracy and Food Quality with a response count and a positive share for each. Review pages add a star breakdown across one to five stars, and each review carries a star rating, a sentiment label, a diner type, any merchant reply and the menu items that diner actually ordered. We keep the counts, the text and the item links; reviewer names stay out.

The menu is a three-level tree. Categories carry a numeric menu_category_id. Items carry an id and uuid, name, description, sequence, a popular flag, a tax category and separate price, delivery_price and pickup_price in cents, plus minimum_price_variation and maximum_price_variation that bracket what the item can cost once options are chosen. Options live in choice_category_list: every choice category has a name, min_choice_options and max_choice_options and a display type such as MODIFIER_ACTION_CHOOSE_ONE or CHOOSE_MANY_OPTIONAL, so a mandatory size question is a 1 of 1 group while an optional extras block is 0 of 6. Each option carries its own id, wording, price delta and a nested choice_category_list. Hours come as delivery and pickup schedules by day of week, with future-order windows and holiday overrides beside them.

Grubhub restaurant and menu fields in every export
Grocery, alcohol, catering and campus storefronts

Grocery, alcohol, catering and campus storefronts

Restaurants are only part of the marketplace. Convenience stores, bodegas, liquor stores and flower shops run as native merchants on the same menu model, which is why a neighborhood page carries Convenience Items, Alcohol Items, Grocery Items and Flowers Items blocks beside the restaurant list, and why merchant records are typed CONVENIENCE, GROCERY_ITEMS, ALCOHOL or PHARMACY. Gopuff and 7-Eleven storefronts sit in the same feed with the same fields. Supermarket and drugstore catalogs are a different animal: Costco, ALDI, Key Food, CVS, Walgreens and Duane Reade open under /third-party/merchant with a partner=instacart parameter, a Groceries Powered by Instacart surface that asks for a sign-in before it shows a shelf. We do not go behind that sign-in, and we say so instead of promising the aisle.

Catering runs its own workflow and its own menus, with order thresholds and a catering sibling id on the merchant record. Campus dining is a third surface again: fee rules carry a campus subscription requirement, promo codes can be limited to campus diners, storefronts can be flagged as campus restaurants, campus users pay from a stored-value card, and Grubhub+ credit is explicitly barred from on-campus dining orders. Corporate accounts add a layer of their own with a popular-at-your-company signal on results. Every one of these surfaces prices the same food differently, and a Grubhub data feed that ignores them will not reconcile.

How Grubhub arranges metros, neighborhoods and menus

Grubhub is a US food delivery marketplace operated by Grubhub Holdings Inc. It now belongs to Wonder Group, and the change is visible from outside: the old corporate address about.grubhub.com lands on Wonder's newsroom, and Wonder's own kitchen brands - Limesalt, Hanu Poke, Wing Trip, Fred's Meat and Bread, Streetbird by Marcus Samuelsson - trade as separate storefronts on the marketplace, several of them sharing one street address. Seamless is the same catalog under a second brand, and a merchant record still carries its legacy seamless_location_id.

Nothing here is national. A delivery address selects a polygon, the polygon selects the merchants, and a menu that shows from one block can be absent from the next. The public browse tree is built from geofences: metro pages like /delivery/ny-nyc, neighborhood pages like /delivery/ny-bronx-jerome_park, ZIP-level pages that append a five-digit code to the same city slug, and geography crossed with cuisine like /delivery/ny-bronx-jerome_park/bodega. Behind every one of them is a browse record with a geofence_type of METRO, CITY or NEIGHBORHOOD, its own UUID, a centroid point, a restaurant_count and a block of editorial copy.

Above the geo tree sit cuisine and dish hubs such as /delivery/cuisine/pizza and /delivery/dish/philly_cheesesteak, a chain hub with an A to Z index at /food/chains, best-of and answers pages, and the merchant page itself at /restaurant/name-street-city/numeric-id. The platform's own city index puts coverage at roughly 300,000 restaurants in more than 4,000 US cities across all 50 states, as of September 2026.

Get a Quote
dev_w
25

Developers

customers
500+

Customers worldwide

pages
1 500 000 000+

Pages extracted

stime
15000+

Hours saved for our clients

Plans

Airplane

€199 / one-time

setup fee - included

Data limits100,000
Frequencyone-time
Run timeup to 5 days
Data storing7 days

Helicopter

€169 / mo

setup fee €499

Data limits250,000
Frequencymonthly
Run timeup to 5 days
Data storing14 days

Glasses

€229 / mo

setup fee €499

Data limits1,000,000
Frequencyweekly
Run timeup to 5 days
Data storing30 days

DNA

€549 / mo

setup fee €799

Data limits3,000,000
Frequency3 times daily
Run timesame day
Data storing90 days

Why Grubhub price monitoring starts with an address

Grubhub prices are a surface, not a figure. An item holds a delivery price and a pickup price that a partner can set apart through the platform's differentiated pricing, and above the item sits a fee stack the search response spells out line by line: DELIVERY as a flat amount, SERVICE as basis points with a floor and a cap, PRIORITY_DELIVERY, small order, long distance and weather fees, and a sales tax rate held per merchant. Promotions ride alongside as their own objects with an offer type, title, flat or percent value, order minimum and legal text, plus spend-based campaigns that zero the delivery fee above a subtotal. Grubhub+ at $9.99 a month rewrites the same menu again with zero delivery fees, lower service fees and 5 percent back on pickup, which is why the pricing call carries a subscriber flag.

Coverage has the same shape. A metro page publishes its own restaurant_count - NYC showed roughly 29,600 in September 2026 - while the listing behind it pages 36 results at a time and stops at 500. Covering a market therefore means slicing it: neighborhood and ZIP geofences, cuisine and dish crossings, chain pages, and a set of delivery addresses that between them touch every polygon. The listing also says who is who: a delivery mode separates full Grubhub-delivered partners from supplemental merchants, and a NONCONTRACTUAL tag marks the place-and-pay storefronts Grubhub serves without a contract, where hours and menu accuracy are worth less than a partner's.

Our Blog

Reads Our Latest News & Blog

Learn how to use web scraping to solve data problems for your organization

How Artificial Intelligence Is Used In Web Scraping

How Artificial Intelligence Is Used In Web Scraping

Leveraging advances in technology, the AI-powered web scraper has skyrocketed in demand and is helping to expand capabilities by automating tedious daily tasks and speeding up data collection from thousands of websites several times over.

What is Web Scraping and What is it Used For?

What is Web Scraping and What is it Used For?

Web scraping is a method of obtaining web data by extracting it from pages of web resources with the help of a program, that is, in automatic mode. It is used to syntactically convert web pages into more usable forms.

Web Scraping for Machine Learning

Web Scraping for Machine Learning

If you specialize in machine learning, you need to feed large amounts of data to the algorithms. Web scraping is the easiest and the most efficient method of collecting the data from all over the Internet.

scrapeit logo

Who builds and keeps your Grubhub data feed

ScrapeIt is a managed extraction company: you get a feed, not a tool to learn. Our engineers build the Grubhub scraping pipeline, watch it while the marketplace moves - new storefronts, retired ones, reshaped fee rules - and repair it before your dashboard goes quiet.

Start with a sample in your own format, built against your own addresses and metros. Approve it and the full run follows on the cadence you pick, from one snapshot to several passes a day when Grubhub price data has to stay fresh.

FAQ

Does Grubhub have a public API for menus and prices?

No. There is no open Grubhub API that serves menus, fees or merchant listings to outside developers. The developer portal is real and public to read, but it documents partner integrations: a Marketplace API that lets a point-of-sale or ordering provider push menus and catalogs and receive orders, a Connect API for delivery, reporting endpoints, webhooks and an SFTP catalog feed for retailers. Access needs an application, a pilot phase and issued credentials, and it is built for merchants pushing data in, not for buyers pulling data out. Our Grubhub scraper reads the same public pages a diner sees.

Which Grubhub fields end up in the export?

Merchant level: name, ids, address with coordinates, phone, cuisines, price rating, star rating with review count, faceted scores for delivery speed, order accuracy and food quality, delivery and pickup estimates, distance, delivery fee, service fee, order minimum, delivery and pickup hours, open state, offers and the partner or place-and-pay flag. Item level: category, name, description, price, separate delivery and pickup prices, minimum and maximum price variation, availability, popularity flag and image. Modifier level: choice group name, minimum and maximum selections, and each option with its own price delta.

How do you cover a whole city or a whole state?

By slicing, because no single page holds a metro. A city listing pages 36 merchants at a time and stops at 500, while the same page reports tens of thousands of restaurants delivering in that metro. So we crawl the geofence tree beneath it - neighborhood pages, ZIP pages, cuisine and dish crossings - and we run a grid of real delivery addresses so every delivery polygon is touched at least once. Chain hubs catch the national brands. For a state, the city index is the seed list and the address grid does the rest.

How often can Grubhub data be refreshed, and in what format?

Menus and merchant details change slowly; fees, promos, ETAs and open or closed state change through the day. Most clients take menus and item prices daily or weekly and put fees, offers and availability on a faster loop, up to several passes a day for a watchlist of merchants. Delivery is CSV, JSON, Excel, a database load or a drop into S3, GCS or your warehouse, with the schema fixed at the sample stage so nothing shifts under your reports. Snapshots are timestamped so price history is comparable run to run.

Is it legal to scrape Grubhub?

We collect only pages that a visitor can open without an account, and we do not touch sign-in areas, order history, checkout or the Instacart-powered grocery tab. We do not collect personal data: reviewer and courier names are dropped, and only merchant, menu, price and fee information is kept. At the same time the Grubhub terms of use prohibit scraping, indexing and systematic retrieval without written permission, so this is a question for your own counsel. Bring us the answer and we scope the project to it.

How does it Work?

Step 1 - Make a Request

You share your needs, expectations, and desired timeframe. We’ll suggest the best solution based on your request and budget.

Step 2 - Configuring Custom Web Crawlers

Our specialists configure the crawlers and extract a sample dataset for your review before proceeding with the full-scale extraction.

Step 3 - Collect and Deliver

Once you approve the sample, we launch the project and start full data collection. We gather, filter, and structure the data for easy use, delivering it on time in your preferred format.

Step 4 - Maintain and Support

Our team manages ongoing processes, monitors website changes, and supports all data extraction cycles. We can also help integrate data into your systems or create dashboards to simplify analysis.

Request a Quote

Tell us more about you and your project information.
Which sites, which fields, how often. A couple of lines is enough.

We reply within 1 business day. No obligation.

scrapiet

Scrapeit Sp. z o.o.
10/208 Legionowa str., 15-099, Bialystok, Poland
NIP: 5423457175
REGON: 523384582