# Talabat Scraper (`solidcode/talabat-scraper`) Actor

\[💰 $1.0 / 1K] Extract restaurants and full menus from Talabat across 9 MENA markets (UAE, Saudi, Kuwait, Qatar, Bahrain, Oman, Egypt, Jordan, Iraq). Get name, cuisine, rating, coordinates, and menu items with price, image and customization options.

- **URL**: https://apify.com/solidcode/talabat-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** E-commerce, Developer tools, Automation
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 restaurants

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## Talabat Scraper

Pull restaurants and full menus from Talabat across 9 MENA markets — vendor names, cuisines, star ratings, geo-coordinates, delivery fees, and every menu item with its price, image, and customization options, all in the local currency of each country. Built for food-delivery market analysts, q-commerce researchers, and restaurant lead-generation teams who need clean menu and pricing data across the Middle East without manual copy-paste from the app.

### Why This Scraper?

- **9 MENA markets in one actor** — United Arab Emirates, Saudi Arabia, Kuwait, Qatar, Bahrain, Oman, Egypt, Jordan, and Iraq, each returned in its own local currency (AED, SAR, KWD, QAR, BHD, OMR, EGP, JOD, IQD).
- **Full menu extraction, not just restaurant summaries** — every item on a restaurant's menu as its own row: name, description, price, menu category/section, and image URL.
- **Per-item customization capture** — turn on choices to get each item's add-ons, sizes, and toppings, with every option's name and price plus min/max selection quantities and whether the choice is mandatory.
- **Original vs. discounted price on every item** — the current price and the pre-discount `oldPrice` side by side, so you can spot promotions and measure discount depth.
- **Restaurant geo + delivery economics** — latitude/longitude coordinates, delivery fee, delivery time, and minimum order value for every vendor, ready for mapping and unit-economics analysis.
- **Cuisine and minimum-rating filters** — narrow to 14 named cuisines (burgers, pizza, arabic, shawarma, sushi, and more) and drop any restaurant below a 1–5 star threshold.
- **Two clean output tabs that join on restaurant id** — Restaurants and Menu Items land in separate dataset views, linked by branch id so you can flatten menus back to their vendor in one step.
- **Four ways to target vendors** — search any term per market, sweep a whole city or delivery-area URL, pull a single restaurant URL, or drop in a bare restaurant id — mix and match dozens of inputs in one run and get one deduplicated result set.

### Use Cases

**Market & Pricing Research**
- Benchmark meal prices for the same cuisine across all 9 MENA markets
- Track discount depth by comparing item price against pre-discount price
- Measure delivery fees and minimum-order thresholds by area and country
- Build a local-currency price index for burgers, pizza, or shawarma per market

**Menu & Product Intelligence**
- Catalog a competitor's full menu with categories, descriptions, and images
- Analyze add-on and upsell strategy from item customization options
- Detect new items or removed dishes by re-running against a saved menu
- Compare portion/size pricing across a restaurant's choice sections

**Competitive Analysis**
- Map how a chain prices the same item across its branches and markets
- Rank restaurants by star rating and review volume within a cuisine
- Spot which vendors run the deepest promotions in a given area
- Compare delivery time and delivery fee against direct competitors

**Lead Generation & Sales**
- Build vendor lists filtered by cuisine, rating, and market for outreach
- Surface high-rated restaurants not yet on a competing platform
- Segment prospects by grocery vs. restaurant and by delivery economics

### Getting Started

#### Search a Single Market

The simplest run — burgers in the UAE, restaurants only:

```json
{
    "search": ["burgers"],
    "country": "uae",
    "includeMenu": false,
    "maxResults": 25
}
````

#### Restaurants With Full Menus and Filters

Pizza places in Saudi Arabia rated 4+, with every menu item, capped for predictable cost:

```json
{
    "search": ["pizza"],
    "country": "sa",
    "cuisine": "pizza",
    "minRating": 4,
    "includeMenu": true,
    "maxMenuItemsPerRestaurant": 200,
    "maxResults": 50
}
```

#### Full Detail With Customization Options

Everything — menus plus each item's add-ons, sizes, and toppings:

```json
{
    "search": ["sushi", "japanese"],
    "country": "qa",
    "includeMenu": true,
    "includeMenuChoices": true,
    "maxMenuItemsPerRestaurant": 300,
    "maxResults": 40
}
```

#### Scrape Known Restaurants by URL

Paste Talabat restaurant or area URLs directly — the Search Filters are ignored for these:

```json
{
    "startUrls": [
        "https://www.talabat.com/uae/restaurant/713182/mcdonalds"
    ],
    "includeMenu": true
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `[]` | Paste Talabat restaurant or area URLs (or bare restaurant slugs). Used as-is, so the Search Filters below are ignored for these entries. |
| `search` | string\[] | `["burgers"]` | Search terms, one per line (e.g. "burgers", "pizza", "sushi"). Each term is searched separately in the chosen country. Leave empty when pasting URLs. |

#### Search Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `country` | select | `United Arab Emirates` | Which Talabat market to search: United Arab Emirates, Saudi Arabia, Kuwait, Qatar, Bahrain, Oman, Egypt, Jordan, or Iraq. |
| `cuisine` | select | `Any` | Only include restaurants serving this cuisine: Any, Burgers, Pizza, Arabic, Shawarma, Chicken, Indian, Italian, Chinese, Japanese, Sushi, Healthy, Desserts, Breakfast, or Grocery. |
| `minRating` | integer | null | Only include restaurants with an average rating at or above this value (1–5). Leave empty for no minimum. |

#### Detail & Extras

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeMenu` | boolean | `true` | Visit each restaurant and return every menu item as its own row (category, name, description, price, old price, image). Turn off to keep only restaurant summary rows. |
| `includeMenuChoices` | boolean | `false` | For each menu item, also collect its customization options (sizes, add-ons, toppings) with prices and whether the choice is mandatory. Only applies when Include Menu Items is on. |
| `maxMenuItemsPerRestaurant` | integer | `0` | Cap on how many menu items to collect per restaurant. Set to 0 to collect every item. Useful to keep costs predictable on large menus. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum number of restaurants to collect across all searches and URLs. Set to 0 for as many as possible. Menu items are additional to this count. |

### Output

Every row carries a `recordType` field — `restaurant` or `menuItem` — and the two types land in separate dataset tabs (Restaurants and Menu Items) that join on the restaurant's branch id.

#### Restaurant (`recordType: "restaurant"`)

```json
{
    "recordType": "restaurant",
    "restaurantId": "1163",
    "branchId": "713182",
    "name": "McDonald's",
    "slug": "mcdonalds",
    "cuisine": ["Burgers", "American", "Sandwiches"],
    "rating": 4.4,
    "ratingsCount": 12043,
    "logo": "https://images.deliveryhero.io/image/talabat/mcdonalds-logo.jpg",
    "latitude": 25.1972,
    "longitude": 55.2744,
    "acceptsCash": true,
    "acceptsCard": true,
    "deliveryFee": 5.0,
    "minimumOrder": 20.0,
    "deliveryTime": "30-45",
    "isGrocery": false,
    "menuItemCount": 87,
    "country": "uae",
    "currency": "AED",
    "url": "https://www.talabat.com/uae/restaurant/713182/mcdonalds",
    "scrapedAt": "2026-07-05T14:30:00Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"restaurant"` |
| `restaurantId` | string | Talabat chain/restaurant id (shared across branches) |
| `branchId` | string | Unique branch id — the join key for menu items |
| `name` | string | Restaurant / vendor name |
| `slug` | string | URL slug for the vendor |
| `cuisine` | string\[] | Cuisine tags |
| `rating` | number | Average star rating (1–5) |
| `ratingsCount` | number | Number of ratings |
| `logo` | string | Vendor logo image URL |
| `latitude` | number | Branch latitude |
| `longitude` | number | Branch longitude |
| `acceptsCash` | boolean | Whether cash on delivery is accepted |
| `acceptsCard` | boolean | Whether card payment is accepted |
| `deliveryFee` | number | Delivery fee in local currency |
| `minimumOrder` | number | Minimum order value in local currency |
| `deliveryTime` | string | Estimated delivery time (minutes) |
| `isGrocery` | boolean | Whether the vendor is a grocery store |
| `menuItemCount` | number | Number of menu items found for this restaurant |
| `country` | string | Market slug (uae, ksa, kuwait, etc.) |
| `currency` | string | Local currency code (AED, SAR, KWD, …) |
| `url` | string | Direct Talabat restaurant URL |
| `scrapedAt` | string | ISO timestamp of extraction |

#### Menu Item (`recordType: "menuItem"`)

Emitted when `includeMenu` is on — one row per item.

```json
{
    "recordType": "menuItem",
    "restaurantBranchId": "713182",
    "restaurantName": "McDonald's",
    "restaurantSlug": "mcdonalds",
    "itemId": "48210293",
    "category": "Chicken",
    "name": "McCrispy Deluxe",
    "description": "Crispy chicken fillet with lettuce and mayo in a sourdough-style bun.",
    "price": 27.0,
    "oldPrice": 32.0,
    "currency": "AED",
    "image": "https://images.deliveryhero.io/image/talabat/mccrispy.jpg",
    "hasChoices": true,
    "choiceSections": [
        {
            "sectionName": "Choose your size",
            "minQuantity": 1,
            "maxQuantity": 1,
            "isMandatory": true,
            "isSingleSelection": true,
            "options": [
                { "name": "Medium Meal", "price": 6.0, "oldPrice": null },
                { "name": "Large Meal", "price": 9.0, "oldPrice": null }
            ]
        }
    ],
    "restaurantUrl": "https://www.talabat.com/uae/restaurant/713182/mcdonalds",
    "scrapedAt": "2026-07-05T14:30:00Z"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"menuItem"` |
| `restaurantBranchId` | string | Parent restaurant branch id — joins to the restaurant row |
| `restaurantName` | string | Parent restaurant name |
| `restaurantSlug` | string | Parent restaurant URL slug |
| `itemId` | string | Unique menu item id |
| `category` | string | Menu section / category the item belongs to |
| `name` | string | Item name |
| `description` | string | Item description |
| `price` | number | Current price in local currency |
| `oldPrice` | number | Pre-discount price, or `null` when the item is not discounted |
| `currency` | string | Local currency code |
| `image` | string | Item image URL |
| `hasChoices` | boolean | Whether the item has customization options |
| `choiceSections` | object\[] | Customization sections — populated only when `includeMenuChoices` is on |
| `restaurantUrl` | string | Direct URL of the parent restaurant |
| `scrapedAt` | string | ISO timestamp of extraction |

Each entry in `choiceSections` carries `sectionName`, `minQuantity`, `maxQuantity`, `isMandatory`, `isSingleSelection`, and an `options` list where each option has a `name`, `price`, and `oldPrice`.

### Tips for Best Results

- **Start small to test.** Set `maxResults` to 10–25 on your first run to confirm the market, cuisine, and menu depth match what you need, then scale up.
- **Leave `includeMenuChoices` off unless you need add-ons.** Customization capture makes an extra request per item that has choices and noticeably increases run time — turn it on only when you specifically want sizes and add-on pricing.
- **Cap large menus with `maxMenuItemsPerRestaurant`.** Grocery and large vendors can carry 300–600+ items. A cap of 100–200 keeps menu-item volume and cost predictable while still covering the core menu.
- **Turn off `includeMenu` for a fast vendor census.** If you only need the restaurant list — names, ratings, coordinates, delivery economics — switch menus off for a much quicker, cheaper run.
- **Match the cuisine filter to the market.** Cuisine is filtered against each vendor's own tags, so pairing a focused search term ("shawarma") with the matching cuisine gives the tightest, most relevant set.
- **Use `oldPrice` to find promotions.** Any item where `oldPrice` is non-null is currently discounted — filter on it downstream to build a live deals feed per market.
- **Join on branch id.** Every menu item's `restaurantBranchId` matches a restaurant row's `branchId`, so you can flatten menus back to their vendor for per-restaurant rollups.

### Pricing

**From $1.00 per 1,000 restaurants + $0.20 per 1,000 menu items.** You pay per result you actually collect — restaurants and menu items are billed separately, so a restaurants-only run never pays for menu data.

| Event | Price per 1,000 |
|-------|-----------------|
| Restaurant | $1.00 |
| Menu item | $0.20 |

**No compute or time-based charges — you pay per result, plus a small fixed per-run start fee.** Loyalty-tier discounts (Bronze, Silver, Gold) apply automatically on the Console and lower the per-restaurant rate — from $1.20 with no discount down to $1.00 at Gold.

Because menu items are optional and capped, you control total cost with `includeMenu` and `maxMenuItemsPerRestaurant`. Here is what typical restaurant/menu mixes cost:

| Run | Restaurant cost | Menu-item cost | Total |
|-----|-----------------|----------------|-------|
| 50 restaurants, ~40 items each (2,000 items) | $0.05 | $0.40 | $0.45 |
| 200 restaurants, ~60 items each (12,000 items) | $0.20 | $2.40 | $2.60 |
| 1,000 restaurants, ~50 items each (50,000 items) | $1.00 | $10.00 | $11.00 |
| 1,000 restaurants, menus off | $1.00 | $0.00 | $1.00 |

Restaurant costs above use the Gold rate; loyalty discounts lower them further. Platform fees depend on your Apify plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom APIs on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor is designed for legitimate market research, pricing analysis, menu intelligence, and lead generation. Users are responsible for complying with applicable laws and Talabat's terms of service, including making reasonable-rate requests and respecting content usage rules for any menu content, images, and vendor data collected. Do not use extracted data for spam, harassment, or any illegal purpose.

# Actor input Schema

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

Paste one or more Talabat restaurant or area URLs (e.g. https://www.talabat.com/uae/restaurant/12345/example), or bare restaurant slugs. Whatever you paste is used as-is, so the Search Filters below are ignored for these entries. Use this when you already found the restaurants on the site.

## `search` (type: `array`):

What to look for, one term per line (e.g. 'burgers', 'pizza', 'sushi', 'mcdonalds'). Each term is searched separately in the chosen country. Leave empty when you are pasting URLs above.

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

Which Talabat market to search in.

## `cuisine` (type: `string`):

Only include restaurants serving this cuisine. Choose 'Any' to include every cuisine found.

## `minRating` (type: `integer`):

Only include restaurants with an average rating at or above this value (1-5). Leave empty for no minimum.

## `includeMenu` (type: `boolean`):

Visit each restaurant to collect its full menu and return every item as its own result row (category, name, description, price, old price, image). A restaurant typically has 30-150 items; a large or grocery vendor can have 300+ items, and each item collected is returned and billed as a separate result. Turn off to keep only the restaurant summary rows (name, cuisine, rating, coordinates, payment options).

## `includeMenuChoices` (type: `boolean`):

For each menu item, also collect its customization options (sizes, add-ons, toppings) with prices and whether a choice is mandatory. Adds a choice-sections list inside each menu-item row. Only applies when 'Include Menu Items' is on.

## `maxMenuItemsPerRestaurant` (type: `integer`):

Cap on how many menu items to collect per restaurant. Set to 0 to collect every item (up to a built-in safety cap). Useful to keep costs predictable on large menus. Ignored when 'Include Menu Items' is off.

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

Maximum number of restaurants to collect across all searches and URLs. Set to 0 for as many as possible (up to a built-in safety cap). Menu items are additional to this count. The box starts at 10 so a first test run finishes quickly — raise it to collect hundreds.

## Actor input object example

```json
{
  "startUrls": [
    "https://www.talabat.com/uae/restaurant/713182/mcdonalds"
  ],
  "search": [
    "burgers"
  ],
  "country": "uae",
  "cuisine": "any",
  "includeMenu": true,
  "includeMenuChoices": false,
  "maxMenuItemsPerRestaurant": 200,
  "maxResults": 10
}
```

# Actor output Schema

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

Every record from the run in one place — restaurants and menu items — distinguished by `recordType`.

## `restaurants` (type: `string`):

Restaurants only, with name, cuisine, rating, ratings count, coordinates, payment options, delivery info, and menu item count.

## `menuItems` (type: `string`):

Menu items only, each linked to its restaurant, with category, name, description, price, old price, and image. Present only when 'Include Menu Items' is enabled.

# 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 = {
    "startUrls": [
        "https://www.talabat.com/uae/restaurant/713182/mcdonalds"
    ],
    "search": [
        "burgers"
    ],
    "country": "uae",
    "cuisine": "any",
    "includeMenu": true,
    "includeMenuChoices": false,
    "maxMenuItemsPerRestaurant": 200,
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/talabat-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 = {
    "startUrls": ["https://www.talabat.com/uae/restaurant/713182/mcdonalds"],
    "search": ["burgers"],
    "country": "uae",
    "cuisine": "any",
    "includeMenu": True,
    "includeMenuChoices": False,
    "maxMenuItemsPerRestaurant": 200,
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/talabat-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 '{
  "startUrls": [
    "https://www.talabat.com/uae/restaurant/713182/mcdonalds"
  ],
  "search": [
    "burgers"
  ],
  "country": "uae",
  "cuisine": "any",
  "includeMenu": true,
  "includeMenuChoices": false,
  "maxMenuItemsPerRestaurant": 200,
  "maxResults": 10
}' |
apify call solidcode/talabat-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Talabat Scraper",
        "description": "[💰 $1.0 / 1K] Extract restaurants and full menus from Talabat across 9 MENA markets (UAE, Saudi, Kuwait, Qatar, Bahrain, Oman, Egypt, Jordan, Iraq). Get name, cuisine, rating, coordinates, and menu items with price, image and customization options.",
        "version": "1.0",
        "x-build-id": "WQe8LTpWp2jU2lJcZ"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~talabat-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-talabat-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/solidcode~talabat-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-talabat-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/solidcode~talabat-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-talabat-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": {
                    "startUrls": {
                        "title": "Talabat URLs",
                        "type": "array",
                        "description": "Paste one or more Talabat restaurant or area URLs (e.g. https://www.talabat.com/uae/restaurant/12345/example), or bare restaurant slugs. Whatever you paste is used as-is, so the Search Filters below are ignored for these entries. Use this when you already found the restaurants on the site.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "search": {
                        "title": "Search Terms",
                        "type": "array",
                        "description": "What to look for, one term per line (e.g. 'burgers', 'pizza', 'sushi', 'mcdonalds'). Each term is searched separately in the chosen country. Leave empty when you are pasting URLs above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "country": {
                        "title": "Country / Market",
                        "enum": [
                            "uae",
                            "sa",
                            "kw",
                            "qa",
                            "bh",
                            "om",
                            "eg",
                            "jo",
                            "iq"
                        ],
                        "type": "string",
                        "description": "Which Talabat market to search in.",
                        "default": "uae"
                    },
                    "cuisine": {
                        "title": "Cuisine",
                        "enum": [
                            "any",
                            "burgers",
                            "pizza",
                            "arabic",
                            "shawarma",
                            "chicken",
                            "indian",
                            "italian",
                            "chinese",
                            "japanese",
                            "sushi",
                            "healthy",
                            "desserts",
                            "breakfast",
                            "grocery"
                        ],
                        "type": "string",
                        "description": "Only include restaurants serving this cuisine. Choose 'Any' to include every cuisine found.",
                        "default": "any"
                    },
                    "minRating": {
                        "title": "Minimum Rating",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Only include restaurants with an average rating at or above this value (1-5). Leave empty for no minimum."
                    },
                    "includeMenu": {
                        "title": "Include Menu Items",
                        "type": "boolean",
                        "description": "Visit each restaurant to collect its full menu and return every item as its own result row (category, name, description, price, old price, image). A restaurant typically has 30-150 items; a large or grocery vendor can have 300+ items, and each item collected is returned and billed as a separate result. Turn off to keep only the restaurant summary rows (name, cuisine, rating, coordinates, payment options).",
                        "default": true
                    },
                    "includeMenuChoices": {
                        "title": "Include Customization Options",
                        "type": "boolean",
                        "description": "For each menu item, also collect its customization options (sizes, add-ons, toppings) with prices and whether a choice is mandatory. Adds a choice-sections list inside each menu-item row. Only applies when 'Include Menu Items' is on.",
                        "default": false
                    },
                    "maxMenuItemsPerRestaurant": {
                        "title": "Max Menu Items Per Restaurant",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap on how many menu items to collect per restaurant. Set to 0 to collect every item (up to a built-in safety cap). Useful to keep costs predictable on large menus. Ignored when 'Include Menu Items' is off.",
                        "default": 0
                    },
                    "maxResults": {
                        "title": "Max Restaurants",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of restaurants to collect across all searches and URLs. Set to 0 for as many as possible (up to a built-in safety cap). Menu items are additional to this count. The box starts at 10 so a first test run finishes quickly — raise it to collect hundreds.",
                        "default": 100
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
