UberEats Menu Scraper
ECOMMERCEAUTOMATION
UberEats Menu Scraper
Scrape full restaurant menus from UberEats. Provide one or more restaurant page URLs and this actor will extract all menu sections, items, prices, descriptions, and images — plus restaurant metadata like name, address, rating, and cuisine categories.
Features
- Extracts complete menus from UberEats restaurant pages
- One output record per menu item with full context (restaurant, section, price, image)
- Works with any UberEats restaurant URL globally
- Handles Cloudflare-protected pages via residential proxy
Input
| Field | Type | Description |
|---|---|---|
restaurantUrls |
array | UberEats restaurant page URLs to scrape |
maxItems |
integer | Maximum number of menu items to collect |
Example input:
{
"restaurantUrls": [
"https://www.ubereats.com/store/wendys-isabela/yucJTUkHWQaRH0b5IC8U9g",
"https://www.ubereats.com/store/subway-1510-w-main-st/WZc_lVtEV1eGI_Y4jII5yg"
],
"maxItems": 200
}
Finding restaurant URLs: Navigate to any restaurant on ubereats.com, open the restaurant page, and copy the URL from your browser. It will look like https://www.ubereats.com/store/{restaurant-name}/{id}.
Output
Each output record represents one menu item. All restaurant context is denormalized onto every record for easy analysis.
| Field | Description |
|---|---|
restaurant_id |
Unique UberEats store UUID |
restaurant_name |
Restaurant display name |
restaurant_url |
UberEats store URL that was scraped |
restaurant_rating |
Average star rating |
restaurant_rating_count |
Number of ratings |
restaurant_price_range |
Price range indicator (e.g. $$) |
restaurant_categories |
Comma-separated cuisine/category tags |
restaurant_address |
Full street address |
section_name |
Menu section / category name (e.g. Burgers, Sides) |
item_id |
Unique menu item ID |
item_name |
Menu item name |
item_description |
Item description / ingredients |
item_price |
Price in USD (numeric) |
item_price_formatted |
Price as formatted string (e.g. $9.99) |
item_image_url |
URL of the item's thumbnail image |
item_customizable |
Whether the item has customization options |
scraped_at |
ISO 8601 timestamp |
Example output record:
{
"restaurant_id": "yucJTUkHWQaRH0b5IC8U9g",
"restaurant_name": "Wendy's Isabela",
"restaurant_url": "https://www.ubereats.com/store/wendys-isabela/yucJTUkHWQaRH0b5IC8U9g",
"restaurant_rating": 4.8,
"restaurant_rating_count": 37,
"restaurant_price_range": "",
"restaurant_categories": "Burgers",
"restaurant_address": "BO MORA CARR 2 KM 111 Isabela PR, San Juan, 00662",
"section_name": "Combos de Hamburger",
"item_name": "Classic Sencillo Combo",
"item_description": "Carne, Queso americano, mayonesa, ketchup, pepinillo, cebolla, tomate, lechuga",
"item_price": 7.98,
"item_price_formatted": "$7.98",
"scraped_at": "2026-06-04T17:40:05.673Z"
}
Notes
- Menu data availability: Chain restaurants (McDonald's, Subway, Wendy's, etc.) reliably expose full menus via UberEats structured data. Some independent restaurants may not include menu data in their structured data — these are skipped with a warning in the run log.
- Rate limiting: UberEats uses Cloudflare to protect its pages. This actor uses residential proxies to bypass challenges. Scraping hundreds of restaurants in one run may slow down due to proxy session management.
- URL format: URLs must be full UberEats store URLs (
https://www.ubereats.com/store/...). City or search pages are not supported.