# Deliveroo Scraper — Restaurants, Ratings & Full Menus (`hipersoft/deliveroo-scraper`) Actor

Scrape Deliveroo restaurants in any area: name, rating, review count, distance, delivery time, address, photos and the full menu with categories, item prices, descriptions and popular dishes. UK, Ireland, France, Italy, UAE and more. Export CSV/JSON.

- **URL**: https://apify.com/hipersoft/deliveroo-scraper.md
- **Developed by:** [hiper soft](https://apify.com/hipersoft) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.002 / restaurant

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

## What's an Apify Actor?

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

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

## How to integrate an Actor?

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

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

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

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

# README

## Deliveroo Scraper: Restaurants, Ratings, Delivery Times & Full Menus

**Deliveroo Scraper** extracts restaurant data from **Deliveroo**, one of the biggest food-delivery apps in the UK, Ireland, France, Italy, Belgium, the UAE, Kuwait, Qatar, Hong Kong and Singapore. For any **Deliveroo area** (e.g. London Soho, Manchester city centre, Paris Marais, Dubai Marina) you get every restaurant's **name, star rating, number of reviews, distance, estimated delivery time, photo and menu link**, and — with **full menu** enabled — the **address, currency, free-delivery threshold, menu categories and every menu item with price, discounted price, description, popularity, availability, calories and photo**. Export to **CSV, Excel or JSON**.

### What does Deliveroo Scraper do?

- 🍔 **All restaurants in an area**: paste any Deliveroo area page.
- ⭐ **Ratings**: star rating and review count.
- 🛵 **Delivery info**: distance and estimated delivery time.
- 📋 **Full menus**: categories, item names, descriptions, prices, discounted prices, popular dishes, availability and calories.
- 📍 **Address**: street address, neighbourhood and city.
- 🎁 **Free-delivery threshold** when offered.
- 🌍 **Multiple countries**: deliveroo.co.uk, .ie, .fr, .it, .be, .ae, .com.kw, .qa, .hk and .com.sg.
- 🔗 **Single restaurants**: paste a Deliveroo menu link to get just that restaurant.

### What data can you scrape from Deliveroo?

| Field | Description |
|---|---|
| Restaurant ID, name, link | Deliveroo restaurant and menu page |
| Rating, reviews | Star rating and review count |
| Distance, delivery time | From the area centre |
| Photo | Restaurant image |
| Address | Street, neighbourhood, city, country |
| Currency | Menu currency |
| Free delivery over | Minimum order for free delivery |
| Categories | Menu sections |
| Menu items | Name, category, description, price, discounted price, popular, available, calories, photo |

### Use cases for Deliveroo data

- **Restaurant owners and dark kitchens**: benchmark menu prices and ratings against competitors in your area.
- **Food brands and FMCG**: find restaurants that list your product category.
- **Market research**: map cuisines, price levels and delivery coverage by city.
- **Sales prospecting**: build lead lists of delivery restaurants for POS, packaging or marketing services.
- **Menu analytics**: compare dish prices across chains and independents.
- **Data journalism**: track food-delivery inflation over time.

### How to scrape Deliveroo

1. Click **Try for free** to open Deliveroo Scraper in Apify Console.
2. Open Deliveroo, choose an area and copy the link (or copy a restaurant's menu link).
3. Paste the links into **Deliveroo area or restaurant links**.
4. Keep **Include full menu** on if you need menus, set **Max restaurants per area** and click **Start**.
5. Download the data as **CSV, Excel or JSON**.

### Input

#### Example input

```json
{
  "startUrls": [
    { "url": "https://deliveroo.co.uk/restaurants/london/soho" },
    { "url": "https://deliveroo.co.uk/menu/London/marylebone/farmer-j-regent-street" }
  ],
  "includeMenu": true,
  "maxRestaurantsPerArea": 50
}
```

| Field | Description |
|---|---|
| **Deliveroo area or restaurant links** | Area pages and/or restaurant menu pages. |
| **Include full menu** | Adds address and the complete menu. |
| **Max restaurants per area** | Limit per area (0 = all listed). |
| **Max restaurants in total** | Overall limit (0 = no limit). |

### Output

#### Restaurant example

```json
{
  "restaurantId": "397802",
  "name": "Farmer J",
  "url": "https://deliveroo.co.uk/menu/London/marylebone/farmer-j-regent-street",
  "rating": 4.8,
  "ratingCount": "500+",
  "distance": "0.4 mi",
  "deliveryTimeMinutes": 15,
  "imageUrl": "https://rs-menus-api.roocdn.com/images/6ff6098f-2435-4e38-834a-7228dbd91218/image.jpeg?width=640&height=360&auto=webp&format=jpg&fit=crop",
  "address": "1 Cavendish Place, London, W1G0QF",
  "neighborhood": "Marylebone",
  "city": "london",
  "country": "GB",
  "currency": "GBP",
  "freeDeliveryOver": 10,
  "categories": ["Bundles", "Fieldtray Favourites"],
  "menuItemCount": 413,
  "menu": [
    {
      "name": "NEW: Fieldtray Bundle for 1",
      "category": "Bundles",
      "description": "Farmer J Bundles Make It Easy. Pick Your Fieldtray, Add a Drink and a Treat for the Full Farmer J Experience.",
      "price": 18.95,
      "discountedPrice": null,
      "popular": false,
      "available": true,
      "calories": null,
      "imageUrl": "https://rs-menus-api.roocdn.com/images/a33901cb-77b2-49f3-8aeb-51b21d4303f3/image.jpeg?width=640&height=360&auto=webp&format=jpg&fit=crop"
    }
  ],
  "area": "london/soho"
}
```

#### Output schema

| Field | Type | Description |
|---|---|---|
| `restaurantId`, `name`, `url` | string | Restaurant and menu link. |
| `rating`, `ratingCount` | mixed | Rating and review count. |
| `distance`, `deliveryTimeMinutes` | mixed | Delivery info. |
| `imageUrl` | string | Restaurant photo. |
| `address`, `neighborhood`, `city`, `country` | string | Location (with menu). |
| `currency`, `freeDeliveryOver` | mixed | Pricing info (with menu). |
| `deliversNow`, `menuDisabled` | boolean | Availability (with menu). |
| `categories`, `menuItemCount`, `menu` | mixed | Full menu (with menu). |
| `area`, `scrapedAt` | string | Source info. |

### How much does it cost to scrape Deliveroo?

Deliveroo Scraper uses **pay-per-restaurant** pricing: a small fixed price per restaurant, menu included, with automatic discounts on higher Apify plans. Residential proxy traffic is billed by Apify separately. See the **Pricing** tab for the exact price.

### More food and local data

- [Google Maps Scraper](https://apify.com/hipersoft/google-maps-scraper): restaurants and businesses from Google Maps.
- [Google Maps Reviews Scraper](https://apify.com/hipersoft/google-maps-reviews): restaurant reviews.

### FAQ

**Which countries are supported?**
All Deliveroo sites: UK, Ireland, France, Italy, Belgium, UAE, Kuwait, Qatar, Hong Kong and Singapore. Paste links from the matching site.

**How do I get an area link?**
Open Deliveroo, enter an address or pick a neighbourhood, and copy the link of the restaurant list.

**Are menu prices exact?**
Yes, they are the prices shown on Deliveroo at the time of the run, in the local currency.

**Do I need a proxy?**
Residential proxies are used by default for reliable results; keep the default setting.

**What formats can I export?**
CSV, Excel, JSON, XML, HTML and RSS, or read the results through the Apify API.

**Can I integrate Deliveroo Scraper with other apps?**
Deliveroo Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JS/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is it legal to scrape Deliveroo?**
The scraper only collects publicly visible restaurant and menu information. You are responsible for using the data in line with Deliveroo's terms.

### Related Actors

- [Google Maps Scraper](https://apify.com/hipersoft/google-maps-scraper)
- [Google Maps Reviews Scraper](https://apify.com/hipersoft/google-maps-reviews)

### Notes

Original clean-room implementation. Returns only public data. Not affiliated with Deliveroo.

# Actor input Schema

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

Deliveroo area pages (e.g. https://deliveroo.co.uk/restaurants/london/soho, https://deliveroo.fr/fr/restaurants/paris/marais) or restaurant menu pages (https://deliveroo.co.uk/menu/London/marylebone/farmer-j-regent-street).

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

Add the restaurant address and its full menu (categories, items, prices, descriptions, popular dishes).

## `maxRestaurantsPerArea` (type: `integer`):

0 means all restaurants listed for the area.

## `maxItems` (type: `integer`):

Stop the whole run after this many restaurants. 0 means no limit.

## `proxyConfiguration` (type: `object`):

Residential proxies are used by default for reliable results.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://deliveroo.co.uk/restaurants/london/soho"
    }
  ],
  "includeMenu": true,
  "maxRestaurantsPerArea": 20,
  "maxItems": 0,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

The results as dataset items.

# 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": [
        {
            "url": "https://deliveroo.co.uk/restaurants/london/soho"
        }
    ],
    "maxRestaurantsPerArea": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/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 = {
    "startUrls": [{ "url": "https://deliveroo.co.uk/restaurants/london/soho" }],
    "maxRestaurantsPerArea": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/deliveroo-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://deliveroo.co.uk/restaurants/london/soho"
    }
  ],
  "maxRestaurantsPerArea": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call hipersoft/deliveroo-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/deliveroo-scraper"
        }
    }
}
```

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

## OpenAPI specification

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