Uber Eats Scraper — Menus, Item Prices & Ratings | API
Pricing
from $96.03 / 1,000 menu scrapeds
Uber Eats Scraper — Menus, Item Prices & Ratings | API
Scrape any **Uber Eats** restaurant menu into FLAT rows — one row per item with **price at the top level**, plus store rating, cuisine, address & phone on every row. No nested digging, no browser. Reliable residential-proxy access. Priced per menu — well below per-menu incumbents.
Pricing
from $96.03 / 1,000 menu scrapeds
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Uber Eats Menu Scraper 🍔
Turn any Uber Eats restaurant page into a clean, flat menu table — one row per item with the price right at the top level. No nested JSON to dig through, no browser, no manual copy-paste.
What you get (one row per menu item)
| field | description |
|---|---|
restaurant_name | Store / restaurant name |
section | Menu section breadcrumb (e.g. Breakfast > Featured items) |
item_name | Menu item name |
price_usd | Item price, top-level number (no nested offers.price) |
price_currency | Currency code (e.g. USD) |
description | Item description |
image_url | Item photo |
rating / num_ratings | Store rating + review count (repeated on every row) |
cuisine | Cuisine tags |
price_range | Store price range (e.g. $$) |
phone, address, city, state, zip, country | Store location & contact |
store_url, source_url | Links |
parse_confidence, warnings | Structural-drift signal — you never pay for a broken parse |
scraped_at | UTC timestamp |
How to use
- Open a restaurant on ubereats.com and copy the
page URL (
https://www.ubereats.com/store/{name}/{id}). - Paste one or more URLs into Store URLs.
- Run. You get a flat table of every menu item with its price.
Input
- Store URLs — list of Uber Eats
/store/URLs. - Max Menus — cap on number of menus (0 = unlimited).
- Delay between requests — politeness delay (default 1.5s).
- Proxy — Apify RESIDENTIAL by default (recommended for reliable access).
Pricing & reliability
- Billed per menu (one charge per restaurant successfully scraped), no matter how many items the menu has — far cheaper than tools that meter the same per-menu unit at a premium.
- You never pay for a failed parse: if the menu structure drifts, rows are
returned with a low
parse_confidenceand the menu is not charged. - Reliable access via residential proxy; runs entirely on the Apify platform.
More scrapers from our toolkit
Building a data pipeline? These actors pair well with this one — each runs on your own Apify account with the same pay-per-result pricing, no subscription:
- Vinted Marketplace
- Allegro Offers
- Amazon Products Scraper
- Autoscout24 Cars Scraper
- Competitor Price Monitor
- Craigslist Scraper
Chain any of them together from the Integrations tab (the Run succeeded trigger) to build a multi-step workflow — one actor's output feeds the next.
Use it from your existing tools
Use with Claude Desktop / Cursor / Cline (MCP)
Load this actor as a tool in your AI assistant. Call it directly from your AI assistant via the Apify MCP server — no Store browsing needed. Paste this into your MCP client config (e.g. claude_desktop_config.json) and restart the client:
{"mcpServers": {"apify-ubereats-menu": {"command": "npx","args": ["-y","@apify/actors-mcp-server","--tools","bovi/ubereats-menu"],"env": {"APIFY_TOKEN": "YOUR_APIFY_TOKEN"}}}}
Replace YOUR_APIFY_TOKEN with your own Apify API token (free at apify.com → Settings → Integrations). Curated to a handful of tools so the agent selects reliably.
Works with Clay
Run this actor as an HTTP enrichment step inside a Clay table:
- Method:
POST - URL:
https://api.apify.com/v2/acts/bovi~ubereats-menu/run-sync-get-dataset-items?token={{apify_token}} - Body (JSON): map your Clay columns to the actor input (see the Input section above), e.g.
{"storeUrls": "{{clay_column}}"}
The run finishes synchronously and returns the dataset rows straight into your Clay table. It runs on Apify's cloud under your own token and usage. Synchronous runs must complete within 300 seconds.