# Deliveroo Scraper (`thirdwatch/deliveroo-scraper`) Actor

Scrape restaurant and menu data from Deliveroo - names, ratings, delivery times, full menus with prices across UK, UAE, and Europe.

- **URL**: https://apify.com/thirdwatch/deliveroo-scraper.md
- **Developed by:** [Thirdwatch](https://apify.com/thirdwatch) (community)
- **Categories:** Automation, E-commerce, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 results

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

## Deliveroo Scraper - Restaurants & Menus

> Scrape restaurant listings and full menus with prices from Deliveroo across 12 markets in the UK, Europe, Middle East, and Asia Pacific.

### What you get

Extract restaurant data from any Deliveroo neighborhood: names, ratings, delivery times, distances, cuisines, and delivery fees. Optionally scrape the full menu for each restaurant with item names, prices, descriptions, dietary tags, and more.

No login needed. No API key required.

Try it free -- click **Start** in the Input tab.

### Why scrape Deliveroo?

Deliveroo is one of the world's largest food delivery platforms. Whether you're doing market research, monitoring prices, or building a food industry dataset, Deliveroo provides rich restaurant and menu data across 12 countries.

**Use cases:**
- Market research on restaurant density and cuisine distribution
- Menu price monitoring and competitive benchmarking
- Restaurant rating and review analysis by neighborhood
- Food industry trend analysis across regions
- Location planning for new restaurant openings

### Output fields (Restaurant listings)

| Field | Description |
|-------|-------------|
| `name` | Restaurant name |
| `rating` | Rating text (e.g., "4.8 Excellent") |
| `rating_count` | Number of ratings (e.g., "500+") |
| `delivery_time` | Estimated delivery time |
| `distance` | Distance from the neighborhood center |
| `image_url` | Restaurant cover image URL |
| `restaurant_id` | Restaurant ID |
| `url` | Full URL to the restaurant's Deliveroo page |
| `city` | City name |
| `neighborhood` | Neighborhood name |
| `cuisines` | Cuisine types |
| `delivery_fee` | Delivery fee |
| `menu_items` | Full menu items (when menu scraping is enabled) |
| `scraped_at` | Timestamp of when the data was collected |

### Output fields (Menu items, when enabled)

| Field | Description |
|-------|-------------|
| `name` | Menu item name |
| `description` | Item description |
| `price` | Formatted price (e.g., "12.50 GBP") |
| `price_fractional` | Price in smallest currency unit (e.g., 1250 for 12.50 GBP) |
| `price_currency` | ISO currency code |
| `discounted_price` | Sale price when applicable |
| `popular` | Whether the item is marked as popular |
| `available` | Whether the item is currently available |
| `category` | Menu section name (e.g., "Pizzas", "Desserts") |
| `image` | Item image URL |
| `dietary_tags` | Dietary labels (vegetarian, vegan, gluten-free, etc.) |

### Example output

```json
{
    "name": "Pizza Express",
    "rating": "4.6 Excellent",
    "rating_count": "500+",
    "delivery_time": "20-30 min",
    "distance": "0.3 mi",
    "image_url": "https://rs-menus-api.roocdn.com/images/...",
    "restaurant_id": 12345,
    "url": "https://deliveroo.co.uk/menu/london/soho/pizza-express",
    "city": "london",
    "neighborhood": "soho",
    "menu_items": [
        {
            "name": "Margherita",
            "description": "Classic tomato sauce, mozzarella, fresh basil",
            "price": "11.95 GBP",
            "price_fractional": 1195,
            "price_currency": "GBP",
            "popular": true,
            "available": true,
            "category": "Pizzas",
            "image": "https://rs-menus-api.roocdn.com/images/...",
            "dietary_tags": ["vegetarian"]
        }
    ],
    "scraped_at": "2026-04-11T10:30:00.000Z"
}
````

### Input parameters

| Parameter | Required | Description |
|-----------|----------|-------------|
| `queries` | Yes | Location slugs in format `{city}/{neighborhood}` (e.g., "london/soho", "dubai/dubai-marina") |
| `domain` | No | Deliveroo market: co.uk, ae, fr, it, ie, be, nl, hk, sg, au, qa, kw (default: co.uk) |
| `maxResults` | No | Max restaurants per location (default: 100) |
| `scrapeMenu` | No | Also extract full menus with prices for each restaurant (default: off) |

### Supported markets

| Market | Domain | Example slug |
|--------|--------|-------------|
| United Kingdom | co.uk | london/soho |
| United Arab Emirates | ae | dubai/dubai-marina |
| France | fr | paris/le-marais |
| Italy | it | milan/centro |
| Ireland | ie | dublin/dublin-2 |
| Belgium | be | brussels/centre |
| Netherlands | nl | amsterdam/centrum |
| Hong Kong | hk | hong-kong/central |
| Singapore | sg | singapore/orchard |
| Australia | au | melbourne/cbd |
| Qatar | qa | doha/west-bay |
| Kuwait | kw | kuwait-city/salmiya |

### Tips

- **Find your slug** from any Deliveroo listing page URL (e.g., deliveroo.co.uk/restaurants/london/soho)
- **Start without menus** -- preview restaurant listings first, then enable menu scraping for the areas you need
- **Try multiple neighborhoods** -- each slug returns 150-240 restaurants
- **Use the Apify scheduler** to run weekly and track new restaurants and price changes

### Limitations

- Restaurant count per neighborhood varies (typically 150-240)
- Menu scraping takes longer as it visits each restaurant's page
- Some markets may have intermittent availability

### Related Actors

- [Talabat Scraper](https://apify.com/thirdwatch/talabat-scraper) -- Middle East restaurant data across 9 countries
- [Noon Food Scraper](https://apify.com/thirdwatch/noon-food-scraper) -- UAE and Saudi Arabia restaurants from Noon Food

# Actor input Schema

## `queries` (type: `array`):

City and neighborhood pairs to scrape restaurants from. Format: 'city/neighborhood'. Examples: 'london/soho', 'dubai/dubai-marina', 'paris/le-marais'. Find these from any Deliveroo listing page URL.

## `domain` (type: `string`):

Which Deliveroo market to search. Select the country where you want restaurant data.

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

Maximum number of restaurants to return per location query. Set high to get all available restaurants (typically 150-240 per neighborhood).

## `location` (type: `object`):

Latitude and longitude for address-based markets (UAE, Qatar, Kuwait, etc.) where area slugs don't work. Provide lat/lng directly OR use locationUrl instead. Example: {"lat": 25.2048, "lng": 55.2708} for Dubai Downtown.

## `locationUrl` (type: `string`):

Google Maps URL to extract coordinates from. Supported formats: 'https://maps.google.com/?q=25.2048,55.2708', 'https://www.google.com/maps/@25.2048,55.2708,15z', or any Google Maps URL with coordinates.

## `address` (type: `string`):

A human-readable address or place name to type into Deliveroo's address search (e.g., 'Dubai Mall', 'Downtown Dubai', 'JBR Beach'). Required for UAE and similar markets that don't have area-based URLs. Used with the location coordinates to set the delivery location.

## `scrapeMenu` (type: `boolean`):

If enabled, also scrapes the full menu (items, prices, descriptions, dietary tags) for each restaurant. This makes additional HTTP requests and takes longer.

## Actor input object example

```json
{
  "queries": [
    "london/soho"
  ],
  "domain": "co.uk",
  "maxResults": 100,
  "scrapeMenu": false
}
```

# 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 = {
    "queries": [
        "london/soho"
    ],
    "domain": "co.uk",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("thirdwatch/deliveroo-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 = {
    "queries": ["london/soho"],
    "domain": "co.uk",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("thirdwatch/deliveroo-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 '{
  "queries": [
    "london/soho"
  ],
  "domain": "co.uk",
  "maxResults": 100
}' |
apify call thirdwatch/deliveroo-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Deliveroo Scraper",
        "description": "Scrape restaurant and menu data from Deliveroo - names, ratings, delivery times, full menus with prices across UK, UAE, and Europe.",
        "version": "1.0",
        "x-build-id": "XNK5gyv1eAzlFo4bB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/thirdwatch~deliveroo-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-thirdwatch-deliveroo-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/thirdwatch~deliveroo-scraper/runs": {
            "post": {
                "operationId": "runs-sync-thirdwatch-deliveroo-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/thirdwatch~deliveroo-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-thirdwatch-deliveroo-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": {
                    "queries": {
                        "title": "Locations",
                        "type": "array",
                        "description": "City and neighborhood pairs to scrape restaurants from. Format: 'city/neighborhood'. Examples: 'london/soho', 'dubai/dubai-marina', 'paris/le-marais'. Find these from any Deliveroo listing page URL.",
                        "default": [],
                        "items": {
                            "type": "string"
                        }
                    },
                    "domain": {
                        "title": "Deliveroo Market",
                        "enum": [
                            "co.uk",
                            "ae",
                            "fr",
                            "it",
                            "ie",
                            "be",
                            "nl",
                            "hk",
                            "sg",
                            "au",
                            "qa",
                            "kw"
                        ],
                        "type": "string",
                        "description": "Which Deliveroo market to search. Select the country where you want restaurant data.",
                        "default": "co.uk"
                    },
                    "maxResults": {
                        "title": "Max Restaurants Per Query",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum number of restaurants to return per location query. Set high to get all available restaurants (typically 150-240 per neighborhood).",
                        "default": 100
                    },
                    "location": {
                        "title": "Location Coordinates",
                        "type": "object",
                        "description": "Latitude and longitude for address-based markets (UAE, Qatar, Kuwait, etc.) where area slugs don't work. Provide lat/lng directly OR use locationUrl instead. Example: {\"lat\": 25.2048, \"lng\": 55.2708} for Dubai Downtown."
                    },
                    "locationUrl": {
                        "title": "Google Maps URL",
                        "type": "string",
                        "description": "Google Maps URL to extract coordinates from. Supported formats: 'https://maps.google.com/?q=25.2048,55.2708', 'https://www.google.com/maps/@25.2048,55.2708,15z', or any Google Maps URL with coordinates."
                    },
                    "address": {
                        "title": "Address / Place Name",
                        "type": "string",
                        "description": "A human-readable address or place name to type into Deliveroo's address search (e.g., 'Dubai Mall', 'Downtown Dubai', 'JBR Beach'). Required for UAE and similar markets that don't have area-based URLs. Used with the location coordinates to set the delivery location."
                    },
                    "scrapeMenu": {
                        "title": "Scrape Full Menus",
                        "type": "boolean",
                        "description": "If enabled, also scrapes the full menu (items, prices, descriptions, dietary tags) for each restaurant. This makes additional HTTP requests and takes longer.",
                        "default": false
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
