Uber Eats Restaurant Scraper
Pricing
from $19.90 / 1,000 results
Uber Eats Restaurant Scraper
Scrape Uber Eats restaurant data at scale. Search restaurants by location, then pull store profiles with ratings and complete menus with prices. One row per record, ready for price monitoring and competitor analysis.
Pricing
from $19.90 / 1,000 results
Rating
0.0
(0)
Developer
Yasmany Grijalba Casanova
Maintained by CommunityActor stats
2
Bookmarked
15
Total users
0
Monthly active users
17 days ago
Last modified
Categories
Share
Extract restaurants, menus, and store details from Uber Eats across the United States: with ratings, delivery fees, ETAs, menu prices, and more.
Quick Start
Search restaurants near Miami
{"mode": "stores","query": "Pizza","latitude": "25.7617","longitude": "-80.1918","max_results": 100}
Each row of that run carries a store_id. Feed it to the other two modes.
Get restaurant details
{"mode": "store_info","store_id": "c13edd5e-4ad7-4a86-80f3-a8fc6f114a17"}
Extract the full menu
{"mode": "menu","store_id": "c13edd5e-4ad7-4a86-80f3-a8fc6f114a17"}
Use
store_id, not theurl, to chain astoresrun into the other modes. Theurlin a search result uses a short identifier that these modes cannot resolve, whilestore_idfrom the same row always works. Pasting a restaurant's address bar from ubereats.com intostore_urlworks too, because those URLs end in the UUID.
Tip: Use
categoriesmode first to discover available food types in your target location before searching for stores.
Features
| Feature | Description |
|---|---|
| Search Restaurants | Find hundreds of restaurants by query and location with full pagination |
| Complete Menu Data | Full menus with prices, descriptions, availability, and Uber Eats' Popular flag |
| Detailed Store Profiles | Address, ratings, delivery info, operating hours, and phone |
| Real-Time Data | Fresh data directly from Uber Eats platform in structured JSON |
Use Cases
- Market Research: Analyze restaurant offerings and pricing across different US locations to understand market trends
- Price Monitoring: Track menu prices and delivery fees over time to stay competitive or find the best deals
- Competitor Analysis: Compare restaurants by ratings, delivery times, fees, and menu offerings
- Lead Generation: Build targeted lists of restaurants in specific areas for sales and marketing outreach
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | none | Required. Operation mode: store_info, menu, stores, or categories |
store_url | string | none | Full Uber Eats store URL. Required for store_info and menu modes |
store_id | string | none | Store UUID (alternative to store_url). Format: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
query | string | none | Search term (e.g., "Pizza", "Sushi"). Required for stores mode |
latitude | string | "25.7617" | Location latitude. Required for stores and categories modes |
longitude | string | "-80.1918" | Location longitude. Required for stores and categories modes |
max_results | integer | 1000 | Maximum restaurants to extract in stores mode (up to 5000) |
request_waiting | integer | 5 | Delay between requests in seconds (minimum: 3) |
useApifyProxy | boolean | false | Enable Apify Proxy. Off by default; see the note below |
proxyGroups | array | ["RESIDENTIAL"] | Proxy group, used only when useApifyProxy is on |
proxyCountry | string | "US" | Proxy country code, used only when useApifyProxy is on |
No proxy needed, and turning one on will break the run. Uber Eats answers the Apify platform's own address directly, so the default settings work as they are and you pay for no proxy traffic. Requests routed through Apify's residential pool came back
403on all four modes when measured, souseApifyProxyships off. Turn it on only if you have a proxy Uber Eats accepts.A run whose proxy cannot be configured now stops with a message instead of quietly continuing unproxied.
Output Examples
The dataset holds one item per record: one per menu item, one per restaurant found,
one per store profile. Every row repeats the run context (mode and scraped_at) so an
exported CSV or Excel file stands on its own.
Upgrading from v1.0:
menuandstoresused to write a single item with every record nested underdata. Code readingitems[0].data[...]gets nothing now and should iterate the dataset directly. Field names are unchanged, andstore_infoandcategoriesare not affected.
A run that reaches Uber Eats but finds nothing writes one row with status: "NO_RESULTS"
and a message saying why, so a run is never silently empty. When data cannot be retrieved
at all, the run fails with a message instead of finishing green.
Stores Mode
One row per restaurant. latitude and longitude are the restaurant's own; the
coordinates you searched with come back as search_latitude and search_longitude.
delivery_fee is null unless the restaurant shows a fee badge, which was 1 of 60
restaurants measured. Null means Uber Eats published no fee for that listing, not free
delivery. delivery_fee_text carries the badge as written, because the fee is often
conditional: "$0 Delivery Fee on $10+" is not the same offer as "$0 Delivery Fee".
{"mode": "stores","scraped_at": "2026-09-09T03:59:26.023621+00:00","query": "pizza","search_latitude": "25.7617","search_longitude": "-80.1918","store_id": "efcba862-6a16-48d3-8078-dd48b36f9bd1","name": "Dimelo Pizzeria","slug": "dimelo-pizzeria","rating": 4.7,"review_count": "150+","eta_min": 43,"eta_max": 63,"delivery_fee": 0,"delivery_fee_text": "$0 Delivery Fee on $10+","image_url": "https://tb-static.uber.com/prod/image-proc/processed_images/f011b236ceb047f92f1f1b0432f56c0b/3ac2b39ad528f8c8c5dc77c59abb683d.jpeg","is_orderable": true,"latitude": 25.8913,"longitude": -80.3555,"url": "https://www.ubereats.com/store/dimelo-pizzeria/78uoYmoWSNOAeN1Is2-b0Q"}
Store Info Mode
A single row. hours and location are nested objects, trimmed here.
{"mode": "store_info","scraped_at": "2026-09-09T03:46:36.639254+00:00","name": "MCDONALDS (PALMETTO BAY)","store_id": "c13edd5e-4ad7-4a86-80f3-a8fc6f114a17","slug": "mcdonalds-palmetto-bays","rating": {"ratingValue": 4.5,"reviewCount": "7000+"},"location": {"address": "18295 S Dixie Hwy, PERRINE, FL 33157","streetAddress": "18295 S DIXIE HWY","city": "PERRINE","country": "US","postalCode": "33157","region": "FL","latitude": 25.6008566,"longitude": -80.352438,"geo": {"city": "palmetto-bay-fl","country": "us","neighborhood": "perrine-palmetto-bay-fl","region": "fl"},"locationType": "DEFAULT"},"hours": [{"dayRange": "Sunday","sectionHours": [{"startTime": 240,"endTime": 659,"sectionTitle": "Breakfast"}]}],"phone": "+13052387129"}
Menu Mode
One row per item. This one is flagged Popular by Uber Eats.
{"mode": "menu","scraped_at": "2026-09-09T03:53:23.240178+00:00","name": "Medium French Fries","description": "","product_id": "dd1daf3c-e93e-5030-965d-fe67e67077c9","category": "FEATURED ITEMS","store_id": "c13edd5e-4ad7-4a86-80f3-a8fc6f114a17","available": "Y","has_customizations": "Y","price_to": 4.29,"price_from": null,"discount": null,"endorsement": "Y","image": "https://tb-static.uber.com/prod/image-proc/processed_images/c821c5db2718d95dd1fd68002987ec27/c67fc65e9b4e16a553eb7574fba090f1.jpeg","created_at": "2026-09-08","hour": "23:53:23"}
price_from and discount are null unless the item is on promotion, and promotions
are rare: zero of 1,320 items measured across two stores carried one. A price_to of 0
is a genuinely free item, such as a condiment packet, not a missing price.
Categories Mode
A single row carrying the category list.
{"mode": "categories","scraped_at": "2026-09-09T03:46:49.066376+00:00","latitude": "25.7617","longitude": "-80.1918","total": 19,"categories": [{"title": "Pizza","titleTerm": "Pizza","type": "restaurant_category"},{"title": "Sushi","titleTerm": "Sushi","type": "restaurant_category"},{"title": "Tacos","titleTerm": "Tacos","type": "restaurant_category"}]}
City Coordinates
| City | Latitude | Longitude |
|---|---|---|
| Miami, FL | 25.7617 | -80.1918 |
| New York, NY | 40.7128 | -74.0060 |
| Los Angeles, CA | 34.0522 | -118.2437 |
| Chicago, IL | 41.8781 | -87.6298 |
| Houston, TX | 29.7604 | -95.3698 |
| San Francisco, CA | 37.7749 | -122.4194 |
Get coordinates: Open Google Maps, right-click any US location, and copy the coordinates. First number = latitude, second = longitude.
FAQ
Support
- Check the FAQ above for common solutions
- Test with default values using the Miami coordinates example
- Contact support through Apify for additional assistance