# Just Eat UK Scraper (`solidcode/justeat-co-uk-scraper`) Actor

\[💰 $3.0 / 1K] Extract restaurants and takeaways from Just Eat UK. Get name, cuisines, rating, review count, delivery ETA, fees, minimum order, address and coordinates. Turn on full details for the menu with prices, meal deals, opening hours, phone, and reviews. Search by postcode, area, or cuisine

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

## Pricing

from $3.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

## Just Eat UK Scraper

Pull restaurants and takeaways from Just Eat UK at scale — ratings, cuisines, delivery ETAs, fee bands, minimum-order values, full menus with item prices, opening hours, phone numbers, coordinates, and customer reviews. Search by UK postcode or area slug and filter by cuisine, service type, and rating, or paste ready-made Just Eat URLs. Built for food-delivery market analysts, restaurant-tech lead-gen teams, and menu-and-price monitoring teams who need Just Eat data as a clean dataset without copy-pasting listings one page at a time.

### Why This Scraper?

- **Restaurants, full menus, and reviews in one run** — three record types (`restaurant`, `menuItem`, `review`) from a single search. Competing tools split menus into a separate paid actor and skip reviews entirely; this collects all three together, already linked by restaurant.
- **Complete menu extraction, every item** — name, description, base price, every named size/option variation with its own price, meal-deal flags, dietary labels, and calorie/energy info when Just Eat lists it. Large grill, pizza, and grocery menus run to 300+ items — all captured.
- **16 cuisine filters** — Pizza, Burgers, Chinese, Indian, Italian, Kebab, Chicken, Japanese, Thai, Sushi, Breakfast, Desserts, Healthy, Vegan, Grocery, or Any.
- **Delivery economics on every restaurant** — delivery ETA window (min/max minutes), tiered delivery-fee bands, and the minimum-order value, all normalized to pounds.
- **Customer reviews with restaurant replies** — author, star rating, date, review text, and the restaurant's own reply, capped per restaurant so review-heavy places never blow up your run.
- **Contact and location built in** — phone number, full address (first line, city, postcode), and precise latitude/longitude coordinates on the restaurant row.
- **Structured weekly opening hours** — per-service (delivery and collection) open/close windows for every day, not a free-text blob.
- **Service, availability, and quality filters** — delivery-only or collection-only, open-now only, and a 1–5 minimum-rating floor, so you pull exactly the segment you want.
- **UK-wide coverage from a postcode** — enter any UK postcode or area slug and get the entire local area (often 2,000+ listings) in one search, no URL-building required.

### Use Cases

**Market Research**
- Map takeaway density and cuisine mix across any UK postcode
- Benchmark delivery ETAs and minimum-order values between neighbourhoods
- Track how many restaurants offer delivery vs. collection in a target area
- Size a local market by counting open restaurants per cuisine

**Menu & Price Intelligence**
- Monitor competitor item prices and meal-deal offers over time
- Compare average basket prices across chains and independents
- Track menu breadth (item counts) and variation pricing by cuisine
- Spot pricing gaps for a new restaurant entering an area

**Lead Generation**
- Build outreach lists of independent takeaways with phone and address
- Target restaurants by cuisine, rating, or delivery status for supplier sales
- Find newly listed restaurants to pitch delivery, POS, or marketing services
- Segment prospects by review volume and average star rating

**Competitive Analysis**
- Compare your restaurant's rating and review sentiment against rivals nearby
- Watch competitor opening hours and service-type coverage
- Track delivery-fee and minimum-order positioning across a catchment
- Identify which cuisines are over- or under-served locally

**Data Enrichment & Integration**
- Enrich a CRM with fresh Just Eat ratings, cuisines, and contact details
- Feed menu and price data into dashboards and BI tools
- Power food-discovery apps with structured restaurant and menu data
- Build alerting on new listings or price changes in a watched area

### Getting Started

#### Search by Postcode

The simplest run — one postcode, restaurants with their full menus:

```json
{
    "search": ["EC1A 1BB"],
    "maxResults": 25
}
````

#### Cuisine + Service Type + Reviews

Delivery-only pizza places rated 4+, with reviews instead of menus:

```json
{
    "search": ["M1 1AE"],
    "cuisine": "pizza",
    "serviceType": "delivery",
    "minRating": 4,
    "includeMenu": false,
    "includeReviews": true,
    "maxReviewsPerRestaurant": 30,
    "maxResults": 50
}
```

#### Multiple Areas with Full Detail

Sweep several postcodes and collect everything — menus and reviews:

```json
{
    "search": ["EC1A 1BB", "M1 1AE", "B1 1AA"],
    "openNowOnly": true,
    "includeDetails": true,
    "includeMenu": true,
    "includeReviews": true,
    "maxReviewsPerRestaurant": 20,
    "maxResults": 200
}
```

#### Paste Just Eat URLs

Already built a search on the site, or want specific restaurants? Paste area or restaurant URLs — search filters are read straight from each URL:

```json
{
    "startUrls": [
        "https://www.just-eat.co.uk/area/wc2-coventgarden",
        "https://www.just-eat.co.uk/restaurants-example/menu"
    ],
    "maxResults": 100
}
```

### Input Reference

#### Search & Location

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | string\[] | `["https://www.just-eat.co.uk/area/wc2-coventgarden"]` | Just Eat area/postcode or restaurant URLs. Filters in the URL are honoured as-is, so the Search Filters below are ignored for these URLs. |
| `search` | string\[] | `["EC1A 1BB"]` | UK postcodes (e.g. `EC1A 1BB`) or area slugs (e.g. `wc2-coventgarden`). Each entry is searched separately. Leave empty when pasting URLs. |

#### Filters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `cuisine` | string | `"any"` | Only include this cuisine. One of Any, Pizza, Burgers, Chinese, Indian, Italian, Kebab, Chicken, Japanese, Thai, Sushi, Breakfast, Desserts, Healthy, Vegan, Grocery. |
| `serviceType` | string | `"any"` | `Any` includes both; or restrict to `Delivery only` or `Collection only`. |
| `openNowOnly` | boolean | `false` | Only restaurants currently open and accepting orders. |
| `minRating` | integer | null | Only restaurants with a star rating at or above this value (1–5). Leave empty for no minimum. |

#### Detail & Extras

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `includeDetails` | boolean | `true` | Visit each restaurant to collect its full menu, opening hours, delivery fees, minimum order, phone, address, and coordinates. Turn off for a faster, cheaper listing-only run. |
| `includeMenu` | boolean | `true` | Return every menu item as its own result row (category, name, description, price, variations, meal-deal flags, nutrition). Only applies when Full Restaurant Details is on. |
| `includeReviews` | boolean | `false` | Return customer reviews as their own result rows (author, rating, date, text, reply). Only applies when Full Restaurant Details is on. |
| `maxReviewsPerRestaurant` | integer | `20` | Cap on reviews collected per restaurant (most recent first). Set to `0` to collect every available review. |

#### Limits

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum restaurants to collect across all URLs and searches. Set to `0` for as many as possible (up to a built-in safety cap). Menu items and reviews are additional to this count. |

### Output

Every row carries a `recordType` field — `restaurant`, `menuItem`, or `review` — so you can filter each type cleanly. The Restaurants, Menu Items, and Reviews tabs are ready-made subsets of the same run.

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

```json
{
    "recordType": "restaurant",
    "id": "183045",
    "uniqueName": "franco-manca-covent-garden",
    "name": "Franco Manca - Covent Garden",
    "logoUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/restaurants/183045.png",
    "cuisines": ["Pizza", "Italian"],
    "tags": ["Freshly Prepared", "Collection"],
    "rating": 4.6,
    "reviewCount": 1284,
    "firstLine": "6 Garrick Street",
    "city": "London",
    "postalCode": "WC2E 9BH",
    "latitude": 51.5121,
    "longitude": -0.1256,
    "phone": "+443301758760",
    "email": null,
    "isDelivery": true,
    "isCollection": true,
    "isOpenNow": true,
    "isPreorder": false,
    "isTemporarilyOffline": false,
    "isNew": false,
    "isPremier": true,
    "driveDistanceMeters": 640,
    "deliveryEtaMinutes": { "min": 25, "max": 40 },
    "deliveryFee": 2.49,
    "minimumOrder": 15.0,
    "deliveryFeeBands": [{ "minimumAmount": 0.0, "fee": 2.49 }],
    "openingHours": [
        { "serviceType": "Delivery", "days": [
            { "day": "Monday", "times": [{ "from": "11:00", "to": "22:00" }] }
        ]}
    ],
    "deals": [{ "description": "20% off orders over £20", "offerType": "percentage" }],
    "menuItemCount": 118,
    "reviewsCollected": 20,
    "url": "https://www.just-eat.co.uk/restaurants-franco-manca-covent-garden/menu",
    "scrapedAt": "2026-07-01T09:14:03.220000+00:00"
}
```

##### Core & Identity

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"restaurant"` |
| `id` | string | Just Eat restaurant ID |
| `uniqueName` | string | Just Eat slug identifier |
| `name` | string | Restaurant/takeaway name |
| `logoUrl` | string | Logo image URL |
| `cuisines` | string\[] | Cuisine names for this restaurant |
| `tags` | string\[] | Just Eat badges/tags |
| `rating` | number | Star rating (0–5) |
| `reviewCount` | number | Total number of ratings on Just Eat |
| `deals` | object\[] | Offers — `description` and `offerType` |
| `menuItemCount` | number | Menu items captured for this restaurant in this run |
| `reviewsCollected` | number | Review rows captured for this restaurant in this run (0 when reviews are off) |
| `url` | string | Restaurant page URL |
| `scrapedAt` | string | ISO 8601 timestamp of collection |

##### Address & Location

| Field | Type | Description |
|-------|------|-------------|
| `firstLine` | string | Street address line |
| `city` | string | City |
| `postalCode` | string | Postcode |
| `latitude` | number | Latitude coordinate |
| `longitude` | number | Longitude coordinate |
| `phone` | string | Phone number (independents; may be null for chains) |
| `email` | string | Contact email when Just Eat lists one (often null for chains) |

##### Service, Delivery & Hours

| Field | Type | Description |
|-------|------|-------------|
| `isDelivery` | boolean | Offers delivery |
| `isCollection` | boolean | Offers collection |
| `isOpenNow` | boolean | Currently accepting orders |
| `isPreorder` | boolean | Accepting pre-orders |
| `isTemporarilyOffline` | boolean | Temporarily paused |
| `isNew` | boolean | Newly listed on Just Eat |
| `isPremier` | boolean | Just Eat Premier restaurant |
| `driveDistanceMeters` | number | Distance from the search point, in metres |
| `deliveryEtaMinutes` | object | `{ min, max }` estimated delivery window |
| `deliveryFee` | number | Delivery fee (GBP) |
| `minimumOrder` | number | Minimum order value (GBP) |
| `deliveryFeeBands` | object\[] | Fee tiers — `minimumAmount` and `fee` (GBP) |
| `openingHours` | object\[] | Per-service weekly open/close windows (best-effort; most reliable for independents) |

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

Emitted when `includeMenu` is on. One row per menu item, linked to its restaurant.

```json
{
    "recordType": "menuItem",
    "restaurantName": "Franco Manca - Covent Garden",
    "restaurantId": "183045",
    "restaurantUrl": "https://www.just-eat.co.uk/restaurants-franco-manca-covent-garden/menu",
    "menuCategory": "Sourdough Pizza",
    "name": "Margherita",
    "description": "Tomato, mozzarella, basil",
    "price": 7.95,
    "hasVariablePrice": true,
    "variations": [
        { "name": "Regular", "price": 7.95 },
        { "name": "Large", "price": 10.5 }
    ],
    "isMealDeal": false,
    "imageUrl": "https://d30v2pzvrfyzpo.cloudfront.net/uk/images/items/margherita.jpg",
    "nutritionalInfo": { "energy": "620 kcal" },
    "labels": ["vegetarian"],
    "restrictions": null
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"menuItem"` |
| `restaurantName` | string | Parent restaurant name |
| `restaurantId` | string | Parent restaurant ID |
| `restaurantUrl` | string | Parent restaurant page URL |
| `menuCategory` | string | Menu section/category name |
| `name` | string | Item name |
| `description` | string | Item description |
| `price` | number | Base price (GBP) |
| `hasVariablePrice` | boolean | Price varies by option |
| `variations` | object\[] | Named options — `name` and `price` (GBP) |
| `isMealDeal` | boolean | Item is a meal deal/combo |
| `imageUrl` | string | Item image URL when present |
| `nutritionalInfo` | object | `{ energy }` calorie/energy info when Just Eat lists it |
| `labels` | string\[] | Dietary tags (e.g. vegetarian, spicy) |
| `restrictions` | any | Age/sale restrictions when present |

#### Review (`recordType: "review"`)

Emitted when `includeReviews` is on. One row per review, linked to its restaurant, capped by `maxReviewsPerRestaurant`.

```json
{
    "recordType": "review",
    "restaurantName": "Franco Manca - Covent Garden",
    "restaurantId": "183045",
    "restaurantUrl": "https://www.just-eat.co.uk/restaurants-franco-manca-covent-garden/menu",
    "author": "Sarah M",
    "rating": 5,
    "date": "2026-06-18T19:42:00Z",
    "text": "Best sourdough pizza in London, arrived hot and early.",
    "reply": "Thank you Sarah — see you again soon!",
    "reviewId": "a1b2c3d4"
}
```

| Field | Type | Description |
|-------|------|-------------|
| `recordType` | string | Always `"review"` |
| `restaurantName` | string | Parent restaurant name |
| `restaurantId` | string | Parent restaurant ID |
| `restaurantUrl` | string | Parent restaurant page URL |
| `author` | string | Reviewer name |
| `rating` | number | Review star rating |
| `date` | string | Review date |
| `text` | string | Review body |
| `reply` | string | Restaurant's reply, when present |
| `reviewId` | string | Unique review identifier |

### Tips for Best Results

- **Use a central postcode for the densest coverage.** One search returns the entire surrounding area, so a busy city-centre postcode captures far more restaurants than a rural one.
- **Turn menus off for fast location sweeps.** Set `includeMenu: false` (or `includeDetails: false`) when you only need restaurant listings — ratings, cuisines, and delivery info — for a quicker, cheaper run.
- **Reviews are capped per restaurant.** `maxReviewsPerRestaurant` defaults to 20 (most recent first); set it to `0` to pull every review, or lower it to keep review-heavy places from dominating your results.
- **`maxResults` counts restaurants only.** Menu items and reviews are extra, so a run for "200 restaurants with menus" can produce tens of thousands of menu-item rows — start small to gauge menu size before scaling up.
- **Filter server-side where you can.** `cuisine`, `serviceType`, `minRating`, and `openNowOnly` narrow results before detail collection, so you spend budget only on the restaurants you actually want.
- **Paste area URLs to reuse a search you built on the site.** Any filters baked into the Just Eat URL are honoured exactly, so you can replicate a hand-tuned search without rebuilding it here.
- **Independents give the richest detail.** Local takeaways usually expose a contact number, email, and structured opening hours; large national chains frequently do not — expect `phone`, `email`, and `openingHours` to be fullest for independents and sometimes null for big brands. Core fields (name, rating, cuisines, address, coordinates, delivery info) are always populated regardless.

### Pricing

**From $3.00 per 1,000 restaurants** — undercutting the market on the primary result while bundling full menus and reviews that competing tools charge for separately or don't offer at all. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows total cost for the restaurant (primary) result at each discount tier.

| Restaurants | No discount | Bronze | Silver | Gold |
|-------------|-------------|--------|--------|------|
| 100 | $0.36 | $0.34 | $0.32 | $0.30 |
| 1,000 | $3.60 | $3.40 | $3.20 | $3.00 |
| 10,000 | $36.00 | $34.00 | $32.00 | $30.00 |
| 100,000 | $360.00 | $340.00 | $320.00 | $300.00 |

You're charged per restaurant, plus a small per-item charge for menu items and reviews only when you turn them on:

| Result type | Price (per 1,000) |
|-------------|-------------------|
| Restaurant (primary) | From $3.00 |
| Menu item | $0.40 |
| Review | $0.40 |

Menu items and reviews are charged only when you turn them on, at a flat $0.40 per 1,000. A menu can run to several hundred items per restaurant, so a full-menu run is priced mostly by those items — turn menus off when you only need the restaurant listings:

| Typical run | Approximate total |
|-------------|-------------------|
| 100 restaurants, menus off | ~$0.30 |
| 100 restaurants + full menus (~100 items each) | ~$4.30 |
| 100 restaurants + menus + 20 reviews each | ~$5.10 |

No compute or time-based charges — you pay per result, plus a small fixed per-run start fee. Platform storage 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, price monitoring, lead generation, and competitive analysis. Users are responsible for complying with applicable laws and Just Eat's terms of service, including making reasonable-rate requests and respecting how any personal data in reviews is used. Do not use extracted data for spam, harassment, or any unlawful purpose.

# Actor input Schema

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

Paste one or more Just Eat UK URLs. Accepts area/postcode pages (e.g. https://www.just-eat.co.uk/area/wc2-coventgarden) or individual restaurant pages (e.g. https://www.just-eat.co.uk/restaurants-example/menu). Filters in the URL are honoured as-is, so the Search Filters below are ignored for these URLs. Use this when you already built a search on the site.

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

Where to look for takeaways. Enter UK postcodes (e.g. 'EC1A 1BB', 'M1 1AE') or area slugs (e.g. 'wc2-coventgarden'). Each entry is searched separately. Leave empty when you are pasting URLs above.

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

Only include restaurants serving this cuisine. Choose 'Any' to include all cuisines found in the area.

## `serviceType` (type: `string`):

Only include restaurants that offer this service. 'Any' includes both delivery and collection.

## `openNowOnly` (type: `boolean`):

Only include restaurants that are currently open and accepting orders. Turn off to include closed and pre-order restaurants too.

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

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

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

Visit each restaurant page to collect its full menu (categories, items, descriptions, prices, meal deals), opening hours, delivery fees and minimum order, service info, phone, address and coordinates. Turn off for a faster, cheaper run that returns only the summary fields from the area listing (name, rating, cuisines, delivery ETA).

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

Return every menu item of each restaurant as its own result row (category, name, description, price, variations, meal-deal flags, nutritional info when available). Only applies when 'Include Full Restaurant Details' is on. A large menu can have 100-300+ items, and each item collected is returned and billed as a separate result. Turn off to keep only the restaurant summary rows.

## `includeReviews` (type: `boolean`):

Return customer reviews of each restaurant as their own result rows (author, rating, date, text). Only applies when 'Include Full Restaurant Details' is on. Each review collected is returned and billed as a separate result. Turn off to skip reviews.

## `maxReviewsPerRestaurant` (type: `integer`):

Cap on the number of reviews collected per restaurant (most recent first). Default 20. Set to 0 to collect every available review. Ignored when 'Include Reviews' is off.

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

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

## Actor input object example

```json
{
  "startUrls": [
    "https://www.just-eat.co.uk/area/wc2-coventgarden"
  ],
  "search": [
    "EC1A 1BB"
  ],
  "cuisine": "any",
  "serviceType": "any",
  "openNowOnly": false,
  "includeDetails": true,
  "includeMenu": true,
  "includeReviews": false,
  "maxReviewsPerRestaurant": 20,
  "maxResults": 10
}
```

# Actor output Schema

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

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

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

Restaurants only, with name, cuisines, star rating, review count, delivery ETA, delivery fee, minimum order, open/collection status, address, and coordinates.

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

Menu items only, each linked to its restaurant, with category, name, description, price, variations, and meal-deal flag. Present only when 'Include Menu Items' is enabled.

## `reviews` (type: `string`):

Customer reviews only, each linked to its restaurant, with author, rating, date, and text. Present only when 'Include Reviews' 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.just-eat.co.uk/area/wc2-coventgarden"
    ],
    "search": [
        "EC1A 1BB"
    ],
    "cuisine": "any",
    "serviceType": "any",
    "openNowOnly": false,
    "includeDetails": true,
    "includeMenu": true,
    "includeReviews": false,
    "maxReviewsPerRestaurant": 20,
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/justeat-co-uk-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.just-eat.co.uk/area/wc2-coventgarden"],
    "search": ["EC1A 1BB"],
    "cuisine": "any",
    "serviceType": "any",
    "openNowOnly": False,
    "includeDetails": True,
    "includeMenu": True,
    "includeReviews": False,
    "maxReviewsPerRestaurant": 20,
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/justeat-co-uk-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.just-eat.co.uk/area/wc2-coventgarden"
  ],
  "search": [
    "EC1A 1BB"
  ],
  "cuisine": "any",
  "serviceType": "any",
  "openNowOnly": false,
  "includeDetails": true,
  "includeMenu": true,
  "includeReviews": false,
  "maxReviewsPerRestaurant": 20,
  "maxResults": 10
}' |
apify call solidcode/justeat-co-uk-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Just Eat UK Scraper",
        "description": "[💰 $3.0 / 1K] Extract restaurants and takeaways from Just Eat UK. Get name, cuisines, rating, review count, delivery ETA, fees, minimum order, address and coordinates. Turn on full details for the menu with prices, meal deals, opening hours, phone, and reviews. Search by postcode, area, or cuisine",
        "version": "1.0",
        "x-build-id": "On08aiaCsRQaHancE"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solidcode~justeat-co-uk-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solidcode-justeat-co-uk-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~justeat-co-uk-scraper/runs": {
            "post": {
                "operationId": "runs-sync-solidcode-justeat-co-uk-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~justeat-co-uk-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-solidcode-justeat-co-uk-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": "Just Eat URLs",
                        "type": "array",
                        "description": "Paste one or more Just Eat UK URLs. Accepts area/postcode pages (e.g. https://www.just-eat.co.uk/area/wc2-coventgarden) or individual restaurant pages (e.g. https://www.just-eat.co.uk/restaurants-example/menu). Filters in the URL are honoured as-is, so the Search Filters below are ignored for these URLs. Use this when you already built a search on the site.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "search": {
                        "title": "Postcodes or Areas",
                        "type": "array",
                        "description": "Where to look for takeaways. Enter UK postcodes (e.g. 'EC1A 1BB', 'M1 1AE') or area slugs (e.g. 'wc2-coventgarden'). Each entry is searched separately. Leave empty when you are pasting URLs above.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "cuisine": {
                        "title": "Cuisine",
                        "enum": [
                            "any",
                            "pizza",
                            "burgers",
                            "chinese",
                            "indian",
                            "italian",
                            "kebabs",
                            "chicken",
                            "japanese",
                            "thai",
                            "sushi",
                            "breakfast",
                            "desserts",
                            "healthy",
                            "vegan",
                            "groceries"
                        ],
                        "type": "string",
                        "description": "Only include restaurants serving this cuisine. Choose 'Any' to include all cuisines found in the area.",
                        "default": "any"
                    },
                    "serviceType": {
                        "title": "Service Type",
                        "enum": [
                            "any",
                            "delivery",
                            "collection"
                        ],
                        "type": "string",
                        "description": "Only include restaurants that offer this service. 'Any' includes both delivery and collection.",
                        "default": "any"
                    },
                    "openNowOnly": {
                        "title": "Open Now Only",
                        "type": "boolean",
                        "description": "Only include restaurants that are currently open and accepting orders. Turn off to include closed and pre-order restaurants too.",
                        "default": false
                    },
                    "minRating": {
                        "title": "Minimum Rating",
                        "minimum": 1,
                        "maximum": 5,
                        "type": "integer",
                        "description": "Only include restaurants with a star rating at or above this value (1-5). Leave empty for no minimum."
                    },
                    "includeDetails": {
                        "title": "Include Full Restaurant Details",
                        "type": "boolean",
                        "description": "Visit each restaurant page to collect its full menu (categories, items, descriptions, prices, meal deals), opening hours, delivery fees and minimum order, service info, phone, address and coordinates. Turn off for a faster, cheaper run that returns only the summary fields from the area listing (name, rating, cuisines, delivery ETA).",
                        "default": true
                    },
                    "includeMenu": {
                        "title": "Include Menu Items",
                        "type": "boolean",
                        "description": "Return every menu item of each restaurant as its own result row (category, name, description, price, variations, meal-deal flags, nutritional info when available). Only applies when 'Include Full Restaurant Details' is on. A large menu can have 100-300+ items, and each item collected is returned and billed as a separate result. Turn off to keep only the restaurant summary rows.",
                        "default": true
                    },
                    "includeReviews": {
                        "title": "Include Reviews",
                        "type": "boolean",
                        "description": "Return customer reviews of each restaurant as their own result rows (author, rating, date, text). Only applies when 'Include Full Restaurant Details' is on. Each review collected is returned and billed as a separate result. Turn off to skip reviews.",
                        "default": false
                    },
                    "maxReviewsPerRestaurant": {
                        "title": "Max Reviews Per Restaurant",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Cap on the number of reviews collected per restaurant (most recent first). Default 20. Set to 0 to collect every available review. Ignored when 'Include Reviews' is off.",
                        "default": 20
                    },
                    "maxResults": {
                        "title": "Max Restaurants",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Maximum number of restaurants to collect across all URLs and searches. Set to 0 for as many as possible (up to a built-in safety cap). Menu items and reviews are additional to this count. The box starts at 10 so a first test run finishes quickly — raise it to collect hundreds or thousands (the field accepts any value up to the safety cap).",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
