Uber Eats Scraper
Pricing
from $4.00 / 1,000 restaurant scrapeds
Uber Eats Scraper
Scrape Uber Eats restaurants and full menus by location or store URL. HTTP-only, no login, MCP-ready.
Pricing
from $4.00 / 1,000 restaurant scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Scrape Uber Eats restaurants and full menus by location or store URL — fast, HTTP-only (no browser), no login, and MCP-ready for AI agents. Search any city or address to get restaurant cards (name, rating, ETA, delivery fee, cuisine, store URL), or paste store URLs to extract complete menus with item prices, descriptions, sections, and images.
What it does
- Search by location — give a free-text address or city (geocoded automatically) or exact
lat,lng, and get the live list of nearby restaurants with ratings, review counts, ETAs, delivery fees, and store URLs. - Full menus — paste Uber Eats store URLs, or turn on
enrichMenus, to pull complete menus: sections, item names, prices, descriptions, images, and availability. - Any market — works for any Uber Eats city/region; switch proxy country and
localeCodeto match.
When to use it
- Food-delivery market research and competitive analysis — track competitor menus, prices, and coverage city-by-city.
- Pricing intelligence — monitor item prices and delivery fees across restaurants over time.
- Lead lists for restaurant-tech / POS / delivery SaaS — names, ratings, and store URLs by area.
- AI agents — a clean tool call: one location or URL in, structured JSON out.
Not for placing orders, scraping individual customer data, or order tracking — this returns public restaurant and menu listings only.
Output
Search mode returns one record per restaurant. Store-URL mode (and enrichMenus) adds the full menu.
| Field | Description |
|---|---|
name | Restaurant name |
rating | Average star rating (e.g. 4.7) |
reviewCount | Number of ratings |
priceBucket | Price tier ($, $$, $$$) — enriched only |
etaText | Estimated delivery/pickup time (e.g. "12 min") |
deliveryFeeText | Delivery fee as shown |
cuisines | Cuisine tags — enriched only |
phone, address, city | Contact + location — enriched only |
storeUrl | Canonical Uber Eats store URL |
imageUrl / heroImageUrl | Restaurant image |
storeUuid | Stable Uber Eats store ID |
menuItemCount | Number of menu items returned |
menu | Array of { name, price, priceCents, description, section, imageUrl, isAvailable } |
cityName, searchLocation, scrapedAt | Run context (ISO 8601 timestamp) |
Example menu item
{"name": "Spicy Tuna Roll","description": "Tuna, spicy mayo, cucumber, sesame.","price": 12.95,"priceCents": 1295,"section": "Signature Rolls","isAvailable": true}
Pricing — Pay Per Event
| Event | Price |
|---|---|
| Actor start | $0.00005 |
| Restaurant scraped (per card) | $0.004 |
| Menu scraped (per full store menu) | $0.008 |
A 50-restaurant search costs about $0.20. Enriching 20 of them with full menus adds about $0.16. Pay-per-usage (compute + proxy) is also available for very large jobs.
Input
| Field | Type | Notes |
|---|---|---|
location | string | Address or city, e.g. New York, NY (geocoded). Default. |
locationLatLng | string | lat,lng — overrides geocoding. |
startUrls | array | Uber Eats store URLs for direct menu mode. |
searchQuery | string | Keyword search (cuisine/dish/brand), e.g. sushi. |
enrichMenus | boolean | Fetch full menu per restaurant (default false). |
maxRestaurants | integer | Cap restaurants (default 50). |
maxMenusToScrape | integer | Cap enriched menus (default 20). |
diningMode | enum | DELIVERY or PICKUP. |
proxyConfiguration | object | Defaults to Apify Residential US. |
Quick start (location search)
{"location": "New York, NY","maxRestaurants": 50}
Full menus from store URLs
{"startUrls": ["https://www.ubereats.com/store/your-restaurant/STORE_ID"]}
Search + enrich top menus
{"location": "Chicago, IL","searchQuery": "pizza","enrichMenus": true,"maxMenusToScrape": 10}
Using via API
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~uber-eats-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{ "location": "Austin, TX", "maxRestaurants": 30 }'
Using with AI agents (MCP)
This actor is exposed through the Apify MCP server as khadinakbar/uber-eats-scraper. Point your MCP client at https://mcp.apify.com and call it with a location or startUrls. It returns flat, agent-friendly JSON.
How it works
The actor talks directly to Uber Eats' own JSON endpoints (getFeedV1 for the location feed, getStoreV1 for menus) over plain HTTP — no headless browser, so runs are fast and cheap. Free-text addresses are geocoded with OpenStreetMap Nominatim. Apify Residential proxies are used by default because Uber Eats blocks most datacenter IPs.
FAQ
Do I need cookies or a login? No. The actor is cookieless.
Which countries work? Any Uber Eats market. Set proxyConfiguration country and localeCode to match (e.g. en-GB).
Why residential proxies? Uber Eats blocks datacenter IPs aggressively. Residential is the reliable default.
What if a location has no restaurants? The run finishes cleanly with a warning (no charge for empty results beyond start).
Can I get item-level modifiers/options? Item names, prices, descriptions, sections, and availability are returned. Deep modifier trees may vary by store.
Legal
This actor collects only publicly available data from Uber Eats listing and store pages. Use it in compliance with Uber Eats' Terms of Service and all applicable laws (including data-protection regulations). You are responsible for how you use the scraped data. This tool is not affiliated with, endorsed by, or sponsored by Uber Technologies, Inc. "Uber Eats" is a trademark of its respective owner.