# 🚀 Uber Eats Scraper · 5,000 Free Stores/Month (`omkar-cloud/uber-eats-scraper`) Actor

Uber Eats Scraper gets you Uber Eats restaurants ⚡ fast, 🎯 100% accurate and 🔍 ridiculously detailed — ratings, delivery times, fees, offers, phones, hours and addresses. 💰 $1 per 1,000 stores, no start fee. Scrape your first 5,000 stores free every month 🚀

- **URL**: https://apify.com/omkar-cloud/uber-eats-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 $1.00 / 1,000 store 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 Scraper

Uber Eats Scraper by Omkar Cloud gets you 🎯 accurate, 🔍 detailed Uber Eats restaurants and stores — by keyword around any delivery address, or straight from a store link.

Uber Eats shows different stores, delivery times and fees for every address, and it guards its data with reCAPTCHA bot protection — so getting it out in bulk is hard.

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

**$1 per 1,000 stores.** And with Apify's free plan you get $5 of credit every month, so your first **5,000 stores 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 Scraper free**](https://apify.com/omkar-cloud/uber-eats-scraper) — your first 5,000 stores are Free.

### What can I get

- 🔍 **Search any address** — sushi, pizza, groceries or a store name, 80 stores per page, in 35 countries
- ⭐ **Ratings & reviews count** — plus delivery time, delivery fee, distance and running offers
- 🎛️ **The site's own filters** — sort by rating or arrival, minimum rating, price range, fee, under 30 min, offers only, pickup
- 🍣 **Matched dishes** — the items your keyword found in each store, with price and photo
- 🧾 **Full details** — phone, full address, coordinates, opening hours, cuisines, price range, chain and health inspection link

### Why Uber Eats Scraper

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

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

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

### Example: A Full Uber Eats Store

```json
{
  "search_query": "sushi",
  "search_location": "Times Square, New York",
  "id": "39592256-2666-5822-b7fa-eb0fd71679ab",
  "name": "Blue Ribbon Sushi Bar (Rockefeller Plaza)",
  "link": "https://www.ubereats.com/store/blue-ribbon-sushi-bar-rockefeller-plazas/OVkiViZmWCK3-usP1xZ5qw",
  "rating": 4.8,
  "review_count": 89,
  "phone": "+12129370204",
  "cuisines": [
    "Japanese",
    "Sushi",
    "Asian"
  ],
  "delivery_min_minutes": 10,
  "delivery_max_minutes": 23,
  "distance": 0.3,
  "distance_unit": "mi",
  "address": "30 Rockefeller Plaza, Concourse Level, New York, NY 10112",
  "city": "New York",
  "region": "NY",
  "postal_code": "10112",
  "latitude": 40.7593694,
  "longitude": -73.9794441,
  "is_open": true,
  "status": "Opens 11:00 AM",
  "chain_name": "Blue Ribbon Restaurants (Restaurant Group Parent)",
  "merchant_type": "restaurant",
  "currency": "USD"
}
```

*Trimmed for readability — empty fields left out.* Every row is flat — each value is its own column, so CSV and Excel exports need no clean-up.

### Get Started with 5,000 Free Stores

1. [Hit **Try for Free Button**](https://apify.com/omkar-cloud/uber-eats-scraper) — the input is pre-filled with "sushi" and "pizza" around Times Square, New York.
2. Enjoy your data 😎.

### Input Examples

**Search around an address** — the 200 best-rated sushi places near Times Square:

```json
{
    "locations": ["Times Square, New York"],
    "searchQueries": ["sushi"],
    "sortBy": "rating",
    "maxResults": 200
}
```

**Every store that delivers to an address** — fast and cheap only, in several cities:

```json
{
    "locations": ["Beverly Hills, CA", "Union Square, San Francisco", "41.8781,-87.6298"],
    "under30Min": true,
    "priceRange": ["1", "2"],
    "maxResults": 500
}
```

**Full details** — phone, address, hours and cuisines on every row:

```json
{
    "locations": ["Times Square, New York"],
    "searchQueries": ["pizza"],
    "includeDetails": true,
    "maxResults": 50
}
```

**Store links** — one fully-detailed row each:

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

Each row carries `search_query` and `search_location` (or `input_url`), so you always know which input it came from.

### Pricing

High value, Low price.

| What | Price | What you get |
|---|---|---|
| **Standard stores** | **$1 per 1,000** | id, name, link, photo, rating, review count, delivery time, delivery fee, distance, offers, badges, coordinates + the dishes your keyword matched |
| **Detailed stores** | $3 per 1,000 | Everything above + phone, full address, opening hours, cuisines, price range, tags, logo, chain, merchant type, health inspection link and the store's menus |

A detailed store is the standard $0.001 plus a $0.002 details add-on. No start fee — you pay only for the rows you get. One price on every Apify plan.

**Cost examples**

| Run | Cost |
|---|---|
| 100 stores for one keyword | $0.10 |
| 1,000 stores across 10 addresses | $1.00 |
| 1,000 stores with full details | $3.00 |

Control your spend with **Max Stores per Keyword / Address**: 1,000 stores ≈ $1.

💡 Apify's free plan includes $5 of credit every month — **5,000 free stores, every month**.

👉 [**Scrape your first 5,000 stores free**](https://apify.com/omkar-cloud/uber-eats-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-scraper").call(run_input={
    "locations": ["Times Square, New York"],
    "searchQueries": ["sushi"],
    "maxResults": 100,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row["name"], row["rating"], row["delivery_min_minutes"], row["link"])
```

**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-scraper').call({
    locations: ['Times Square, New York'],
    searchQueries: ['pizza'],
    maxResults: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### FAQs

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

$1 per 1,000 stores — $0.001 per store. Turn on **Include Full Store Details** and each store costs $0.003 ($3 per 1,000). Store links are always scraped in full at that rate. There is no start fee and no monthly rental, and the price is the same on every Apify plan.

#### Is there a free tier?

Yes. Apify's free plan gives you $5 of credit every month, which is 5,000 standard stores — every month, no card needed.

#### Why do I need a delivery address?

Uber Eats builds its results around an address: which stores deliver there, how long it takes and what it costs. Add any address, place name or `latitude,longitude` — street-level addresses give the most precise delivery times.

#### How do I keep my cost under control?

Set **Max Stores per Keyword / Address**. It caps the rows for each keyword at each address, so 2 keywords × 1 address with a cap of 500 costs at most $1. You can also set a maximum cost per run in Apify — the Actor stops cleanly when it is reached.

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

No. A store found by several keywords or addresses is scraped and billed once per run.

#### What if full details can't be fetched for a store?

You keep the standard row for it and pay only the standard $0.001 — the details add-on is charged only when the details actually arrive.

#### Which countries work?

Every country Uber Eats operates in — the US, Canada, the UK, France, Germany, Japan, Australia, Mexico and 27 more. Prices come in the local currency, named on every row.

#### Why is the delivery fee sometimes empty?

Uber Eats hides the fee on many store cards for visitors who are not signed in (it often shows a new-user offer instead). When it shows one, you get it.

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

Yes. Every row is flat — one value per column — so JSON, CSV, Excel and HTML exports work without any clean-up.

#### Is the data live?

Yes. Every run reads Uber Eats at that moment — ratings, delivery times, fees, offers and open status 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%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%20Scraper%20Actor\&body=I%20need%20help%20with%20using%20the%20Uber%20Eats%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

## `locations` (type: `array`):

Addresses, place names or coordinates (`latitude,longitude`) to search around. Rows carry a `search_location` field so you can tell them apart.

## `searchQueries` (type: `array`):

Each keyword is searched around every delivery address. Rows carry a `search_query` field and the dishes the keyword matched in that store (`matched_items`). Leave empty to list all nearby stores.

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

Store links like https://www.ubereats.com/store/<name>/<id>. Always scraped with full details (billed at the detailed-store rate).

## `maxResults` (type: `integer`):

Maximum number of stores to scrape for each keyword at each address (or for each address when there are no keywords). Use this to control your cost (1,000 stores ≈ $1).

## `includeDetails` (type: `boolean`):

When enabled, every store is also scraped in full — phone number, full address, opening hours, cuisines, price range, chain, merchant type, health inspection link, menu sections and the exact delivery estimate. Still one dataset row per store, billed once at the detailed-store rate ($3 per 1,000 instead of $1). Runs take longer because each store page is fetched individually.

## `sortBy` (type: `string`):

Order of results.

## `minRating` (type: `string`):

Only include stores rated at least this high.

## `priceRange` (type: `array`):

Only include stores at these price levels. Leave empty for all.

## `maxDeliveryFee` (type: `string`):

Only include stores whose delivery fee is at most this much (local currency).

## `under30Min` (type: `boolean`):

Only include stores that deliver in under 30 minutes.

## `hasOffers` (type: `boolean`):

Only include stores running a deal or offer.

## `topRated` (type: `boolean`):

Only include stores Uber Eats marks as best overall.

## `diningMode` (type: `string`):

Delivery or pickup. Pickup shows the distance to each store instead of a delivery fee.

## Actor input object example

```json
{
  "locations": [
    "Times Square, New York"
  ],
  "searchQueries": [
    "sushi",
    "pizza"
  ],
  "storeUrls": [
    "https://www.ubereats.com/store/five-guys-253-w-42nd-st-ny-1499/ZWhjmPWFQ5uuTNq-BYoKYA"
  ],
  "maxResults": 100,
  "includeDetails": false,
  "sortBy": "recommended",
  "minRating": "",
  "maxDeliveryFee": "",
  "under30Min": false,
  "hasOffers": false,
  "topRated": false,
  "diningMode": "delivery"
}
```

# Actor output Schema

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

Every row with every field.

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

Photo, name, rating, delivery estimate, fee and offers of every store.

## `details` (type: `string`):

Phone, address, hours, cuisines and chain of detailed stores.

# 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 = {
    "locations": [
        "Times Square, New York"
    ],
    "searchQueries": [
        "sushi",
        "pizza"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("omkar-cloud/uber-eats-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 = {
    "locations": ["Times Square, New York"],
    "searchQueries": [
        "sushi",
        "pizza",
    ],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("omkar-cloud/uber-eats-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 '{
  "locations": [
    "Times Square, New York"
  ],
  "searchQueries": [
    "sushi",
    "pizza"
  ],
  "maxResults": 100
}' |
apify call omkar-cloud/uber-eats-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-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/DZINHhtNweXdOApI8/builds/OcwwVfKjMLJnChGQz/openapi.json
