# Uber Eats Restaurant Scraper — Emails, Phones, SIRET by City (`corent1robert/uber-eats-pro-scraper`) Actor

Turn Uber Eats into CRM-ready restaurant leads — phones, company IDs, addresses, and emails when Uber Eats publishes them. Search by city, territory, or paste store URLs. Built for food suppliers, outbound sales teams, and market research. No login or API key. 31 countries.

- **URL**: https://apify.com/corent1robert/uber-eats-pro-scraper.md
- **Developed by:** [Corentin Robert](https://apify.com/corent1robert) (community)
- **Categories:** Lead generation, Automation, Developer tools
- **Stats:** 8 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 restaurant leads

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Uber Eats Pro Scraper

**Built for food suppliers, outbound teams, and market researchers** — turn Uber Eats listings into CRM-ready restaurant leads with phones, company IDs, and addresses in one export.

**No login. No API key. No Uber Eats account.**

Phones, SIRET-style company IDs, ratings, and geo filters ship by default. Turn on **EU / US email disclosure (proxy)** when chains hide contact blocks — each row flags **relay vs direct** emails so you skip `@uber.fr` and chain forwarding addresses.

---

### Who is this for?

| You are… | Typical goal | Suggested setup |
|----------|--------------|-----------------|
| **B2B supplier** (packaging, ingredients, POS) | Prospect restaurants in a city or region | **City** mode + cuisine filter |
| **Outbound / SDR team** | CRM-ready phones + emails for sequences | **City** or **Territory** + **email disclosure: Yes** (EU proxy) |
| **Food-tech / delivery partner** | Map competitive density | **Territory** mode + `maxResults` cap |
| **Market research** | Pricing bands & ratings by geo | **Territory** + categories; export JSON |
| **Agency / growth** | Refresh an existing URL list | **URLs** mode — paste store links |

**By default** you get name, phone, address, company ID (e.g. SIRET in France), VAT, cuisines, and rating — fast, without extra proxy cost.

**Turn on email disclosure (proxy)** when chains need EU/US routing for legal contact blocks; expect longer runs and higher cost. Emails can still appear on fast HTTP runs when Uber Eats shows them.

---

### What you get out of it

| Benefit | Why it matters |
|--------|----------------|
| **Faster outreach** | Phone and email fields ready for your CRM or sequencing tool |
| **Cleaner B2B data** | Company ID and VAT for verification and enrichment |
| **Geo-targeted lists** | Pick a country, region, city, or cuisine — only the restaurants you care about |
| **Full-funnel coverage** | Territory for market scans; City for local campaigns; URLs to refresh leads |
| **Transparent runs** | Logs show **progress %**, **ETA**, and a downloadable **RUN_LOG** |

---

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

Pricing is **pay-per-event** with **two row tiers** (plus compute; proxy GB when **Collect emails** is on):

| Event | Price | When charged |
|-------|-------|----------------|
| `apify-actor-start` | **$0.05** | Every run |
| `uber-eats-restaurant-with-email` | **$0.009** | Row has a **direct** inbox (`isRelayEmail: false`) |
| `uber-eats-restaurant-no-email` | **$0.004** | No email, or **relay only** (`@uber.fr`, `@net.mcdonalds.fr`) |
| `apify-default-dataset-item` | **$0** | Required guard — avoids double-charging with explicit events |

Relay addresses still appear in the dataset but bill at the **base** tier — use `isRelayEmail` before cold email.

| Scenario | Listed PPE (rows only) | Typical total |
|----------|------------------------|---------------|
| 15 restaurants (default Try, ~60% direct email) | **~$0.08–0.11** | ~$0.15–0.25 with HTTP compute |
| 1,000 rows, mostly phones / relay | **~$4** | ~$5–7 compute-only |
| 1,000 rows, ~60% direct email | **~$6–7** | ~$8–12 compute-only |
| 1,000 rows + **Collect emails** (EU proxy) | same row tiers | ~$12–20 with proxy GB |

**Console setup (Publication + Monetization):**

1. **Monetization → Change pricing** — set `apify-default-dataset-item` to **$0**; add `uber-eats-restaurant-with-email` (**$0.009**) and `uber-eats-restaurant-no-email` (**$0.004**); keep `apify-actor-start` at **$0.05** (or **$0.00005** for a minimal run fee).
2. **Publication → Display** — use the Store title, description, and SEO copy in the maintainer notes below (Console overrides `actor.json` when custom SEO is enabled).

**Store title (Actor name):** `Uber Eats Scraper · Restaurant Leads · City Search`

**Store description:** Turn Uber Eats into CRM-ready restaurant leads — phones, company IDs, addresses, and emails when Uber Eats publishes them. Search by city, territory, or paste store URLs. Built for food suppliers, outbound sales teams, and market research. No login or API key. 31 countries.

**SEO Actor name:** `Uber Eats Restaurant Scraper — Emails, Phones, SIRET by City`

**SEO description:** Scrape Uber Eats restaurants by city or country — phones, SIRET, addresses, emails for B2B outreach. CRM-ready leads for suppliers & SDR teams. No login or API key.

HTTP-only runs keep compute low. **Collect emails** adds regional routing time and proxy bandwidth on top of row PPE.

### Is scraping Uber Eats free?

Apify charges for Actor runs (PPE + compute). A **15-row Try** is usually well under **$0.25**. There is no separate Uber Eats API fee — this Actor uses public store pages only.

---

### Is it legal to scrape Uber Eats?

This Actor only reads **public restaurant listing and store pages** that Uber Eats shows to consumers. You are responsible for using the data in line with GDPR, local marketing laws, and Uber Eats' terms. Do not use scraped personal data for unlawful outreach.

---

### Quick start

1. **Input** tab → **City** mode (default)
2. Enter city names (e.g. `Annecy`, `Paris`) — country is inferred
3. **Max restaurants** defaults to **15**; **Cuisine** defaults to **fast food**
4. Leave **email disclosure** on **No** for a fast first Try; turn **Yes** for EU chain legal blocks
5. **Run** → export from **Dataset** (CSV, JSON, Excel)

---

### Modes

#### Territory — Country or region

Best for **large market slices**.

```json
{
  "mode": "territory",
  "country": "fr",
  "region": "fr:idf",
  "categories": ["halal"],
  "maxResults": 2000
}
````

Set **`maxResults`: `0`** for no row ceiling (use a long **Run timeout**).

#### City — One or more cities

Best for **local campaigns**. Rows appear in the dataset **as each city finishes** (no need to wait for every city to be listed first).

```json
{
  "mode": "city",
  "cityNames": ["Annecy", "Paris", "Lyon"],
  "maxResults": 500,
  "collectEmails": "yes"
}
```

#### URLs — Enrich existing links

```json
{
  "mode": "urls",
  "startUrls": [
    "https://www.ubereats.com/fr/store/mcdonalds-paris/abc123"
  ]
}
```

***

### Output fields (per restaurant)

| Group | Fields |
|-------|--------|
| Identity | `name`, `legalName`, `storeId`, `storeSlug`, `url` |
| Contact | `email`, `isRelayEmail`, `phone`, `phoneFormatted`, `phoneLandline`, `phoneMobile` |
| Web | `website`, `instagram`, `facebook` (when listed in JSON-LD) |
| Business | `companyId` (e.g. SIRET), `vatNumber` |
| Location | `address`, `location` (lat, lng) |
| Profile | `foodCategories`, `priceRangeMin`, `priceRangeMax`, `openingHours` |
| Social proof | `rating`, `reviewCount`, `imageCover` |

CSV uses **semicolon** separators for Excel-friendly import.

***

### CRM & outreach workflows

| Goal | Filter / columns | Suggested input |
|------|------------------|-----------------|
| **Cold call list** | `phone` or `phoneFormatted` not empty | City mode, emails off |
| **Cold email (owners only)** | `isRelayEmail = false` and `email` not empty | Collect emails on for EU |
| **Skip chain relays** | `isRelayEmail = true` → use `phone` + `companyId` instead | Default export already flags relays |
| **Dedup across runs** | Key on `storeId` (stable Uber Eats UUID) | Any mode |
| **Enrich from SIRET** | `companyId` + `legalName` + `address` | Territory or City, FR sample |

**Spreadsheet tip:** import the semicolon CSV into Excel or Google Sheets, then filter column **isRelayEmail** to `FALSE` before loading into Lemlist, HubSpot, or Apollo.

***

### Output example

One restaurant from a **City · Annecy · fast-food · 15 rows** run (`collectEmails: no`):

```json
{
  "url": "https://www.ubereats.com/fr/store/wamys/oCwUa_VfWJ2wlyiU6xz3Hg",
  "storeId": "oCwUa_VfWJ2wlyiU6xz3Hg",
  "storeSlug": "wamys",
  "name": "Wamy's",
  "legalName": "Wamy's",
  "country": "FR",
  "city": "Annecy",
  "phone": "+33661050784",
  "phoneFormatted": "+33 6 61 05 07 84",
  "phoneMobile": "+33 6 61 05 07 84",
  "email": "wamys94@hotmail.com",
  "isRelayEmail": false,
  "website": null,
  "instagram": null,
  "facebook": null,
  "companyId": "95408122000012",
  "vatNumber": null,
  "address": {
    "street": "19 Avenue de Chambéry",
    "city": "Annecy",
    "postalCode": "74000",
    "country": "FR",
    "formatted": "19 Avenue de Chambéry, Annecy, 74000, FR"
  },
  "location": { "lat": 45.8980401, "lng": 6.116261 },
  "foodCategories": ["Barbecue", "Sandwich", "Burgers", "Halal"],
  "priceRangeMin": 0.3,
  "priceRangeMax": 28.9,
  "rating": 4.3,
  "reviewCount": 1000,
  "openingHours": "Sun 11:30-03:45; Mon-Wed 11:30-23:45; Thu 11:30-03:45; Fri-Sat 11:30-23:45"
}
```

***

### Typical fill rates

Reference export: **Annecy, FR · fast-food · 15 restaurants · `collectEmails: no`** (smoke run, June 2026). Your market and cuisine mix will differ.

| Field | Fill rate | Notes |
|-------|-----------|--------|
| `name`, `url`, `address`, `rating` | **100%** | Core listing fields |
| `companyId` (e.g. SIRET) | **100%** | On this FR fast-food sample |
| `phone` / `phoneFormatted` | **~87%** | 13/15 rows |
| `email` (any value) | **~87%** | Includes relay addresses (`@uber.fr`, `@net.mcdonalds.fr`, etc.) |
| `isRelayEmail: false` (direct inbox) | **~60%** | Filter on this field in CRM — skip relay rows for cold email |
| `isRelayEmail: true` | **~27%** | Chain / platform forwarding — use phone or company ID instead |
| `vatNumber` | **0%** | Often absent on Uber Eats legal blocks |
| `legalName` | **~90%** | From EU disclosure block on FR sample |
| `openingHours` | **~100%** | Compact string from JSON-LD on store pages |
| `website` / social | **Low** | Only when merchant links appear in JSON-LD `sameAs` |

**Collect emails: Yes** (Apify Cloud, EU routing) can surface additional legal-disclosure inboxes on chains and independents where the HTML block was geo-gated — expect longer runs and higher proxy cost. Phones and addresses are still collected when emails are off.

***

### Input reference

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `mode` | string | `city` | `territory`, `city`, or `urls` |
| `country` | string | `fr` | Territory mode — country code |
| `region` | string | — | `country:region`, e.g. `fr:idf` |
| `cityNames` | string\[] | `["Annecy"]` | City mode — auto-detect country; `fr:Annecy` forces locale |
| `categories` | string\[] | `["fast-food"]` | Clear for all cuisines |
| `maxResults` | integer | `15` | Per city (City) or total (Territory). **`0` = unlimited** |
| `collectEmails` | string | `no` | `yes` = EU/US proxy for geo-gated legal blocks (not “emails on/off”) |
| `proxyCountryCode` | string | `FR` | `FR` or `US` when `collectEmails` is `yes` |
| `startUrls` | url\[] | — | URL mode — Uber Eats store links |

**API only** (not in Console form): `verboseLogs` (`boolean`, default `false`) — request URLs and debug detail in run logs.

***

### Email collection

**Phones, addresses, and company IDs always export.** The Console toggle **EU / US email disclosure (proxy)** only adds residential routing so geo-gated legal blocks can load (chains, some EU pages). With **No**, emails still appear when Uber Eats already shows them on the store page. Relay inboxes are flagged in **`isRelayEmail`**.

***

### Timeout & long runs

**Territory + whole country** can run **many hours**. Raise **Run options → Timeout** (default Actor setting: 24 h) or set **`maxResults`** (e.g. 5000) for a sample.

***

### How it works

1. **Discover** — Territory or City mode lists store URLs from Uber Eats browse pages (reference geography + cuisine filters).
2. **Enrich** — Each store page is parsed for JSON-LD, legal text (SIRET/VAT), and optional email blocks.
3. **Export** — One dataset row per restaurant; City mode writes rows **after each city** finishes.
4. **Download** — CSV, JSON, or Excel from the Apify Dataset tab (local runs also write `output.csv`).

***

### Limitations

- **Not every restaurant publishes an email** — chains may only show relay inboxes; independents vary by country and disclosure rules.
- **`vatNumber` is often empty** even when SIRET/`companyId` is present (see fill rates above).
- **Territory-wide runs** can take hours and need a long **Run timeout** or a `maxResults` cap.
- **Collect emails** increases cost (proxy + time) — leave off for phone/address prospecting.
- **Relay emails** (`@uber.fr`, `@net.mcdonalds.fr`) are flagged with **`isRelayEmail: true`** — filter them out before cold outreach.
- Data reflects **what Uber Eats shows publicly** at scrape time; menus, ratings, and hours can change.

***

### FAQ

**Why is `email` empty on some rows?**\
The restaurant may not publish one, or only a relay address appears without EU legal disclosure. Turn **Collect emails** on for EU targets when outreach needs inboxes.

**What does `isRelayEmail` mean?**\
`true` = platform or chain forwarding inbox (e.g. `27524@uber.fr`, `0781@net.mcdonalds.fr`) — not the owner. `false` = direct mailbox. `null` = no email on the row. Filter `isRelayEmail = false` in your CRM before cold email.

**Which countries are supported?**\
**31 countries** — see the **Country** dropdown in Territory mode (driven by `data/reference.json`).

**Can I schedule recurring exports?**\
Yes — use [Apify Scheduler](https://docs.apify.com/platform/schedules) with your saved input (e.g. weekly city refresh).

**City vs Territory?**\
**City** for fast local lists (dataset fills per city). **Territory** for regional or national sweeps (lister phase can run long before enrichment).

**Do I need proxies?**\
Not for the default **phones + addresses** run. **Collect emails** on Apify Cloud enables regional routing automatically.

***

### Local development

```bash
npm install
npm run build
apify run
```

Console Try input lives in **`.actor/INPUT.json`** (15 rows, fast-food, emails off).

Heavy local preset:

```bash
npm run run:local
```

From monorepo root:

```bash
node scripts/run-uber-eats-smoke-local.mjs
node scripts/pull-uber-eats-pro-scraper.mjs
```

Update geography: `npm run update-reference`

***

### Also available

- **[Uber Eats Menu Scraper](https://apify.com/corent1robert/uber-eats-menu-scraper)** — export full menus (items, sections, prices) from store URLs you already have — pricing benchmarks and category research.
- **[Uber Eats Reviews Scraper](https://apify.com/corent1robert/uber-eats-reviews-scraper)** — monitor store ratings and latest public customer comments for URLs you already have (reputation snapshot, not full review history).
- **[Tripadvisor Restaurant Discovery](https://apify.com/corent1robert/tripadvisor-restaurant-discovery-scraper)** — find restaurants by location and cuisine on Tripadvisor.
- **[Google Maps Search Scraper](https://apify.com/corent1robert/google-maps-search-scraper)** — local business leads with phones, sites, and reviews.

***

### Support

Custom integrations: <corentin@outreacher.fr>

***

*Apache 2.0 — June 2026*

# Actor input Schema

## `mode` (type: `string`):

Most users start with **City** — then fill **City name(s)** below.

## `cityNames` (type: `array`):

One city per line — e.g. `Annecy`, `Paris`, `Lyon`. Optional prefix: `fr:Annecy` to force France.

## `country` (type: `string`):

Target country. Must match **Region** below (e.g. France + `fr:idf`).

## `region` (type: `string`):

Optional. Pick **All regions** for a full country sweep, or one region (e.g. Île-de-France).

## `startUrls` (type: `array`):

Example: `https://www.ubereats.com/fr/store/...`

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

**City:** cap per city. **Territory:** total cap. **URLs:** ignored.

## `categories` (type: `array`):

Narrow to one or more cuisines. **Clear all** to include every restaurant in the area. City mode uses the first selected cuisine.

## `collectEmails` (type: `string`):

**No (default):** fast HTTP — emails still export when visible on the page. **Yes:** routes through France or US residential proxy so chain / EU legal blocks can load (slower, higher cost). Relay inboxes are flagged in the dataset.

## `proxyCountryCode` (type: `string`):

Only when **EU / US email disclosure** is **Yes**. **France** for Europe, **United States** for North America.

## Actor input object example

```json
{
  "mode": "city",
  "cityNames": [
    "Annecy"
  ],
  "country": "fr",
  "maxResults": 15,
  "categories": [
    "fast-food"
  ],
  "collectEmails": "no",
  "proxyCountryCode": "FR"
}
```

# Actor output Schema

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

Dataset of Uber Eats restaurants with contact details and addresses.

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

Slim table view for quick review in Apify Console.

## `runLog` (type: `string`):

Text log written during execution.

# 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 = {
    "cityNames": [
        "Annecy"
    ],
    "maxResults": 15,
    "categories": [
        "fast-food"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/uber-eats-pro-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 = {
    "cityNames": ["Annecy"],
    "maxResults": 15,
    "categories": ["fast-food"],
}

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

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

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

```

## CLI example

```bash
echo '{
  "cityNames": [
    "Annecy"
  ],
  "maxResults": 15,
  "categories": [
    "fast-food"
  ]
}' |
apify call corent1robert/uber-eats-pro-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=corent1robert/uber-eats-pro-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Uber Eats Restaurant Scraper — Emails, Phones, SIRET by City",
        "description": "Turn Uber Eats into CRM-ready restaurant leads — phones, company IDs, addresses, and emails when Uber Eats publishes them. Search by city, territory, or paste store URLs. Built for food suppliers, outbound sales teams, and market research. No login or API key. 31 countries.",
        "version": "1.5",
        "x-build-id": "ottjiDjjlgFjUwVp3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/corent1robert~uber-eats-pro-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-corent1robert-uber-eats-pro-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/corent1robert~uber-eats-pro-scraper/runs": {
            "post": {
                "operationId": "runs-sync-corent1robert-uber-eats-pro-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/corent1robert~uber-eats-pro-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-corent1robert-uber-eats-pro-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "mode": {
                        "title": "Search mode",
                        "enum": [
                            "city",
                            "territory",
                            "urls"
                        ],
                        "type": "string",
                        "description": "Most users start with **City** — then fill **City name(s)** below.",
                        "default": "city"
                    },
                    "cityNames": {
                        "title": "City name(s)",
                        "type": "array",
                        "description": "One city per line — e.g. `Annecy`, `Paris`, `Lyon`. Optional prefix: `fr:Annecy` to force France.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Country",
                        "enum": [
                            "za",
                            "de",
                            "ar",
                            "au",
                            "be",
                            "ca",
                            "cl",
                            "cr",
                            "ec",
                            "es",
                            "us",
                            "fr",
                            "gt",
                            "ie",
                            "it",
                            "jp",
                            "ke",
                            "lu",
                            "mx",
                            "nz",
                            "pa",
                            "nl",
                            "pl",
                            "pt",
                            "do",
                            "gb",
                            "sv",
                            "lk",
                            "se",
                            "ch",
                            "tw"
                        ],
                        "type": "string",
                        "description": "Target country. Must match **Region** below (e.g. France + `fr:idf`).",
                        "default": "fr"
                    },
                    "region": {
                        "title": "Region",
                        "enum": [
                            "za:all",
                            "za:ec",
                            "za:fs",
                            "za:gp",
                            "za:kzn",
                            "za:lp",
                            "za:mp",
                            "za:nw",
                            "za:nc",
                            "za:wc",
                            "de:all",
                            "de:bw",
                            "de:by",
                            "de:be",
                            "de:bb",
                            "de:hb",
                            "de:hh",
                            "de:he",
                            "de:ni",
                            "de:nw",
                            "de:rp",
                            "de:sl",
                            "de:sn",
                            "de:st",
                            "de:sh",
                            "de:th",
                            "de:mv",
                            "ar:all",
                            "au:all",
                            "au:act",
                            "au:nsw",
                            "au:nt",
                            "au:qld",
                            "au:sa",
                            "au:tas",
                            "au:vic",
                            "au:wa",
                            "be:all",
                            "be:anvers",
                            "be:brabant-flamand",
                            "be:brabant-wallon",
                            "be:bruxelles-capitale",
                            "be:flandre-occidentale",
                            "be:flandre-orientale",
                            "be:hainaut",
                            "be:limbourg",
                            "be:liège",
                            "be:namur",
                            "be:luxembourg",
                            "ca:all",
                            "ca:ab",
                            "ca:bc",
                            "ca:mb",
                            "ca:nb",
                            "ca:nl",
                            "ca:nt",
                            "ca:ns",
                            "ca:on",
                            "ca:pe",
                            "ca:qc",
                            "ca:sk",
                            "ca:yt",
                            "cl:all",
                            "cl:ai",
                            "cl:an",
                            "cl:ar",
                            "cl:ap",
                            "cl:at",
                            "cl:bi",
                            "cl:co",
                            "cl:li",
                            "cl:ll",
                            "cl:lr",
                            "cl:ma",
                            "cl:ml",
                            "cl:rm",
                            "cl:ta",
                            "cl:vs",
                            "cl:nb",
                            "cr:all",
                            "cr:alajuela",
                            "cr:cartago",
                            "cr:guanacaste",
                            "cr:heredia",
                            "cr:limón",
                            "cr:puntarenas",
                            "cr:san-josé",
                            "ec:all",
                            "ec:azuay",
                            "ec:chimborazo",
                            "ec:cotopaxi",
                            "ec:el-oro",
                            "ec:guayas",
                            "ec:imbabura",
                            "ec:manabí",
                            "ec:pichincha",
                            "ec:santa-elena",
                            "ec:santo-domingo-de-los-tsáchilas",
                            "ec:tungurahua",
                            "ec:zamora-chinchipe",
                            "es:all",
                            "es:es-an",
                            "es:es-ar",
                            "es:es-cn",
                            "es:es-cb",
                            "es:es-cl",
                            "es:es-cm",
                            "es:es-ct",
                            "es:es-ce",
                            "es:es-nc",
                            "es:es-md",
                            "es:es-vc",
                            "es:es-ex",
                            "es:es-ga",
                            "es:es-ib",
                            "es:es-ri",
                            "es:es-ml",
                            "es:es-pv",
                            "es:es-as",
                            "es:es-mc",
                            "us:all",
                            "us:aguada",
                            "us:aguadilla",
                            "us:aibonito",
                            "us:al",
                            "us:ak",
                            "us:arecibo",
                            "us:az",
                            "us:ar",
                            "us:añasco",
                            "us:barceloneta",
                            "us:barranquitas",
                            "us:bayamón",
                            "us:cabo-rojo",
                            "us:caguas",
                            "us:ca",
                            "us:canóvanas",
                            "us:carolina",
                            "us:cataño",
                            "us:cayey",
                            "us:ceiba",
                            "us:cidra",
                            "us:co",
                            "us:ct",
                            "us:corozal",
                            "us:de",
                            "us:dc",
                            "us:dorado",
                            "us:fajardo",
                            "us:fl",
                            "us:ga",
                            "us:guayama",
                            "us:guaynabo",
                            "us:gurabo",
                            "us:guánica",
                            "us:hatillo",
                            "us:hi",
                            "us:hormigueros",
                            "us:humacao",
                            "us:id",
                            "us:il",
                            "us:in",
                            "us:ia",
                            "us:isabela",
                            "us:juana-díaz",
                            "us:juncos",
                            "us:ks",
                            "us:ky",
                            "us:lajas",
                            "us:lares",
                            "us:las-piedras",
                            "us:la",
                            "us:loíza",
                            "us:me",
                            "us:manatí",
                            "us:md",
                            "us:ma",
                            "us:maunabo",
                            "us:mayagüez",
                            "us:mi",
                            "us:mn",
                            "us:ms",
                            "us:mo",
                            "us:mt",
                            "us:naguabo",
                            "us:ne",
                            "us:nv",
                            "us:nh",
                            "us:nj",
                            "us:nm",
                            "us:ny",
                            "us:nc",
                            "us:nd",
                            "us:oh",
                            "us:ok",
                            "us:or",
                            "us:pa",
                            "us:peñuelas",
                            "us:ponce",
                            "us:quebradillas",
                            "us:ri",
                            "us:rincón",
                            "us:río-grande",
                            "us:salinas",
                            "us:san-germán",
                            "us:san-juan",
                            "us:san-lorenzo",
                            "us:san-sebastián",
                            "us:santa-isabel",
                            "us:sc",
                            "us:sd",
                            "us:tn",
                            "us:tx",
                            "us:toa-alta",
                            "us:toa-baja",
                            "us:trujillo-alto",
                            "us:ut",
                            "us:vega-alta",
                            "us:vega-baja",
                            "us:vt",
                            "us:vieques",
                            "us:va",
                            "us:wa",
                            "us:wv",
                            "us:wi",
                            "us:wy",
                            "us:yabucoa",
                            "us:yauco",
                            "us:aguas-buenas",
                            "us:luquillo",
                            "fr:all",
                            "fr:ara",
                            "fr:bfc",
                            "fr:bre",
                            "fr:cvl",
                            "fr:cor",
                            "fr:ges",
                            "fr:hdf",
                            "fr:nor",
                            "fr:naq",
                            "fr:occ",
                            "fr:pdl",
                            "fr:pac",
                            "fr:idf",
                            "gt:all",
                            "gt:av",
                            "gt:cm",
                            "gt:es",
                            "gt:gu",
                            "gt:qz",
                            "gt:sa",
                            "ie:all",
                            "ie:cw",
                            "ie:cn",
                            "ie:ce",
                            "ie:co",
                            "ie:dl",
                            "ie:d",
                            "ie:g",
                            "ie:ky",
                            "ie:ke",
                            "ie:kk",
                            "ie:ls",
                            "ie:lm",
                            "ie:lk",
                            "ie:ld",
                            "ie:lh",
                            "ie:mo",
                            "ie:mh",
                            "ie:oy",
                            "ie:rn",
                            "ie:so",
                            "ie:ta",
                            "ie:wd",
                            "ie:wh",
                            "ie:wx",
                            "ie:ww",
                            "it:all",
                            "it:campania",
                            "it:emilia-romagna",
                            "it:lazio",
                            "it:lombardia",
                            "it:piemonte",
                            "it:puglia",
                            "it:toscana",
                            "it:veneto",
                            "jp:all",
                            "jp:mie",
                            "jp:kyoto",
                            "jp:saga",
                            "jp:hyogo",
                            "jp:hokkaido",
                            "jp:chiba",
                            "jp:wakayama",
                            "jp:saitama",
                            "jp:oita",
                            "jp:osaka",
                            "jp:nara",
                            "jp:miyagi",
                            "jp:miyazaki",
                            "jp:toyama",
                            "jp:yamaguchi",
                            "jp:yamagata",
                            "jp:yamanashi",
                            "jp:gifu",
                            "jp:okayama",
                            "jp:iwate",
                            "jp:shimane",
                            "jp:hiroshima",
                            "jp:tokushima",
                            "jp:ehime",
                            "jp:aichi",
                            "jp:niigata",
                            "jp:tokyo",
                            "jp:tochigi",
                            "jp:okinawa",
                            "jp:shiga",
                            "jp:kumamoto",
                            "jp:ishikawa",
                            "jp:kanagawa",
                            "jp:fukui",
                            "jp:fukuoka",
                            "jp:fukushima",
                            "jp:akita",
                            "jp:gunma",
                            "jp:ibaraki",
                            "jp:nagasaki",
                            "jp:nagano",
                            "jp:aomori",
                            "jp:shizuoka",
                            "jp:kagawa",
                            "jp:kochi",
                            "jp:tottori",
                            "jp:kagoshima",
                            "ke:all",
                            "ke:central",
                            "ke:coast",
                            "ke:eastern",
                            "ke:nairobi",
                            "ke:nyanza",
                            "ke:rift-valley",
                            "lu:all",
                            "lu:ca",
                            "lu:es",
                            "lu:gr",
                            "lu:lux",
                            "lu:me",
                            "lu:rm",
                            "mx:all",
                            "mx:ag",
                            "mx:bc",
                            "mx:bs",
                            "mx:cm",
                            "mx:cs",
                            "mx:ch",
                            "mx:co",
                            "mx:cl",
                            "mx:df",
                            "mx:dg",
                            "mx:gt",
                            "mx:gr",
                            "mx:hg",
                            "mx:ja",
                            "mx:mi",
                            "mx:mo",
                            "mx:em",
                            "mx:na",
                            "mx:nl",
                            "mx:oa",
                            "mx:pu",
                            "mx:qt",
                            "mx:qr",
                            "mx:sl",
                            "mx:si",
                            "mx:so",
                            "mx:tb",
                            "mx:tm",
                            "mx:tl",
                            "mx:ve",
                            "mx:yu",
                            "mx:za",
                            "nz:all",
                            "nz:auk",
                            "nz:bop",
                            "nz:can",
                            "nz:gis",
                            "nz:hkb",
                            "nz:mwt",
                            "nz:mbh",
                            "nz:nsn",
                            "nz:ntl",
                            "nz:ota",
                            "nz:tki",
                            "nz:tas",
                            "nz:wko",
                            "nz:wgn",
                            "nz:wtc",
                            "nz:stl",
                            "pa:all",
                            "pa:chiriquí",
                            "pa:panamá",
                            "pa:panamá-oeste",
                            "pa:veraguas",
                            "nl:all",
                            "nl:drenthe",
                            "nl:flevoland",
                            "nl:friesland",
                            "nl:gelderland",
                            "nl:groningen",
                            "nl:limburg",
                            "nl:noord-brabant",
                            "nl:noord-holland",
                            "nl:overijssel",
                            "nl:utrecht",
                            "nl:zeeland",
                            "nl:zuid-holland",
                            "pl:all",
                            "pl:dolnoslaskie",
                            "pl:kujawsko-pomorskie",
                            "pl:lubelskie",
                            "pl:lubuskie",
                            "pl:mazowieckie",
                            "pl:malopolskie",
                            "pl:opolskie",
                            "pl:podkarpackie",
                            "pl:podlaskie",
                            "pl:pomorskie",
                            "pl:warminsko-mazurskie",
                            "pl:wielkopolskie",
                            "pl:zachodniopomorskie",
                            "pl:lódzkie",
                            "pl:slaskie",
                            "pl:swietokrzyskie",
                            "pt:all",
                            "pt:alentejo",
                            "pt:algarve",
                            "pt:centro",
                            "pt:lisboa",
                            "pt:norte",
                            "pt:região-autónoma-da-madeira",
                            "pt:região-autónoma-dos-açores",
                            "do:all",
                            "do:cibao-norte",
                            "do:enriquillo",
                            "do:higuamo",
                            "do:ozama-o-metropolitana",
                            "do:valdesia",
                            "do:yuma",
                            "do:cibao-nordeste",
                            "do:cibao-sur",
                            "gb:all",
                            "gb:eng",
                            "gb:nir",
                            "gb:sct",
                            "gb:wls",
                            "sv:all",
                            "sv:ca",
                            "sv:li",
                            "sv:un",
                            "sv:sm",
                            "sv:ss",
                            "sv:sa",
                            "lk:all",
                            "lk:central",
                            "lk:north-central",
                            "lk:north-western",
                            "lk:northern",
                            "lk:sabaragamuwa",
                            "lk:southern",
                            "lk:uva",
                            "lk:western",
                            "se:all",
                            "se:blekinge",
                            "se:dalarna",
                            "se:gotland",
                            "se:gävleborg",
                            "se:halland",
                            "se:jämtland",
                            "se:jönköping",
                            "se:kalmar",
                            "se:kronoberg",
                            "se:norrbotten",
                            "se:skåne",
                            "se:stockholm",
                            "se:södermanland",
                            "se:uppsala",
                            "se:värmland",
                            "se:västerbotten",
                            "se:västernorrland",
                            "se:västmanland",
                            "se:västra-götaland",
                            "se:örebro",
                            "se:östergötland",
                            "ch:all",
                            "ch:ag",
                            "ch:ar",
                            "ch:bl",
                            "ch:bs",
                            "ch:be",
                            "ch:fr",
                            "ch:ge",
                            "ch:gl",
                            "ch:gr",
                            "ch:ju",
                            "ch:lu",
                            "ch:ne",
                            "ch:nw",
                            "ch:ow",
                            "ch:sh",
                            "ch:sz",
                            "ch:so",
                            "ch:sg",
                            "ch:tg",
                            "ch:ti",
                            "ch:ur",
                            "ch:vs",
                            "ch:vd",
                            "ch:zg",
                            "ch:zh",
                            "tw:all",
                            "tw:nan",
                            "tw:txg",
                            "tw:tpe",
                            "tw:tnn",
                            "tw:ttt",
                            "tw:cyi",
                            "tw:cyq",
                            "tw:kee",
                            "tw:ila",
                            "tw:pif",
                            "tw:cha",
                            "tw:nwt",
                            "tw:hsz",
                            "tw:hsq",
                            "tw:tao",
                            "tw:pen",
                            "tw:hua",
                            "tw:mia",
                            "tw:kin",
                            "tw:yun",
                            "tw:khh"
                        ],
                        "type": "string",
                        "description": "Optional. Pick **All regions** for a full country sweep, or one region (e.g. Île-de-France)."
                    },
                    "startUrls": {
                        "title": "Restaurant URLs",
                        "type": "array",
                        "description": "Example: `https://www.ubereats.com/fr/store/...`",
                        "items": {
                            "type": "object",
                            "required": [
                                "url"
                            ],
                            "properties": {
                                "url": {
                                    "type": "string",
                                    "title": "URL of a web page",
                                    "format": "uri"
                                }
                            }
                        }
                    },
                    "maxResults": {
                        "title": "Max restaurants",
                        "minimum": 0,
                        "type": "integer",
                        "description": "**City:** cap per city. **Territory:** total cap. **URLs:** ignored.",
                        "default": 15
                    },
                    "categories": {
                        "title": "Cuisine filter",
                        "type": "array",
                        "description": "Narrow to one or more cuisines. **Clear all** to include every restaurant in the area. City mode uses the first selected cuisine.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "halal",
                                "fast-food",
                                "japanese",
                                "pizza",
                                "burger",
                                "sushi",
                                "thai",
                                "chinese",
                                "indian",
                                "mediterranean",
                                "vegetarian",
                                "vegan",
                                "bakery",
                                "breakfast",
                                "kebab",
                                "mexican",
                                "italian",
                                "french",
                                "korean",
                                "american",
                                "seafood",
                                "desserts"
                            ],
                            "enumTitles": [
                                "Halal",
                                "Fast food",
                                "Japanese",
                                "Pizza",
                                "Burger",
                                "Sushi",
                                "Thai",
                                "Chinese",
                                "Indian",
                                "Mediterranean",
                                "Vegetarian",
                                "Vegan",
                                "Bakery",
                                "Breakfast",
                                "Kebab",
                                "Mexican",
                                "Italian",
                                "French",
                                "Korean",
                                "American",
                                "Seafood",
                                "Desserts"
                            ]
                        },
                        "default": [
                            "fast-food"
                        ]
                    },
                    "collectEmails": {
                        "title": "EU / US email disclosure (proxy)",
                        "enum": [
                            "no",
                            "yes"
                        ],
                        "type": "string",
                        "description": "**No (default):** fast HTTP — emails still export when visible on the page. **Yes:** routes through France or US residential proxy so chain / EU legal blocks can load (slower, higher cost). Relay inboxes are flagged in the dataset.",
                        "default": "no"
                    },
                    "proxyCountryCode": {
                        "title": "Disclosure region",
                        "enum": [
                            "FR",
                            "US"
                        ],
                        "type": "string",
                        "description": "Only when **EU / US email disclosure** is **Yes**. **France** for Europe, **United States** for North America.",
                        "default": "FR"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
