Uber Eats Full Menu Scraper avatar

Uber Eats Full Menu Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Uber Eats Full Menu Scraper

Uber Eats Full Menu Scraper

[๐Ÿ’ฐ $2 / 1K] Extract full Uber Eats menus โ€” every item with price, description, photo and add-on options โ€” plus store ratings, reviews, hours, address, cuisines and delivery fees. Scrape by store URL or discover every store around any address.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

SolidCode

SolidCode

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Pull complete Uber Eats menus and store profiles at scale โ€” every item with its price, description, photo and availability, plus ratings, review samples, opening hours, cuisines, delivery fees and ETAs. Discover stores around any street address or exact coordinates, or paste store links you already have. Built for restaurant chains, food delivery analysts, CPG brands and menu-data teams who need the whole catalog in one clean table without clicking through Uber Eats one aisle at a time.

Why This Scraper?

  • The complete catalog, not the slice the page shows you โ€” a supermarket store page loads roughly 75 products in a browser. This scraper walked all 9 catalog pages of one and returned 707 unique products, deduplicated by item ID so the "Featured items" carousel never double-counts.
  • Two record types in one dataset โ€” flat store rows and flat menuItem rows joined by storeId. The menu lands ready for Sheets, BI or SQL with no unnesting step, and the Apify Console gives each type its own tab.
  • 10 live-verified languages โ€” English, French, Spanish, Portuguese, Dutch, German, Polish, Swedish, Japanese and Traditional Chinese, each confirmed to return genuinely localized store text and menu section names, not an English page with a flag on it.
  • 7 store types, and you only pay for what you keep โ€” All stores, Restaurants, Grocery, Convenience, Alcohol, Pharmacy and Retail. Store types are resolved before any menu is collected: one run narrowed 97 nearby stores to 78 restaurants, and the 19 excluded stores were never collected or charged for.
  • Delivery and pickup return different data, and both are one setting away โ€” the same store reported a 170โ€“185 minute delivery ETA and an 8โ€“18 minute pickup ETA, with different fees and availability. Run both to compare.
  • Price analytics computed on every store row โ€” min, max and average item price, plus price coverage, photo coverage and customization coverage ratios, so you can rank a market without post-processing.
  • Full option trees on demand โ€” sizes, toppings and add-ons with their upcharges, min/max selection rules, sold-out flags and nested child options for items whose choices branch.
  • 458 stores found around a single address โ€” discover by street address, by exact latitude/longitude, by cuisine keyword, or by pasting store links, and mix all four in one run. Duplicate links across country versions of the site collapse to one store.
  • Reviews with author, text and date, at no extra charge โ€” capped per store and filterable by a "since" date. Reviews arrive with the store profile, so tightening these settings never costs you anything and never slows a run down.

Use Cases

Competitive Menu Intelligence

  • Track a competitor's full menu, prices and photo coverage week over week
  • Compare identical dishes across every location of a chain in one city
  • Spot new item launches, seasonal specials and quiet delisting
  • Benchmark average item price and price coverage against a whole neighborhood

Restaurant & Delivery Analytics

  • Build a census of every store delivering to a postcode, with rating and review counts
  • Measure how delivery ETAs and fees vary by time of day and by neighborhood
  • Compare delivery versus pickup economics on the same set of stores
  • Rank markets by store density, cuisine mix and price tier

CPG & Retail Product Tracking

  • Pull full grocery, convenience and pharmacy catalogs โ€” hundreds to thousands of SKUs per store
  • Monitor shelf presence and pricing of your products across retail partners
  • Track sold-out and unavailable flags to detect stockouts
  • Capture pack sizes and sold-by-unit rules from item quantity data

Market Expansion & Site Selection

  • Map cuisine gaps around a candidate address before signing a lease
  • Size an addressable market by counting stores and menu items in a radius
  • Compare the same brand's pricing across countries using localized store pages
  • Identify high-rating, high-review-count operators worth partnering with

Menu Data & Content Operations

  • Populate menu databases, food apps and recipe tools with structured item data
  • Collect item photos and descriptions for catalog enrichment
  • Feed nutrition, allergen or dietary tagging pipelines with clean item text
  • Keep third-party listings in sync with what a store actually publishes

Getting Started

Simplest โ€” one store, full menu

{
"startUrls": ["https://www.ubereats.com/store/antons-falafel-house/GgaiuGrKTAWJ-S2dHk9EFQ"]
}

Discover restaurants around an address

{
"address": "350 5th Ave, New York",
"storeType": "RESTAURANTS",
"maxStores": 25,
"maxMenuItemsPerStore": 100
}

Cheap store census โ€” profiles only, no menus

{
"address": "Brooklyn, NY",
"storeType": "ALL",
"maxStores": 0,
"maxResults": 500,
"includeMenu": false,
"includeReviews": true,
"maxReviewsPerStore": 5
}

Advanced โ€” localized grocery catalog with options and recent reviews

{
"latitude": "48.8566",
"longitude": "2.3522",
"searchQuery": "supermarchรฉ",
"storeType": "GROCERY",
"diningMode": "DELIVERY",
"maxStores": 5,
"maxResults": 5000,
"includeMenu": true,
"maxMenuItemsPerStore": 2000,
"includeItemCustomizations": true,
"includeReviews": true,
"maxReviewsPerStore": 20,
"reviewsSince": "2025-01-01",
"language": "fr",
"maxConcurrency": 5
}

Input Reference

Store URLs

ParameterTypeDefaultDescription
startUrlsarray1 sample storeUber Eats store page links, e.g. https://www.ubereats.com/store/name/abc123. Works with any country version of the site. Leave empty to discover stores by address instead.

Discover Stores by Location

ParameterTypeDefaultDescription
addressstring""Find stores that deliver to this place, e.g. Brooklyn, NY or 350 5th Ave, New York.
latitudestring""Exact latitude of the delivery point, e.g. 40.7128. Overrides the address. Only works paired with longitude.
longitudestring""Exact longitude of the delivery point, e.g. -74.0060. Overrides the address. Only works paired with latitude.
searchQuerystring""Only find stores matching this cuisine or dish, e.g. sushi, pizza, vegan. Empty returns every store around the address.
storeTypeselectALLAll stores, Restaurants only, Grocery stores, Convenience stores, Alcohol, Pharmacy, or Retail. Excluded stores are never collected or charged for.
diningModeselectDELIVERYDelivery or Pickup. Prices, fees and store availability differ between the two.
maxStoresinteger3How many stores to take from the address search. 0 takes every store found, up to a ceiling of 500 per run. Does not limit pasted store links.
ParameterTypeDefaultDescription
includeMenubooleantrueCollect every menu item with price, description and photo. Turn off for a fast, cheap list of store profiles only.
maxMenuItemsPerStoreinteger0Stop after this many items per store. 0 collects the complete menu, up to a ceiling of 200 catalog pages (roughly 21,000 items) per store.
includeItemCustomizationsbooleanfalseAlso collect sizes, toppings, add-ons and their extra charges. Option lookups get up to 4 minutes per store; anything still queued after that is returned without options. Makes runs substantially slower โ€” see Tips before switching it on.

Run Size Limit

ParameterTypeDefaultDescription
maxResultsinteger10000Stop the whole run once this many results have been saved, counting store profiles and menu items together. Your spending safety net for large grocery searches. 0 means no limit. As the run approaches the limit the remaining room is shared between the stores still being collected, so the last few can return a shortened menu.

Reviews

ParameterTypeDefaultDescription
includeReviewsbooleantrueInclude customer review samples with each store, plus the overall rating and rating count.
maxReviewsPerStoreinteger10Keep at most this many reviews per store. 0 keeps every review the store page provides.
reviewsSincestring""Skip reviews older than this date. Empty keeps all of them.

Language & Speed

ParameterTypeDefaultDescription
languageselectenEnglish, French, Spanish, Portuguese, Dutch, German, Polish, Swedish, Japanese, or Chinese (Traditional). Applies to store text and menu section names.
maxConcurrencyinteger5How many stores to work through at once. Lower it if you see failures; raise it for faster runs on large store lists.

Output

Every run produces flat rows with a recordType field: one store row per store, and one menuItem row per item. Both carry storeId and storeUrl so you can join them.

store rows

{
"recordType": "store",
"storeId": "1a06a2b8-6aca-4c05-89f9-2d9d1e4f4415",
"storeSlug": "antons-falafel-house",
"storeUrl": "https://www.ubereats.com/store/antons-falafel-house/GgaiuGrKTAWJ-S2dHk9EFQ?diningMode=DELIVERY",
"name": "Anton's Falafel House",
"description": "Use your Uber account to order delivery from Anton's Falafel House.",
"storeType": "Restaurant",
"rating": 4.7,
"reviewCount": 600,
"reviewCountText": "600+",
"priceBucket": "$",
"priceLevel": 1,
"cuisines": ["Mediterranean", "Middle Eastern", "Healthy"],
"phone": "+14155550142",
"address": {
"street": "1901 Ocean Ave",
"city": "San Francisco",
"region": "CA",
"postalCode": "94127",
"country": "US"
},
"addressText": "1901 Ocean Ave, San Francisco, CA 94127",
"latitude": 37.7264,
"longitude": -122.4677,
"hours": [
{ "days": "Mon - Fri", "opens": "11:00", "closes": "21:00", "menu": "Main Menu" }
],
"isOpen": true,
"isOrderable": true,
"diningMode": "DELIVERY",
"language": "en",
"deliveryEtaMinutes": { "min": 20, "max": 35 },
"deliveryFee": "$0.49 Delivery Fee",
"imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/hero.jpeg",
"currencyCode": "USD",
"menuSectionCount": 6,
"menuItemCount": 31,
"analytics": {
"itemCount": 31,
"priceCoverage": 1.0,
"imageCoverage": 0.871,
"customizationCoverage": 0.613,
"minPrice": 2.5,
"maxPrice": 18.95,
"averagePrice": 11.42
},
"reviews": [
{
"reviewId": "5f2c1d90-3a71-4b02-9f19-77c0a0d4e881",
"authorName": "Jessica R.",
"text": "Best falafel in the neighborhood, always hot on arrival.",
"createdAt": "2024-01-29T18:22:11.000Z"
}
],
"scrapedAt": "2026-07-31T13:04:22Z"
}

Store identity & ratings

FieldTypeDescription
recordTypestringAlways store for these rows
storeIdstringUber Eats store identifier โ€” join key for menu item rows
storeSlugstringURL slug of the store
storeUrlstringCanonical store page link, including the dining mode used
namestringStore name
descriptionstringStore summary text from the page
storeTypestringMerchant category, e.g. Restaurant, Grocery, Pharmacy
ratingnumberAverage star rating
reviewCountintegerRating count as a number, parsed from values like 600+
reviewCountTextstringThe rating count exactly as Uber Eats displays it
priceBucketstringPrice tier glyphs, e.g. $$
priceLevelintegerPrice tier as a 1โ€“4 number โ€” use this to compare across countries
cuisinesarrayCuisine tags applied to the store

Location & availability

FieldTypeDescription
phonestringStore phone number when published
addressobjectstreet, city, region, postalCode, country
addressTextstringFull address as a single line
latitudenumberStore latitude
longitudenumberStore longitude
hoursarrayOpening blocks: days, opens, closes, menu (24-hour clock)
isOpenbooleanWhether the store was open at collection time
isOrderablebooleanWhether orders were being accepted
diningModestringDELIVERY or PICKUP used for this row
languagestringLanguage code the store page was read in
deliveryEtaMinutesobjectmin and max wait in minutes for the selected mode
deliveryFeestringFee badge text, e.g. $0.49 Delivery Fee
FieldTypeDescription
imageUrlstringStore hero photo
currencyCodestringCurrency of all prices on this store's items
menuSectionCountintegerNumber of menu sections found
menuItemCountintegerNumber of unique items collected for this store
analyticsobjectitemCount, minPrice, maxPrice, averagePrice, priceCoverage, imageCoverage, customizationCoverage
reviewsarrayReview samples: reviewId, authorName, text, createdAt
scrapedAtstringISO timestamp of collection
{
"recordType": "menuItem",
"storeId": "1a06a2b8-6aca-4c05-89f9-2d9d1e4f4415",
"storeName": "Anton's Falafel House",
"storeUrl": "https://www.ubereats.com/store/antons-falafel-house/GgaiuGrKTAWJ-S2dHk9EFQ?diningMode=DELIVERY",
"itemId": "8d31c7f0-51ae-4a6c-b2f8-c0a1e2b39d44",
"name": "Chicken Shawarma Plate",
"description": "Marinated chicken with rice, salad, hummus and pita.",
"sectionName": "Main Menu",
"subsectionName": "Plates",
"price": 16.95,
"priceFormatted": "$16.95",
"currencyCode": "USD",
"imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/item.jpeg",
"isAvailable": true,
"isSoldOut": false,
"hasCustomizations": true,
"customizations": [
{
"title": "Choose your sauce",
"minPermitted": 1,
"maxPermitted": 2,
"options": [
{ "name": "Garlic Sauce", "price": 0.0, "isSoldOut": false, "defaultQuantity": 1 },
{ "name": "Extra Tahini", "price": 0.75, "isSoldOut": false }
]
}
],
"quantityInfo": { "minPermitted": 1, "maxPermitted": 20, "increment": 1, "soldByUnit": "QUANTITY" },
"itemUrl": "https://www.ubereats.com/store/antons-falafel-house/GgaiuGrKTAWJ-S2dHk9EFQ?mod=quickView&modctx=...",
"scrapedAt": "2026-07-31T13:04:22Z"
}

Item core

FieldTypeDescription
recordTypestringAlways menuItem for these rows
storeIdstringStore identifier โ€” join key back to the store row
storeNamestringStore name, denormalized for easy filtering
storeUrlstringStore page link
itemIdstringUnique item identifier, used to deduplicate repeated items
itemUrlstringDirect link that opens this item's quick view on the store page
namestringItem name as written by the merchant
descriptionstringItem description as written by the merchant
sectionNamestringTop-level menu or catalog section
subsectionNamestringSub-section or aisle within the section
scrapedAtstringISO timestamp of collection

Price, stock & options

FieldTypeDescription
pricenumberItem price as a decimal number
priceFormattedstringPrice exactly as displayed, including currency symbol
currencyCodestringCurrency of the price
imageUrlstringItem photo
isAvailablebooleanWhether the item was orderable
isSoldOutbooleanWhether the item was marked sold out
hasCustomizationsbooleanWhether the item has an option tree, even when options were not collected
customizationsarrayOption groups: title, minPermitted, maxPermitted, and options with name, price, isSoldOut, defaultQuantity and nested childOptions
quantityInfoobjectminPermitted, maxPermitted, increment, soldByUnit โ€” how the item is sold

Tips for Best Results

  • Cap large catalogs before you run them. A restaurant returns around 40 items; a supermarket returned 707. Leave maxMenuItemsPerStore at 0 for restaurants, but set a cap for grocery, pharmacy and retail stores unless you genuinely want every SKU.
  • Keep maxResults set when you raise maxStores. maxStores and maxMenuItemsPerStore each cap one dimension; maxResults caps the two multiplied together, which is the number you actually pay for. The 10000 default is deliberately generous โ€” lower it for a trial run, and set it to 0 only when you have already measured the store count you are asking for.
  • Leave includeItemCustomizations off unless you need option data. Around 6 in 10 items at a typical restaurant are customizable, and each one has to be looked up individually โ€” it is the single biggest thing that slows a run down.
  • Use includeMenu: false for market censuses. One address search found 458 stores; profiles-only turns that into 458 rows with ratings, addresses, cuisines and fees, instead of hundreds of thousands of item rows.
  • Run the same store twice, once per dining mode. Delivery and pickup are genuinely different datasets โ€” one store showed a 170โ€“185 minute delivery wait against an 8โ€“18 minute pickup wait, with different fees.
  • Compare price tiers with priceLevel, not priceBucket. The glyphs render in the currency of the browsing language, so a US store can display โ‚ฌโ‚ฌ. The 1โ€“4 number is the portable signal across countries.
  • Item names stay in the merchant's own language. The language setting translates store text and menu section names; item names and descriptions are merchant-written, and the deeper pages of very large catalogs fall back to English section names.
  • Latitude and longitude only work as a pair. Supplying one without the other is ignored and the run falls back to the address. Use coordinates when an address is ambiguous or when you want to sample a precise delivery point.
  • Outside the US, give coordinates rather than a typed address. Uber Eats' own address lookup leans towards places near where the request appears to come from, so a European or Asian street can come back unmatched. A latitude and longitude pair is exact everywhere โ€” 48.8606, 2.3376 puts you on the Rue de Rivoli in Paris. An address that cannot be matched is reported plainly and nothing is collected for it, so you are never charged for the wrong city.
  • Reviews are a recent sample, not full history. A tight reviewsSince date can legitimately return zero reviews for a store that has hundreds of ratings โ€” widen the date before assuming something failed.

Pricing

From $2.00 per 1,000 results โ€” flat pay-per-result, with store rows and menu item rows billed at the same rate. No compute or time-based charges โ€” you pay per result, plus a small fixed per-run start fee. Bronze, Silver and Gold subscribers pay progressively less; the table shows total cost at each discount tier.

ResultsNo discountBronzeSilverGold
100$0.24$0.23$0.22$0.20
1,000$2.40$2.25$2.15$2.00
10,000$24.00$22.50$21.50$20.00
100,000$240.00$225.00$215.00$200.00

A "result" is any row in the output dataset โ€” one per store and one per menu item. Stores excluded by your store type filter are never collected and never billed. Platform fees depend on your Apify plan.

Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

  • Zapier / Make / n8n โ€” Workflow automation
  • Google Sheets โ€” Direct spreadsheet export
  • Slack / Email โ€” Notifications on new results
  • Webhooks โ€” Custom API integrations
  • Apify API โ€” Full programmatic access

This actor collects publicly available store and menu information for legitimate market research, competitive analysis and menu data operations. Users are responsible for complying with applicable laws and Uber Eats' Terms of Service. Review text and reviewer display names are personal data in some jurisdictions โ€” handle them accordingly, and do not use collected data for spam, harassment, price fixing or any illegal purpose.