Uber Eats Scraper: Menus, Prices, Reviews & Grocery avatar

Uber Eats Scraper: Menus, Prices, Reviews & Grocery

Pricing

$2.00 / 1,000 results

Go to Apify Store
Uber Eats Scraper: Menus, Prices, Reviews & Grocery

Uber Eats Scraper: Menus, Prices, Reviews & Grocery

Uber Eats scraper for restaurants, menus and grocery stores. Paste store links, city pages, or a keyword plus any address. Get every menu item with price, calories and deals, plus ratings, reviews, phone, hours and full grocery catalogs. $2 per 1,000 results.

Pricing

$2.00 / 1,000 results

Rating

0.0

(0)

Developer

Sourabh Kumar

Sourabh Kumar

Maintained by Community

Actor stats

0

Bookmarked

29

Total users

7

Monthly active users

3 days ago

Last modified

Share

Uber Eats scraper: menus, prices, restaurants & full grocery catalogs

Scrape Uber Eats stores, menus and prices in any country Uber Eats serves. Paste a store link, a city or cuisine page, or just type a keyword and an address.

$2 per 1,000 results. No per-run fee. No proxy, login or cookies needed.

One store link returns the whole store: every menu item with its price, calories, deals, likes and reviews. Grocery and convenience stores come back with their entire catalog, not just the front page.

Why this scraper?

  • ๐Ÿ›’ Full grocery catalogs. A 7-Eleven returns about 1,900 products across every aisle, not the ~60 on its front page.
  • ๐Ÿ“ Search around any address. Type "Times Square, New York" or "SW1A 2AA London" and get the stores Uber Eats shows there, with real delivery times.
  • ๐Ÿท๏ธ Deals and discounts on every item. "2 for $4.75", "Free on $15+", and the old price when something is marked down.
  • ๐Ÿ‘ Item popularity. "#1 most liked" and the share of customers who liked each dish ("70% (20)").
  • ๐Ÿณ Menus the way the page shows them. Real category names, and separate Breakfast, Lunch and Dinner menus for stores that have them.
  • ๐ŸŒ Any language, any currency. Japanese, French and Spanish menus come back in their own text and currency.
  • โœ… No made-up numbers. If Uber Eats doesn't show a value, you get null, not a guess.
  • ๐Ÿ’ธ Flat price for every mode. A store with its full menu costs the same as one listing row.

What data can you extract?

๐Ÿช Store name, chain and ID๐Ÿ“ Address, postcode, coordinates๐Ÿ“ž Phone numberโญ Rating and rating count
๐Ÿ” Full menu, by category๐Ÿ’ฒ Item prices (text and number)๐Ÿ”ฅ Calories per item๐Ÿท๏ธ Item deals and discounts
๐Ÿ‘ Likes and "most liked" ranks๐Ÿ•’ Opening hours per menu๐Ÿšš Delivery time and fee (with an address)๐Ÿ’ฌ Customer reviews
๐Ÿœ Cuisine tags (incl. Halal, Vegan)๐Ÿ’ฐ Price level (1 to 4)๐Ÿ–ผ๏ธ Store and item images๐Ÿ›’ Every aisle of grocery stores

What you can scrape

Give itYou getOne row per
A store linkThe full store: menu, prices, calories, deals, likes, hours, reviewsstore
A grocery or convenience store linkEverything above, plus every product in every aislestore
A city, cuisine or dish page (/city/, /category/, /dish/, /near-me/, /neighborhood/)The restaurants on that page, with city and category pages followed to the endrestaurant
A keyword plus an addressUber Eats search results around that address, with delivery times and feesrestaurant
The feed link plus an addressThe home feed Uber Eats shows for that addressrestaurant

Listing rows are lighter than store rows (no menu). Feed a listing row's url back in as a store link to get its full menu.

{
"urls": ["https://www.ubereats.com/store/mcdonalds-l-a-1231-la-brea/OGl_6BVQQI-f2jJX6s3c0w"],
"includeReviews": true
}

๐Ÿ›’ Grocery store: the entire catalog

{
"urls": ["https://www.ubereats.com/store/7-eleven-6051-hollywood-blvd/FNPcwSJ1Rxea0Ot_XMqBkw"]
}

Nothing extra to switch on. Grocery, convenience, pharmacy and retail stores are detected and every aisle is fetched.

๐Ÿ™๏ธ City and cuisine pages

{
"urls": [
"https://www.ubereats.com/city/los-angeles-ca",
"https://www.ubereats.com/category/los-angeles-ca/pizza",
"https://www.ubereats.com/gb/dish/london-eng/chicken-wings"
],
"maxResults": 500
}

City and category pages keep going past page 1 until maxResults or the last page.

๐Ÿ”Ž Keyword search around an address

{
"urls": ["sushi", "thai food"],
"address": "Times Square, New York, NY",
"maxResults": 200
}

Add a city or postcode to the address when a street name exists in several places.

๐Ÿ“ Everything Uber Eats shows at an address

{
"urls": ["https://www.ubereats.com/feed"],
"address": "10 Downing Street, London SW1A 2AA",
"maxResults": 300
}

How to scrape Uber Eats: step by step

  1. Create a free Apify account. Takes 30 seconds, no card needed.
  2. Open Uber Eats Scraper in the Apify Console.
  3. Paste store links, listing links or keywords. Add an address if you want results for a specific place.
  4. Click Start. A restaurant takes a few seconds; a full grocery catalog about half a minute.
  5. Export as JSON, CSV or Excel, or fetch the results through the API.

Input fields

FieldTypeDefaultWhat it does
urlslist/near-meStore links, listing links (/city/, /category/, /dish/, /near-me/, /neighborhood/, /find-near-me/, /feed, /search?q=) or keywords like pizza. Mix freely.
addresstextnoneStreet, city or postcode. Keywords, /feed and /search then return what Uber Eats shows there, and stores get real delivery times.
countrychoiceUSWhich country's Uber Eats a bare keyword is looked up on when no address is given. Links carry their own country.
maxResultsnumber50Stop after this many results in total. 0 means no limit.
includeReviewsyes/noyesAdd the customer reviews shown on each store page. No extra cost.
modechoiceautoLeave on auto; it's detected from each link.

How much does Uber Eats Scraper cost?

You pay $2 per 1,000 results, and there's no per-run fee. A result is one store with its full menu, or one restaurant row from a listing. The Apify Free plan's $5 of monthly credits covers roughly 2,500 results. The $29 Starter plan covers about 14,500 results a month.

Output

Store (restaurant)

Trimmed from a real run: 2 of 51 menu categories, 3 of 21 opening-hour windows, 1 review of each kind.

{
"url": "https://www.ubereats.com/store/mcdonalds-l-a-1231-la-brea/OGl_6BVQQI-f2jJX6s3c0w",
"uuid": "38697fe8-1550-408f-9fda-3257eacddcd3",
"title": "McDonald'sยฎ (L/A-1231 La Brea)",
"parentChain": { "uuid": "d8fb9d71-d641-43e1-901c-5f36a182c2d9", "name": "McDonald's" },
"phoneNumber": "+13239361501",
"address": {
"raw": "1231 S La Brea Ave, Los Angeles, CA 90019",
"city": "Los Angeles", "region": "CA", "country": "US",
"neighborhood": "mid-wilshire-los-angeles-ca", "postalCode": "90019",
"lat": 34.0524875, "lng": -118.3442646
},
"cityId": 12,
"citySlug": "los-angeles",
"cuisineList": ["American", "Fast Food", "Burgers", "Group Friendly"],
"currencyCode": "USD",
"isOpen": true,
"isOrderable": true,
"closedMessage": "Delivery unavailable",
"workingHoursTagline": "Open 24 Hours",
"supportedDiningModes": ["DELIVERY"],
"hours": [
{ "dayOfWeek": "Sunday", "openMinute": 240, "closeMinute": 659, "menuName": "Breakfast" },
{ "dayOfWeek": "Sunday", "openMinute": 660, "closeMinute": 1019, "menuName": "Lunch" },
{ "dayOfWeek": "Sunday", "openMinute": 1020, "closeMinute": 239, "menuName": "Dinner" }
],
"rating": 4.692073007546997,
"ratingCountText": "15,000+",
"ratingCount": 15000,
"etaText": null,
"etaMinMinutes": null,
"etaMaxMinutes": null,
"fareBadge": null,
"priceLevel": 1,
"deliveryFee": null,
"serviceFee": null,
"heroImage": {
"url": "https://tb-static.uber.com/prod/image-proc/processed_images/b9c717751beec2896357ee0fbf38ad72/5e48b5818af0117f322d7c4ae77977a8.jpeg",
"widths": [240, 550, 640, 750, 1080, 2880]
},
"logoImage": "https://tb-static.uber.com/prod/image-proc/processed_images/b1d751cdfa1a38df11dec12e1f3b2e45/aa942214cb8ba5dd13c8f8035f4ab522.png",
"menu": [
{
"sectionUuid": "0379a62a-1156-4ddb-a09a-7e1dc45d5dfb",
"sectionName": "Featured items",
"menuName": "Dinner",
"items": [
{
"itemUuid": "9c769616-602c-53e2-8d78-c9fefc41072b",
"title": "2 Cheeseburger Meal",
"description": null,
"priceCents": 1349,
"priceText": "$13.49",
"caloriesText": "920 - 1160 Cal.",
"originalPriceText": null,
"promotionText": null,
"likePercent": null,
"likeCount": null,
"imageUrl": "https://tb-static.uber.com/prod/image-proc/processed_images/fc643a5423468b0bfd67cbac4bb2e89e/a19bb09692310dfd41e49a96c424b3a6.jpeg",
"isSoldOut": false,
"isAvailable": true,
"hasCustomizations": true,
"endorsement": null,
"popularityHints": ["#1 most liked"]
}
]
},
{
"sectionUuid": "556a657a-69d1-5c73-acc5-906ab31593ca",
"sectionName": "Free with $15 purchase",
"menuName": "Dinner",
"items": [
{
"itemUuid": "1375e63c-c5ca-56d8-b6d1-ea0774278435",
"title": "Big Macยฎ",
"priceCents": 769,
"priceText": "$7.69",
"caloriesText": "590 Cal.",
"promotionText": "Free on $15+",
"hasCustomizations": true,
"popularityHints": []
}
]
}
],
"menuSectionCount": 51,
"menuItemCount": 227,
"analytics": {
"totalSections": 51, "totalItems": 227,
"minPriceCents": 50, "maxPriceCents": 4939, "avgPriceCents": 777,
"imageCoverage": 0.9779735682819384,
"descriptionCoverage": 0.12334801762114538,
"customizationCoverage": 0.8370044052863436
},
"reviews": {
"summary": [
{
"contentUUID": "76162606-acf6-456b-96d0-7cc0874bf410",
"createdAt": "2021-10-05T00:00:00Z",
"formattedDate": "10/05/21",
"timeSinceReview": "5 years ago",
"author": "Marlene A.",
"text": "It was the driver for me. Awesome delivery guy."
}
],
"featured": [
{
"contentUUID": "386f15c7-b112-4412-8f4d-5892cf30d864",
"createdAt": "2024-07-29T00:00:00Z",
"author": "Denise M.",
"text": "McDonaldโ€™s workers should get a raise. They never disappoint me. No other company is like McDonald. I paid for my order at 10.35pm. At 10.57 pm I was already eating it on my couch. Thanks for the hard work."
}
]
},
"promotion": null,
"scrapedAt": "2026-09-28T18:14:10.018Z",
"scrapedFrom": "store_api"
}

Delivery time and fees are null here because no address was given. Add one and they fill in.

Grocery store (full catalog)

Same shape as a restaurant. This 7-Eleven returned 1,912 products in 114 shelves across 20 aisles. Two items shown: a discounted pizza and a beer from the Alcohol aisle.

{
"title": "7-Eleven (6051 Hollywood Blvd)",
"menuSectionCount": 114,
"menuItemCount": 1912,
"menu": [
{
"sectionUuid": "7831870f-bd8a-4a2d-8db9-d1c7942d26c0",
"sectionName": "Deals",
"menuName": null,
"items": [
{
"itemUuid": "b4fb0e08-2e13-5dc7-848a-ac79fe1391ca",
"title": "Large Pizza - Ultimate Pepperoni",
"priceCents": 699,
"priceText": "$6.99",
"originalPriceText": "$10.99",
"promotionText": "36% off",
"isAvailable": true
}
]
},
{
"sectionUuid": "776f0edc-4428-448c-9d84-8825c0cee5d4",
"sectionName": "Beer",
"menuName": "Alcohol",
"items": [
{
"itemUuid": "52da1dec-cddc-569a-a145-c9a85605ac85",
"title": "Lagunitas Maximus Imperia Colossal Ipa Beer (6 x 12 fl oz)",
"priceCents": 1609,
"priceText": "$16.09",
"originalPriceText": null,
"promotionText": null,
"isAvailable": true
}
]
}
]
}

Listing row (city, cuisine, dish or near-me page)

{
"url": "https://www.ubereats.com/store/palnadu-indian-cuisine/w5qcJydrXdaH5iDFqIH9mw",
"uuid": "c39a9c27-276b-5dd6-87e6-20c5a881fd9b",
"title": "Palnadu Indian Cuisine",
"phoneNumber": "+18565601122",
"address": {
"raw": "1900 Greentree Road, Cherry Hill, NJ 08003",
"city": "Cherry Hill", "region": "NJ", "country": "US",
"neighborhood": null, "postalCode": "08003",
"lat": 39.9063, "lng": -74.9655
},
"cuisineList": ["Indian", "Vegetarian", "Asian"],
"currencyCode": "USD",
"isOpen": null,
"isOrderable": true,
"rating": 4.337152209492635,
"ratingCountText": "290+",
"ratingCount": 290,
"etaText": null,
"priceLevel": null,
"heroImage": {
"url": "https://tb-static.uber.com/prod/image-proc/processed_images/86dd610d43811846498d7f4b85f1d770/0e8f477e8f858732b95bd74b5e07a538.jpeg",
"widths": [2880, 550]
},
"menuItemCount": 0,
"promotion": null,
"scrapedFrom": "ld_json_fallback"
}

Search result around an address

{
"url": "https://www.ubereats.com/store/chefstore-170-s-van-ness-ave/DLAfkOtvVgqCAKhN0GIy7g",
"title": "CHEF'STORE",
"rating": 4.283088235294117,
"ratingCount": 110,
"etaText": "12:11PM",
"etaMinMinutes": 40,
"etaMaxMinutes": 71,
"isOrderable": true,
"deliveryFee": null,
"promotion": {
"hasStorePromotion": true,
"text": "Items on sale",
"promotionUuid": "3a4359dd-1094-4725-9179-601b8df36fc1"
},
"currencyCode": "USD",
"scrapedFrom": "feed_api"
}

Feed results for an address have the same shape and often add the delivery fee ("$4.95 Delivery Fee").

Every field explained

FieldWhat it means
urlLink to the store on Uber Eats. One clean link per store, whatever form you pasted.
uuidUber Eats' own store ID. Stable, so use it as your key when you merge runs.
titleStore name as shown, in its own language.
parentChainThe brand a location belongs to (McDonald's). Group by parentChain.uuid to compare all branches of a chain.
phoneNumberStore phone number when the store publishes one.
addressStreet address plus city, region, country, postalCode and map coordinates (lat, lng). Parts Uber Eats doesn't publish are null.
cityId, citySlugUber Eats' own city ID and short city name (los-angeles).
cuisineListCuisine and diet tags as Uber Eats lists them: Pizza, Halal, Vegan.
currencyCodeCurrency of every price in the row (USD, GBP, JPY).
isOpenWhether the store is open right now. null when the page doesn't say.
isOrderableWhether Uber Eats accepts orders from it right now.
closedMessageWhy ordering is off, as shown ("Delivery unavailable").
workingHoursTaglineToday's hours in one line ("Open until 2:00 AM").
supportedDiningModesDelivery, pickup or dine-in.
hoursOpening hours per day in minutes from midnight (660 = 11:00). menuName says which menu a window is for; a closeMinute smaller than openMinute runs past midnight.
rating, ratingCountText, ratingCountAverage star rating, the count as shown ("15,000+") and as a number.
etaText, etaMinMinutes, etaMaxMinutesDelivery time to your address. Only filled when you give an address.
fareBadgeDelivery fee badge as shown ("ยฃ4.99 Delivery Fee", "Moderate Delivery Fee").
priceLevelHow pricey the store is, 1 ($) to 4 ($$$$).
deliveryFee, serviceFeeFees for your address. Only filled when you give an address.
heroImageThe store's banner image at its largest size, plus every size available.
logoImageStore or chain logo.
menuOne entry per menu category: sectionName ("Burgers"), menuName ("Breakfast", or the aisle on grocery stores), and its items.
menu[].items[].title, description, imageUrlItem name, description and photo.
menu[].items[].priceTextPrice as shown on the page ("$7.69", "16,80 โ‚ฌ", "๏ฟฅ1,280").
menu[].items[].priceCentsPrice as a number, times 100 in every currency: 769 = $7.69, 128000 = ยฅ1,280.
menu[].items[].originalPriceTextThe crossed-out price before a discount.
menu[].items[].promotionTextThe item's deal: "2 for $4.75", "Free on $15+", "36% off".
menu[].items[].caloriesTextCalories as shown ("590 Cal.", "221 kcal").
menu[].items[].likePercent, likeCountShare of customers who liked the item and how many rated it ("70% (20)" gives 70 and 20).
menu[].items[].popularityHintsPopularity labels as shown: "#1 most liked", "70% (20)".
menu[].items[].endorsementBadge on the item, such as "Popular".
menu[].items[].isSoldOut, isAvailable, hasCustomizationsStock status, and whether the item has options such as sizes or toppings.
menuSectionCount, menuItemCountNumber of categories and of distinct items. An item listed in two categories counts once.
analyticsMenu summary: cheapest, dearest and average item price, and the share of items with photos, descriptions and options.
reviewsCustomer reviews shown on the store page (summary) and the ones Uber Eats features (featured): author, date, text.
promotionStore-wide promotion flag and its text when shown ("Items on sale").
scrapedAtWhen the row was collected.
scrapedFromWhich kind of page the row came from. Store rows say store_api; listing rows ld_json_fallback, redux_state or feed_api.

Use cases

  • ๐Ÿฝ๏ธ Menu and price benchmarking. Compare what competitors charge for the same dish across a city, a chain or a country.
  • ๐Ÿ›’ Grocery and CPG price tracking. Pull every product and discount from convenience and grocery stores to watch shelf prices and promotions.
  • ๐Ÿท๏ธ Promotion intelligence. See which stores and brands run "Buy 1, get 1" or "% off" deals, and on which items.
  • ๐Ÿงฒ Lead generation for restaurant tech. Build lists of restaurants with phone, address, cuisine and rating for POS, delivery and marketing sales teams.
  • ๐Ÿ—บ๏ธ Delivery coverage research. Check which stores deliver to an address, how fast and for what fee, before opening a dark kitchen or a new location.
  • ๐Ÿข Chain and franchise analysis. Group branches by parentChain to compare menus, prices and ratings across locations.
  • ๐Ÿฅ— Food trend and nutrition research. Track cuisines, dishes and calories across markets, including Halal and Vegan tags.
  • ๐Ÿ’ฌ Review and sentiment analysis. Collect reviews to find what customers praise or complain about.

Limitations

  • Delivery time and fees need an address. Without one Uber Eats shows no delivery time, so those fields are null.
  • No email addresses. Uber Eats doesn't publish them; phone numbers are included when stores list one.
  • Keyword search returns up to about 80 stores per keyword, which is the most Uber Eats itself shows. For more, use city and category pages.
  • Listing rows have no menu. Pass a row's url back in to get the full store.
  • Some listing pages leave out details: city and category pages don't show ratings, and US search results don't include coordinates.
  • Grocery catalogs stop at 3,000 products per store. The run's status message says so when a store is cut short.

FAQ

Do I need an address?

Only if you want results for a specific place. Store links and city or cuisine pages work without one. Keyword search and the feed follow Uber Eats' default area without an address, and the run tells you so.

Do I need a proxy, login or cookies?

No. Proxies, retries and blocks are handled for you, and the scraper only reads what anyone can see on Uber Eats without signing in.

Which countries does it work in?

Any country Uber Eats operates in. Menus and prices come back in the local language and currency: we've checked stores in the US, UK, France and Japan in detail.

Why is a field null?

Because Uber Eats doesn't show it on that page. We'd rather give you an empty field than a guessed number, which is honestly the most common problem with scraped delivery data.

How much does Uber Eats Scraper cost?

Uber Eats Scraper uses pay-per-result pricing. You pay $2 for 1,000 results. The Apify Free plan gives you $5 in usage credits a month, enough for around 2,500 results. If you run regularly, the $29/month Starter plan covers about 14,500 results.

No subscription lock-in. Pause whenever.

Scraping public data is generally allowed in the US and most of the EU, as long as you don't collect personal data covered by GDPR or CCPA without a lawful basis. This actor only touches publicly accessible pages, but how you use the output is on you.

Apify's full breakdown: Is web scraping legal?.

Can I integrate Uber Eats Scraper with other tools?

Push results into Make, Zapier, Slack, Airbyte, GitHub, Google Sheets, Google Drive, and more. Apify treats every actor as a webhook source, so anything that consumes webhooks or pulls from an API works.

Full list: Apify integrations.

Can I use Uber Eats Scraper with the Apify API?

Yes. Every run is available via the Apify REST API:

curl -X POST "https://api.apify.com/v2/acts/sourabhbgp~ubereats-scraper/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls": ["sushi"], "address": "Times Square, New York, NY", "maxResults": 100}'

Docs: Apify API reference.

Can I use Uber Eats Scraper through an MCP Server?

Yes. Apify ships an MCP server that exposes every actor as a tool, so Claude Desktop, Cursor, and any other MCP-capable client can call Uber Eats Scraper. Setup: Apify MCP docs.

Your feedback

Bug, missing field, or odd behavior? Drop a note in the Issues tab. Reports go to a human and fixes usually ship the same week.