UberEats Menu Scraper avatar

UberEats Menu Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
UberEats Menu Scraper

UberEats Menu Scraper

Scrape UberEats: list restaurants near a location (lat/lng) and pull a store's full menu — items, prices, descriptions, and modifier groups. Feed and store modes; one row per menu item for price monitoring.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Farhan Febrian Nauval

Farhan Febrian Nauval

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Find restaurants near any location and pull their full menus — items, prices, descriptions, ratings, delivery estimates, and optional add-on choices. Perfect for price monitoring, menu intelligence, competitor tracking, and ghost-kitchen discovery.

Why use this actor

  • No account, no login, no API key — give it a location or a restaurant link and run.
  • Two ways to work: list every restaurant near a point on the map, or pull the complete menu of specific restaurants you already have.
  • Real prices and menu detail — item names, descriptions, prices, sold-out status, photos, and (optionally) the full add-on / customization choices for each item.
  • Store intelligence — rating, price level, cuisine tags, phone number, address, coordinates, delivery time estimates, and current offers.
  • One row per menu item (best for price tracking) or one row per store with the menu nested — your choice.
  • Clean, structured output, automatic retries, runs on a schedule, exports to JSON / CSV / Excel. No scrapers or browsers to babysit.

How it works

  1. Pick a mode: feed (restaurants near a location) or store (menus for specific restaurants).
  2. For feed mode, give one or more locations (latitude/longitude). For store mode, paste restaurant links or ids.
  3. The actor lists the nearby restaurants and/or reads each restaurant's full menu.
  4. Each restaurant or menu item becomes one row in your dataset. Turn on add-ons to also capture every customization choice.

You never manage scrapers, browsers, or blocks — just provide locations or restaurants and read the results.

Input

Mode: Feed — restaurants near a location

{
"mode": "feed",
"locations": [
{ "latitude": 40.7128, "longitude": -74.006, "title": "New York" }
],
"includeMenus": false,
"localeCode": "us",
"maxItems": 0,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}

Mode: Store — full menu of specific restaurants

{
"mode": "store",
"stores": [
"https://www.ubereats.com/store/ess-a-bagel-115-broadway/DxhTGkXoURuZAGDJWnguWA"
],
"itemsAsRows": true,
"includeModifiers": false,
"location": { "latitude": 40.7128, "longitude": -74.006, "title": "New York" },
"localeCode": "us",
"maxItems": 0
}
FieldModeTypeDescription
modestringfeed (restaurants near a location) or store (menu of specific restaurants). Default feed.
locationsfeedarrayOne or more {latitude, longitude, title} objects (or "lat,lng" strings). Defaults to New York.
includeMenusfeedbooleanAlso pull each nearby restaurant's full menu. Slower. Default false.
storesstorearray of stringsRestaurant links (https://www.ubereats.com/store/...) or raw store ids.
itemsAsRowsstorebooleantrue (default) = one row per menu item; false = one row per restaurant with the menu nested inside.
includeModifiersbothbooleanAlso capture each item's add-on / customization choices. Slower. Default false.
locationstoreobjectOptional location near the store, used to pick the right market. Defaults to New York.
localeCodestringCountry / locale for results (us, gb, ca, en-US, …).
maxItemsintegerCap on total rows. 0 = no cap.
maxConcurrencyintegerHow many locations / restaurants to process in parallel. Default 3.
proxyConfigurationobjectUS residential proxy is recommended and set by default.

Output

Feed mode — one row per nearby restaurant:

{
"_input": "40.7128,-74.006",
"_scrapedAt": "2026-07-09T11:09:31Z",
"_source": "S1-feed",
"recordType": "STORE",
"storeUuid": "0f18531a-45e8-511b-9900-60c95a782e58",
"title": "Ess-a-Bagel",
"url": "https://www.ubereats.com/store/ess-a-bagel-115-broadway/DxhTGkXoURuZAGDJWnguWA",
"cityName": "new_york",
"ratingText": "4.7",
"ratingAccessibility": "A top rated restaurant with 4.7 out of 5 stars based on more than 260 reviews.",
"etaText": "12 min",
"deliveryFeeText": null,
"meta": [ { "text": "12 min", "accessibilityText": "Delivered in 12 to 23 min", "badgeType": "ETD" } ],
"imageUrl": "https://tb-static.uber.com/prod/image-proc/.../268ee1a1296808aa6eae11eb597de84d.jpeg",
"favorite": false,
"endorsements": null,
"signposts": null
}
FieldTypeDescription
titlestringRestaurant name.
urlstringLink to the restaurant on UberEats.
cityNamestringMarket the result belongs to.
ratingTextstringStar rating.
etaTextstringEstimated delivery time.
deliveryFeeTextstringDelivery fee, when shown.
imageUrlstringRestaurant photo.
endorsements / signpostsarrayBadges and current offers (e.g. "Great value", "20% off $15+"), when present.

Store mode — one row per menu item (itemsAsRows: true):

{
"_input": "https://www.ubereats.com/store/ess-a-bagel-115-broadway/DxhTGkXoURuZAGDJWnguWA",
"_scrapedAt": "2026-07-09T15:50:38Z",
"_source": "S1-store",
"recordType": "MENU_ITEM",
"storeUuid": "0f18531a-45e8-511b-9900-60c95a782e58",
"storeTitle": "Ess-a-Bagel (115 Broadway)",
"storeUrl": "https://www.ubereats.com/store/ess-a-bagel-115-broadway/",
"currencyCode": "USD",
"storeRating": 4.7,
"phoneNumber": "+16464750675",
"priceBucket": "$",
"isOpen": true,
"cuisineList": ["American", "Breakfast and Brunch", "Desserts"],
"address": "115 Broadway, New York, NY 10006",
"city": "New York",
"latitude": 40.708729,
"longitude": -74.0110446,
"categoryTitle": "Featured items",
"itemUuid": "3ecbc6ff-9065-52b8-8885-d562a92ac762",
"title": "Morning Classic",
"itemDescription": "Your choice of bagel with bacon, egg, & American cheese",
"price": 1208,
"priceFormatted": 12.08,
"priceText": "$12.08",
"imageUrl": "https://tb-static.uber.com/prod/image-proc/.../d03e52b3c8af19d8fa8222e23efd9cfa.jpeg",
"isSoldOut": false,
"isAvailable": true,
"hasCustomizations": true
}
FieldTypeDescription
storeTitle / storeUrlstringRestaurant name and link.
currencyCodestringCurrency of the prices.
storeRatingnumberRestaurant star rating.
phoneNumberstringRestaurant phone number.
priceBucketstringPrice level ($, $$, …).
isOpenbooleanWhether the restaurant is currently open.
cuisineListarrayCuisine tags.
address / city / latitude / longitudestring / numberRestaurant location.
categoryTitlestringMenu section the item belongs to.
titlestringMenu item name.
itemDescriptionstringItem description.
priceintegerPrice in minor units (cents), e.g. 1208.
priceFormattednumberPrice in major units, e.g. 12.08.
priceTextstringPrice as shown on the site (e.g. "Priced by add-ons").
isSoldOut / isAvailablebooleanAvailability of the item.
hasCustomizationsbooleanWhether the item has add-on choices (captured when includeModifiers is on).

With itemsAsRows: false, store mode instead emits one row per restaurant (recordType: "STORE_MENU") with the full menu nested under menuItems[].

On failure the actor writes a row with _error and _errorDetail rather than silently skipping.

Notes & limits

  • US residential proxy is recommended (and set by default) for reliable cloud runs; pick the country that matches your target market.
  • Menu availability varies by country and time of day — a restaurant closed for the current daypart may return fewer items or an unavailable menu. Use a localeCode / location matching the target market.
  • Prices are given both in minor units (price, e.g. cents) and major units (priceFormatted).