Uber Eats Restaurant Menu & Price Extractor avatar

Uber Eats Restaurant Menu & Price Extractor

Pricing

from $0.49 / 1,000 results

Go to Apify Store
Uber Eats Restaurant Menu & Price Extractor

Uber Eats Restaurant Menu & Price Extractor

Pull full Uber Eats restaurant menus by store URL: rating, cuisines, delivery fee and ETA, plus every menu section and item with price, description and image.

Pricing

from $0.49 / 1,000 results

Rating

0.0

(0)

Developer

Dataspryva

Dataspryva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

Turn Uber Eats into a structured dataset. Search restaurants by keyword, then read their menus item by item, or feed in restaurant links and pull every section and price. Everything runs without cookies, logins, or API keys.

Three ways to scrape

ModeUse it forWhat you get
searchDiscover restaurants for a keyword and delivery areaRestaurant name, URL, rating, review count, ETA, coordinates and rank
menusExport the full menu of restaurants you already knowRestaurant profile plus every menu section the public response exposes, with item price, currency, photo and availability
searchWithMenusSearch, then export a menu for every matchSearch fields, restaurant profile and complete menu in one record per restaurant

Location matters

Uber Eats only serves restaurants that deliver to a specific address, so results depend on location. Pass a city, postcode, street address, or latitude,longitude. The actor resolves it to a real delivery point, then uses that context for both search and menu pricing. If the address cannot be resolved, it falls back to the default city for the selected country.

What is in each record

  • mode, query, location, rank — how the record was found
  • restaurantId, restaurantName, restaurantUrl, heroImageUrl
  • rating, ratingCount, priceRange, cuisines, isOpen
  • address, city, postalCode, countryCode, latitude, longitude
  • phoneNumber, currencyCode, storeType, deliveryMethods, workingHours
  • deliveryFee, estimatedDeliveryTime
  • menu — ordered sections, each with sectionName and items
  • menuSectionCount, menuItemCount, itemsWithImageCount, itemsWithDescCount
  • scrapedAt

Each menu item contains:

  • itemId, name, description
  • price in major currency units (for example 12.50), currency
  • imageUrl, isAvailable, hasCustomizations

Empty values are omitted, never returned as null.

Input examples

Search pizza places in Brooklyn

{
"mode": "search",
"searchQueries": ["pizza"],
"location": "Brooklyn, NY",
"maxRestaurants": 20
}

Export full menus for two restaurants

{
"mode": "menus",
"restaurantUrls": [
"https://www.ubereats.com/store/cvs-129-fulton-streets/isOmPe5EU261CcRN3X7RMw",
"https://www.ubereats.com/store/atlantis-cafe-1049-grand-street/p1lWs-ecV5ySgxZXi1PRcw"
],
"location": "Brooklyn, NY",
"maxMenuItemsPerRestaurant": 500
}

Search, then pull every menu

{
"mode": "searchWithMenus",
"searchQueries": ["sushi", "ramen"],
"location": "Toronto, ON",
"country": "ca",
"maxRestaurants": 10,
"maxMenuItemsPerRestaurant": 150
}

How pagination works

Search results are requested page by page until maxRestaurants unique stores are collected or Uber Eats runs out of matches. Menus follow the same rule: the actor reads Uber Eats' own section paging and keeps requesting until the source stops returning items or maxMenuItemsPerRestaurant is reached. Menu item caps are applied across the whole restaurant, not per section.

Inputs

FieldTypeDefaultNotes
modeselect—search, menus, or searchWithMenus (prefilled with search)
searchQueriesarray—Keywords for search modes (prefilled with ["pizza"])
locationstringNew York, NYAddress, city, postcode, or lat,lng
countryselectusFallback market and default city
maxRestaurantsinteger201–500 unique restaurants
restaurantUrlsarray—URLs or store IDs for menu modes
maxMenuItemsPerRestaurantinteger—1–2000 items per restaurant (prefilled with 10)

Existing tasks that send restaurantUrls and maxItemsPerRestaurant keep working. The older key is read in code and mapped to maxMenuItemsPerRestaurant; it does not need to stay in the form.

Use cases

  • Price monitoring — snapshot competitor menus and track dish prices over time.
  • Market research — see which cuisines and restaurants serve a neighbourhood.
  • Catalog enrichment — add descriptions, photos, and availability to your own listings.
  • Delivery benchmarking — compare ratings, ETAs, and fees across an area.

FAQ

Does this need an Uber Eats account or cookies? No. The actor reads public restaurant and menu data and needs no login, cookie, or API key.

Do I need to configure a proxy? No. It works directly, and the actor chooses its network path automatically.

Why do two nearby addresses return different restaurants? Uber Eats filters by delivery radius. Change location to the exact area you care about.

Why is a menu shorter than what I see in the app? Some stores hide items that are unavailable at the current time, lazy-load category sections, or do not expose them in the public menu response. The actor returns everything the public menu response exposes up to your item cap.

Are prices always in the same currency? No. currencyCode and each item's currency tell you the local currency, which depends on the delivery market.

Can I use restaurant IDs instead of full URLs? Yes. Paste either a full Uber Eats URL or a store UUID in restaurantUrls.