Uber Eats Restaurant Menu & Price Extractor
Pricing
from $0.49 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Features
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
| Mode | Use it for | What you get |
|---|---|---|
search | Discover restaurants for a keyword and delivery area | Restaurant name, URL, rating, review count, ETA, coordinates and rank |
menus | Export the full menu of restaurants you already know | Restaurant profile plus every menu section the public response exposes, with item price, currency, photo and availability |
searchWithMenus | Search, then export a menu for every match | Search 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 foundrestaurantId,restaurantName,restaurantUrl,heroImageUrlrating,ratingCount,priceRange,cuisines,isOpenaddress,city,postalCode,countryCode,latitude,longitudephoneNumber,currencyCode,storeType,deliveryMethods,workingHoursdeliveryFee,estimatedDeliveryTimemenu— ordered sections, each withsectionNameanditemsmenuSectionCount,menuItemCount,itemsWithImageCount,itemsWithDescCountscrapedAt
Each menu item contains:
itemId,name,descriptionpricein major currency units (for example12.50),currencyimageUrl,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
| Field | Type | Default | Notes |
|---|---|---|---|
mode | select | — | search, menus, or searchWithMenus (prefilled with search) |
searchQueries | array | — | Keywords for search modes (prefilled with ["pizza"]) |
location | string | New York, NY | Address, city, postcode, or lat,lng |
country | select | us | Fallback market and default city |
maxRestaurants | integer | 20 | 1–500 unique restaurants |
restaurantUrls | array | — | URLs or store IDs for menu modes |
maxMenuItemsPerRestaurant | integer | — | 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.