# 🚀 Uber Eats Menu Scraper · 2,500 Free Menus/Month (`omkar-cloud/uber-eats-menu-scraper`) Actor

Uber Eats Menu Scraper gets you Uber Eats menus ⚡ fast, 🎯 100% accurate and 🔍 ridiculously detailed — every item with price, photo, description, calories, deals and popularity. 💰 $2 per 1,000 menus, no start fee. Scrape your first 2,500 menus free every month 🚀

- **URL**: https://apify.com/omkar-cloud/uber-eats-menu-scraper.md
- **Developed by:** [Omkar Cloud](https://apify.com/omkar-cloud) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 menu scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Uber Eats Menu Scraper

Uber Eats Menu Scraper by Omkar Cloud gets you 🎯 accurate, 🔍 detailed Uber Eats menus — every item of every menu, straight from a store link.

Uber Eats guards its data with reCAPTCHA bot protection, so pulling whole menus with live prices out in bulk is hard.

Uber Eats Menu Scraper gets them out, so you get the data, and can successfully complete your project.

**$2 per 1,000 menus.** And with Apify's free plan you get $5 of credit every month, so your first **2,500 menus each month are free**.

This is an excellent Actor made by Omkar Cloud, which is Rated Excellent — [4.7 based on 30 reviews on Trustpilot](https://www.trustpilot.com/review/omkar.cloud).

👉 [**Try Uber Eats Menu Scraper free**](https://apify.com/omkar-cloud/uber-eats-menu-scraper) — your first 2,500 menus are Free.

### What can I get

- 📋 **Every item of every menu** — breakfast, lunch and all-day menus, grouped by category
- 💵 **Live prices** — in the local currency, with sold-out and availability flags
- 📸 **Photos & descriptions** — the item photo and the full description Uber Eats shows
- 🔥 **Popularity** — "#1 most liked" labels, percent of customers who liked it and the number of ratings
- 🏷️ **Deals & calories** — buy-1-get-1 and other item deals, calories where the store lists them

### Why Uber Eats Menu Scraper

Most other Uber Eats menu scrapers fail you in one of four ways:

- 🗄️ **Inaccurate, cached, stale data**
- 🧩 **Low-detail data** — a name and a price, never the full picture
- 💸 **Pay more to get the same data** — up to $5 per 1,000 menus elsewhere
- 🪦 **Works today, breaks next month** — nobody maintains it

Uber Eats Menu Scraper is scraped live on every run, priced honestly, and actively maintained.

### Example: A Full Uber Eats Menu

```json
{
  "input_url": "https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA",
  "store_id": "65686398-f585-439b-ae4c-dabe058a0a60",
  "store_name": "Five Guys (253 W. 42nd St.) NY - 1499",
  "store_link": "https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA",
  "currency": "USD",
  "merchant_type": "restaurant",
  "is_partial": false,
  "menu_names": [
    "Menu",
    "Breakfast Menu"
  ],
  "item_count": 88,
  "items": [
    {
      "menu": "Menu",
      "category": "Featured items",
      "id": "4f28674e-51c7-5f02-87b4-64e2f71b52e4",
      "name": "Cheeseburger",
      "link": "https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA/a7abc1e5-7f23-5a76-ae26-32b76268deec/0379a62a-1156-4ddb-a09a-7e1dc45d5dfb/4f28674e-51c7-5f02-87b4-64e2f71b52e4",
      "description": "American-style cheese melted between fresh patties and placed on a soft, toasted sesame seed bun. Choose as many toppings as you want.",
      "price": 16.02,
      "image": "https://tb-static.uber.com/prod/image-proc/processed_images/f98b135f4850ba5d4c1989386eebca96/c67fc65e9b4e16a553eb7574fba090f1.jpeg",
      "is_sold_out": false,
      "is_available": true,
      "has_customizations": true,
      "labels": [
        "#1 most liked"
      ],
      "promotion_type": "buy_x_get_y",
      "promotion_buy_quantity": 1,
      "promotion_get_quantity": 1,
      "promotion_max_redemptions": 3
    },
    {
      "menu": "Menu",
      "category": "Featured items",
      "id": "2556d497-2d8a-5010-8aba-dc31a397ceff",
      "name": "Bacon Cheeseburger",
      "link": "https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA/a7abc1e5-7f23-5a76-ae26-32b76268deec/0379a62a-1156-4ddb-a09a-7e1dc45d5dfb/2556d497-2d8a-5010-8aba-dc31a397ceff",
      "description": "Fresh patties hot off the grill with American-style cheese and crispy applewood smoked bacon. Placed on a soft, toasted sesame seed bun. Choose as many toppings as you want.",
      "price": 17.75,
      "image": "https://tb-static.uber.com/prod/image-proc/processed_images/7439d4f3e20d1262c85046efb61a34f3/c67fc65e9b4e16a553eb7574fba090f1.jpeg",
      "is_sold_out": false,
      "is_available": true,
      "has_customizations": true,
      "labels": [
        "#2 most liked"
      ],
      "promotion_type": "buy_x_get_y",
      "promotion_buy_quantity": 1,
      "promotion_get_quantity": 1,
      "promotion_max_redemptions": 3
    }
  ],
  "aisles": []
}
```

*Trimmed for readability — 2 of 88 items shown, empty fields left out.* Each menu is one row; every item in `items` is flat, so it exports cleanly.

### Get Started with 2,500 Free Menus

1. [Hit **Try for Free Button**](https://apify.com/omkar-cloud/uber-eats-menu-scraper) — the input is pre-filled with Five Guys and Blue Ribbon Sushi Bar in New York.
2. Enjoy your data 😎.

### Input Examples

**Menus from store links** — or store ids:

```json
{
    "storeUrls": [
        "https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA",
        "ZWhjmPWFQ5uuTNq-BYoKYA"
    ]
}
```

**The menu for one area** — Uber Eats can price a store differently per address:

```json
{
    "storeUrls": ["https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA"],
    "location": "Times Square, New York"
}
```

Need store links first? [Uber Eats Scraper](https://apify.com/omkar-cloud/uber-eats-scraper) finds every store around any address — its `link` column goes straight in here.

### Pricing

High value, Low price.

| What | Price | What you get |
|---|---|---|
| **Menus** | **$2 per 1,000** | The store + every item of every menu: name, description, price, photo, category, sold-out flag, labels, liked percent, rating count, calories, deals |

No start fee — you pay only for the menus you get. One price on every Apify plan.

**Cost examples**

| Run | Cost |
|---|---|
| 10 restaurant menus | $0.02 |
| 500 menus | $1.00 |
| 5,000 menus | $10.00 |

💡 Apify's free plan includes $5 of credit every month — **2,500 free menus, every month**.

👉 [**Scrape your first 2,500 menus free**](https://apify.com/omkar-cloud/uber-eats-menu-scraper)

### Run It from Code

Grab your API token from [Integrations Settings here](https://console.apify.com/settings/integrations) and replace `<YOUR_API_TOKEN>` below.

**Python** (`pip install apify-client`)

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("omkar-cloud/uber-eats-menu-scraper").call(run_input={
    "storeUrls": ["https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA"],
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    for item in row["items"]:
        print(row["store_name"], item["name"], item["price"], row["currency"])
```

**Node.js** (`npm install apify-client`)

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('omkar-cloud/uber-eats-menu-scraper').call({
    storeUrls: ['https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### FAQs

#### How much does it cost to scrape Uber Eats menus?

$2 per 1,000 menus — $0.002 per store, however many items the menu has. No start fee, no monthly rental, the same price on every Apify plan.

#### Is there a free tier?

Yes. Apify's free plan gives you $5 of credit every month, which is 2,500 menus — every month, no card needed.

#### What do I put in Store Links?

Any ubereats.com store link (copy it from your browser), or just the store id at the end of the link. Links from every country work.

#### Am I charged twice for the same store?

No. The same store entered twice — as a link and as an id, say — is scraped and billed once per run.

#### Do grocery stores work?

Yes. For supermarkets and convenience stores Uber Eats shows a storefront of featured shelves rather than one long menu; you get those items, with `is_partial` set and the store's other aisles named in `aisles`.

#### Which countries work?

Every country Uber Eats operates in. Prices come in the local currency, named on every row.

#### Can I export to CSV or Excel?

Yes. Every item is flat, so JSON exports are ready to use, and CSV/Excel exports put each menu on one row.

#### Is the data live?

Yes. Every run reads Uber Eats at that moment — prices, sold-out flags and deals are current as of the run.

### 💬 Have Questions? We Have Answers.

[![Message Us on WhatsApp](https://raw.githubusercontent.com/omkarcloud/assets/master/images/whatsapp-us.png)](https://api.whatsapp.com/send?phone=918178804274\&text=I%20need%20help%20with%20using%20the%20Uber%20Eats%20Menu%20Scraper%20Actor.)
[![Ask Us on Email](https://raw.githubusercontent.com/omkarcloud/assets/master/images/ask-on-email.png)](mailto:happy.to.help@omkar.cloud?subject=Help%20with%20Uber%20Eats%20Menu%20Scraper%20Actor\&body=I%20need%20help%20with%20using%20the%20Uber%20Eats%20Menu%20Scraper%20Actor.)
You are important to us — just message us and we will solve your problem ✅ within 1 working day. 🩷 Pinky Promise 🤙!

# Actor input Schema

## `storeUrls` (type: `array`):

Store links like https://www.ubereats.com/store/<name>/<id>. One menu row per store, billed once.

## `location` (type: `string`):

Optional address or `latitude,longitude`. Uber Eats can show a slightly different menu or prices per area — set it to see the menu for that address.

## Actor input object example

```json
{
  "storeUrls": [
    "https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA",
    "https://www.ubereats.com/store/blue-ribbon-sushi-bar-rockefeller-plaza/OVkiViZmWCK3-usP1xZ5qw"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

Every menu with every item.

## `overview` (type: `string`):

Store, menus and item count of every scraped menu.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "storeUrls": [
        "https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA",
        "https://www.ubereats.com/store/blue-ribbon-sushi-bar-rockefeller-plaza/OVkiViZmWCK3-usP1xZ5qw"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("omkar-cloud/uber-eats-menu-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "storeUrls": [
        "https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA",
        "https://www.ubereats.com/store/blue-ribbon-sushi-bar-rockefeller-plaza/OVkiViZmWCK3-usP1xZ5qw",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("omkar-cloud/uber-eats-menu-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "storeUrls": [
    "https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA",
    "https://www.ubereats.com/store/blue-ribbon-sushi-bar-rockefeller-plaza/OVkiViZmWCK3-usP1xZ5qw"
  ]
}' |
apify call omkar-cloud/uber-eats-menu-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,omkar-cloud/uber-eats-menu-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/AwGgzm1VfWtaFQF38/builds/TYuQXLhFW2BVLkANN/openapi.json
