ParseForge Scrapers

Deliveroo Scraper - Restaurant Menus & Food Prices API

parseforge/deliveroo-restaurants-scraper

E-commerceTravelLead generation

Scrape Deliveroo restaurants and full menus in 7 countries: name, address, neighbourhood, dish names, categories and prices. Export to CSV, JSON, Excel, or XML.

Run this scraper See the API call
Total runs
53
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the Deliveroo Scraper - Restaurant Menus & Food Prices API return?

ParseForge Banner

🍽️ Deliveroo Restaurants Scraper

πŸš€ Export Deliveroo restaurants and full menus in seconds. 7 live markets, 30 fields per restaurant, every dish with its price, straight from the page Deliveroo serves.

The Deliveroo Restaurants Scraper reads Deliveroo restaurant pages live and turns them into clean rows: the restaurant profile (name, Deliveroo ID, street address, neighbourhood, city, branch type, currency, menu category names, dish count, cheapest and dearest dish) and, when you turn it on, one row per dish with its name, description, category, price, discount, availability, dietary tags and image. It finds the restaurants itself from Deliveroo's own published sitemap, filtered by city and by name, or scrapes the restaurant URLs you paste.

Coverage: the 7 markets Deliveroo still operates (United Kingdom, France, Italy, Ireland, Belgium, United Arab Emirates, Kuwait), every restaurant listed in each market's sitemap (London alone is tens of thousands of pages), 30 fields per restaurant row and 32 per menu item row. Measured on 2026-09-07: 30 London restaurants in 100 seconds, 30 of 30 delivered.

🎯 Target Audience πŸ’‘ Primary Use Cases
Restaurant groups and franchises Competitor menus and price points in the same postcode
FMCG and food brands Where a product is listed, at what price, under which category
Price intelligence teams Dish-level price tracking over time, per city and per chain
Market analysts Restaurant density, cuisine mix and price bands by neighbourhood
Delivery and logistics startups The live merchant landscape in a target city

πŸ“‹ What the Deliveroo Restaurants Scraper does

Give it a country and a city and it reads Deliveroo's published sitemap to find the restaurant pages, opens them through a real browser session that clears Deliveroo's Cloudflare challenge once, and extracts:

  • πŸͺ Restaurant: name, Deliveroo ID, slug, URL, menu ID, DRN IDs, branch type, fulfilment type, currency, street address, neighbourhood, city, country, city and zone IDs, whether the menu is currently disabled, the SEO title and description, the number of menu categories and their names, the dish count and the cheapest and dearest dish.
  • 🍽️ Every dish (optional): name, description, menu category, price as a decimal and as the string Deliveroo shows, discounted price, currency, availability, popularity, sponsored and signature-exclusive flags, dietary tags, nutrition, rating, image URL and the number of option groups.
  • 🧩 Option groups (optional): sizes, extras and sides for each dish, each with its own price and availability.

πŸ’‘ Why it matters: Deliveroo does not offer a public API and its pages sit behind a bot challenge. This Actor gives you the same data a customer sees, as rows you can join, chart and diff, without maintaining a browser farm.

🎬 Full Demo (🚧 Coming soon)

A short walkthrough video is on its way. Until then, the How to use section below takes under two minutes.

πŸ“Š Output

One row per restaurant. With Include menu items on, one extra row per dish, tagged rowType: "menuItem". Fields the source withholds carry Not Disclosed; fields that do not apply carry N/A; flags are Yes or No.

Field Description
πŸ–Ό imageUrl Restaurant cover image, or the dish image on a menu item row
🏷 rowType restaurant or menuItem
πŸ“Œ name Restaurant name, or dish name on a menu item row
πŸ†” restaurantId Deliveroo's numeric restaurant ID
πŸ”— url Canonical restaurant page
πŸ”€ slug URL slug of the restaurant
πŸ“‹ menuId, 🧬 drnId, 🏒 brandDrnId Deliveroo internal identifiers; brandDrnId is set on chain branches, Not Disclosed on independents
πŸͺ branchType, 🚴 fulfillmentType RESTAURANT, DELIVEROO and similar
πŸ’± currency, πŸ’² currencySymbol ISO code and symbol, for example GBP and Β£
πŸ“ address, 🏘 neighborhood, πŸŒ† city, 🌍 country Street address (postcode included), neighbourhood, city slug, country code
πŸ”’ cityId, zoneId Deliveroo's city and delivery zone IDs
β›” menuDisabled, menuDisabledByLocationOnly Ordering state without a delivery address set (menus are still returned)
πŸ“ acceptsOrderNotes, πŸ§ͺ isTestSite Restaurant flags
πŸ”Ž seoTitle, πŸ“° seoDescription Page metadata as published by Deliveroo
πŸ—‚ categoryCount, categories Number and names of the menu sections
🍽 menuItemCount Number of dishes on the menu
⬇️ priceMin, ⬆️ priceMax Cheapest and dearest dish, as decimals
πŸ†” itemId, 🧬 itemDrnId Menu item identifiers (menu item rows)
πŸͺ restaurantName, πŸ”— restaurantUrl Parent restaurant of a dish (menu item rows)
πŸ“ description, πŸ—‚ category, πŸ”’ categoryId Dish description and menu section (menu item rows)
πŸ’· price, priceFormatted, 🏷 priceDiscounted, priceDiscountedFormatted Dish price as a decimal and as shown, plus the discounted price when there is one
βœ… available, πŸ”₯ popular, πŸ“¦ stockCount, 🏬 isInStorePrice Dish availability and flags
πŸ“£ isSponsored, ⭐ isSignatureExclusive, 🎁 offerText Promotion flags and offer text
πŸ₯— dietaryTags, 🧾 nutrition, ⭐ rating Merchant-filled dish details, Not Disclosed when absent
🧩 modifierGroupCount, modifierGroups Option groups; the full groups are attached only with Include modifier groups on
πŸ•’ scrapedAt ISO timestamp of the extraction
❌ error null on data rows; error rows carry only this field and are never billed

Three real records from a verification run:

{
  "imageUrl": "https://rs-menus-api.roocdn.com/images/7712b7f7-7a05-4fde-b396-5bd4aa32804e/image.jpeg?width=1200&height=630&fit=crop",
  "rowType": "restaurant",
  "name": "Solaz Kitchen - Abbey Wood",
  "restaurantId": "684098",
  "url": "https://deliveroo.co.uk/menu/london/abbey-wood/solaz-kitchen-78-glimpsing-green",
  "slug": "solaz-kitchen-78-glimpsing-green",
  "menuId": "2721346",
  "drnId": "fdcb287b-d302-4423-818b-df49fa437ea9",
  "brandDrnId": "Not Disclosed",
  "branchType": "RESTAURANT",
  "fulfillmentType": "DELIVEROO",
  "currency": "GBP",
  "currencySymbol": "Β£",
  "address": "78 Glimpsing Green, London, DA184HD",
  "neighborhood": "Abbey Wood",
  "city": "london",
  "country": "GB",
  "cityId": 1,
  "zoneId": 1076,
  "menuDisabled": "Yes",
  "menuDisabledByLocationOnly": "No",
  "acceptsOrderNotes": "No",
  "isTestSite": "No",
  "seoTitle": "Solaz Kitchen - Abbey Wood delivery from Abbey Wood - Order with Deliveroo",
  "seoDescription": "Serving up amazing food, Solaz Kitchen - Abbey Wood sits in the heart of Abbey Wood. With dishes you're guaranteed to love, order now for delivery within 32 minutes",
  "categoryCount": 6,
  "categories": "Starter; Rice Dishes; Stew; Kids Menu; Extras; Drinks",
  "menuItemCount": 60,
  "priceMin": 1,
  "priceMax": 11,
  "scrapedAt": "2026-09-08T03:46:45.951Z",
  "error": null
}
{
  "imageUrl": "https://rs-menus-api.roocdn.com/images/a5ba3ae7-da0e-4513-b159-58f95ea3b050/image.jpeg?width=1200&height=630&fit=crop",
  "rowType": "restaurant",
  "name": "Honey’s Kitchen - Abbey Wood",
  "restaurantId": "440493",
  "url": "https://deliveroo.co.uk/menu/london/abbey-wood/honeys-kitchen",
  "slug": "honeys-kitchen",
  "menuId": "1974400",
  "drnId": "1958b460-d9c0-40a7-86f1-267a7b3551d8",
  "brandDrnId": "Not Disclosed",
  "branchType": "RESTAURANT",
  "fulfillmentType": "DELIVEROO",
  "currency": "GBP",
  "currencySymbol": "Β£",
  "address": "73 Glimpsing Green, London, DA184HB",
  "neighborhood": "Abbey Wood",
  "city": "london",
  "country": "GB",
  "cityId": 1,
  "zoneId": 1076,
  "menuDisabled": "Yes",
  "menuDisabledByLocationOnly": "No",
  "acceptsOrderNotes": "No",
  "isTestSite": "No",
  "seoTitle": "Honey’s Kitchen - Abbey Wood delivery from Abbey Wood - Order with Deliveroo",
  "seoDescription": "Serving up amazing food, Honey’s Kitchen - Abbey Wood sits in the heart of Abbey Wood. With dishes you're guaranteed to love, order now for delivery within 32 minutes",
  "categoryCount": 6,
  "categories": "Honey's Kitchen Meal Deal 🍱; Main and Protein πŸ›; Swallow & Soup Meal 🍲; Soup and Stew πŸ₯˜; Sides 🍽️; DrinksπŸ₯€",
  "menuItemCount": 82,
  "priceMin": 1,
  "priceMax": 35,
  "scrapedAt": "2026-09-08T03:46:48.577Z",
  "error": null
}
{
  "imageUrl": "https://rs-menus-api.roocdn.com/images/b92cfd2e-9f73-4076-8ff7-cc38d5ae2506/image.jpeg?width=600&height=600&auto=webp&format=jpg&fit=crop",
  "rowType": "menuItem",
  "name": "Jollof Rice with Fried Plantain & Choice of Assorted Meat, Chicken or Turkey",
  "itemId": "2636284572",
  "itemDrnId": "053d93c2-8521-4d1d-8fe8-e27c526a3c72",
  "restaurantName": "Honey’s Kitchen - Abbey Wood",
  "restaurantId": "440493",
  "restaurantUrl": "https://deliveroo.co.uk/menu/london/abbey-wood/honeys-kitchen",
  "city": "london",
  "neighborhood": "Abbey Wood",
  "description": "Smokey-Party Jollof Rice served with Fried Plantain and your choice of Assorted Meat, Chicken OR Turkey.",
  "category": "Honey's Kitchen Meal Deal 🍱",
  "categoryId": "936489846",
  "price": 12.99,
  "priceFormatted": "Β£12.99",
  "currency": "GBP",
  "priceDiscounted": "N/A",
  "priceDiscountedFormatted": "N/A",
  "isInStorePrice": "No",
  "available": "Yes",
  "popular": "No",
  "stockCount": "N/A",
  "isSponsored": "No",
  "isSignatureExclusive": "No",
  "offerText": "Not Disclosed",
  "dietaryTags": "Not Disclosed",
  "nutrition": "Not Disclosed",
  "rating": "Not Disclosed",
  "modifierGroupCount": 1,
  "modifierGroups": [],
  "scrapedAt": "2026-09-08T03:51:25.842Z",
  "error": null
}

✨ Why choose this Actor

What you get
Seven live markets United Kingdom, France, Italy, Ireland, Belgium, United Arab Emirates and Kuwait. The markets Deliveroo has exited are deliberately not offered: they no longer publish a sitemap and their pages redirect.
Discovery included You do not need a list of URLs. The Actor reads Deliveroo's own sitemap index and filters it by city and by name before opening a single page, so the filtering costs nothing.
The full menu, not the card Prices, descriptions, categories, images and option groups come from the page's own data payload, so they are exactly what a customer sees, not a guess parsed off a listing tile.
Public pages only Deliveroo's robots.txt disallows its API and GraphQL routes. This Actor reads neither. It uses the sitemap Deliveroo publishes and the restaurant pages themselves.
One browser page per run The Cloudflare challenge is cleared once in a real browser; every sitemap and restaurant page after that is fetched from the cleared session, which is why 30 restaurants take about 100 seconds.
No silent nulls Every field is present on every row. What Deliveroo withholds says Not Disclosed, what does not apply says N/A, and errors land in their own unbilled rows.

πŸ“ˆ How it compares to alternatives

Deliveroo Restaurants Scraper Typical listing scrapers Manual copy-paste
Markets 7 Usually UK only Any, slowly
Discovery Sitemap, filtered by city and name Needs a postcode or URL list None
Menu depth Every dish, with option groups on request Listing tile only Whatever you type
Delivery fees and ETAs Not available (shown only once an address is set) Sometimes, address-bound Yes
Output Restaurant rows plus dish rows, CSV, JSON, Excel, XML Varies Spreadsheet
Speed About 3 seconds per restaurant Browser render per page Minutes per restaurant

Honest ceiling: delivery fee, delivery time, minimum order and star ratings are only rendered once a delivery address is set, which a logged-out page never has. The Actor returns the restaurant profile and the complete menu with prices, and reports menuDisabled so you know the ordering state.

πŸš€ How to use

  1. Create a free Apify account. New accounts start with $5 in free credit.
  2. Open the Deliveroo Restaurants Scraper page and click Try for free.
  3. Pick a Country, type a City slug such as london, bristol, paris or dubai, and optionally a Name contains filter such as pizza.
  4. Or paste restaurant page URLs into Restaurant URLs to skip discovery entirely.
  5. Turn on Include menu items if you want one row per dish, and set Max Items.
  6. Click Start. Results appear in the Dataset tab, ready to export as CSV, Excel, JSON or XML.

A minimal input:

{ "country": "uk", "city": "london", "searchTerm": "pizza", "includeMenuItems": true, "maxItems": 200 }

πŸ’Ό Business use cases

πŸ’· Menu price tracking

Run it on a schedule against a list of restaurant URLs with menu items on. Every run returns the current price of every dish, so a diff between two runs is your price-change report.

πŸ₯Š Competitive benchmarking

Set a city and a name filter and pull every matching restaurant. Compare priceMin, priceMax and menuItemCount per cuisine and per neighbourhood.

πŸ“¦ Distribution checks for food brands

Set Name contains to a chain or product name and read the menus of every branch, with the price and category each one uses.

πŸ—ΊοΈ Market mapping

Pull a whole city with menu items off: one row per restaurant with address, neighbourhood and zone ID gives you restaurant density and cuisine mix by area in one run.

πŸ”Œ Automating Deliveroo Restaurants Scraper

  • Make and Zapier: trigger a run on a schedule and push new rows to Google Sheets or a CRM.
  • Slack: post a summary when a scheduled run finishes, or alert when a tracked dish changes price.
  • Airbyte: load the dataset into your warehouse with the Apify source connector.
  • GitHub: commit a CSV snapshot per run to keep a versioned price history.
  • Google Drive: save each run's export as a dated file for the team.

All of these use Apify's built-in integrations or the Apify API.

🌟 Beyond business use cases

  • Research: study dish prices, portion labelling and dietary tagging across cities and markets.
  • Personal: find every restaurant in your neighbourhood that sells a specific dish, with prices.
  • Non-profit: map food availability and price bands by area for community projects.
  • Experimentation: build a dish-level dataset for price prediction or recommendation models.

πŸ€– Ask an AI assistant about this scraper

Connect the Actor to an MCP-capable assistant and ask in plain English:

claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/deliveroo-restaurants-scraper"
  • "What does a chicken burger cost across Deliveroo restaurants in Bristol?"
  • "Pull the full menu and prices for these five London restaurants."
  • "Which Deliveroo restaurants in Dublin sell pizza, and what is their price range?"

❓ Frequently Asked Questions

🌍 Which countries are covered?

Seven: United Kingdom, France, Italy, Ireland, Belgium, United Arab Emirates and Kuwait. These are the markets where Deliveroo still publishes a sitemap.

πŸ”‘ Do I need a Deliveroo account?

No. Only public restaurant pages are read.

πŸ”Œ Does it use Deliveroo's API?

No. Deliveroo's robots.txt disallows the API and GraphQL routes, so the Actor reads the published sitemap and the restaurant pages instead.

🎯 Can I scrape a specific restaurant?

Yes. Paste its page URL into Restaurant URLs and discovery is skipped.

🚚 Does it return delivery fees, delivery times and ratings?

No. Those appear only once a delivery address is set, which a logged-out page never has. The Actor returns the restaurant profile and the complete menu with prices.

πŸ›‘οΈ Why does it need a residential proxy?

Every Deliveroo page sits behind a Cloudflare managed challenge. Datacenter exits get a 403; a residential exit plus a real browser clears it. Keep the default proxy setting on.

β›” Why is menuDisabled Yes on most rows?

Deliveroo disables ordering when no delivery address is set, which is the state a scraper is always in. The menu, the dishes and the prices are still on the page and are all returned.

πŸ•³οΈ Why is a field Not Disclosed?

Not every restaurant fills every field. brandDrnId is set on chain branches and empty on independents; nutrition, rating and stockCount are filled by the merchant and most do not. There is no separate postcode column because Deliveroo's own postcode field is empty on every market measured; the postcode is inside address.

πŸ”’ How does Max Items count?

It counts rows: restaurant rows and menu item rows together. With menu items off, 50 means 50 restaurants. With menu items on, a restaurant with 60 dishes uses 61 rows.

πŸ“‰ Why did I get fewer rows than Max Items?

Either the city and name filters matched fewer restaurants, or the run hit its time budget. The log prints how many candidate pages the sitemap filter produced.

❌ What is an error row?

When a page could not be read, a row with only the error field is written naming the URL and the reason. Error rows are never billed and the run continues with the next restaurant.

⏱️ How fast is it?

About 3 seconds per restaurant once the session is warm. The first page pays for the browser start and the challenge, roughly 20 to 40 seconds.

πŸ”„ Can I run it on a schedule?

Yes. Use Apify Schedules with the same input; each run writes a fresh dataset you can diff against the previous one.

🧾 Is this an official Deliveroo product?

No. It is an independent tool that reads only publicly available pages.

πŸ”Œ Integrate with any app

Every run's dataset is available through the Apify API as JSON, CSV, Excel or XML, and through the Apify integrations for Make, Zapier, Slack, Airbyte, Google Sheets, Google Drive and GitHub. Use webhooks to trigger your own pipeline when a run finishes.

πŸ”— Recommended Actors

πŸ’‘ Pro Tip: browse the complete ParseForge collection for more scrapers.

πŸ†˜ Need Help? Open our contact form with your run ID, your input and what you expected.

⚠️ Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Deliveroo. It collects only publicly available restaurant and menu data and does not read any route Deliveroo's robots.txt disallows. You are responsible for using the data in compliance with Deliveroo's terms and applicable laws.

What input does the Deliveroo Scraper - Restaurant Menus & Food Prices API accept?

FieldTypeWhat it doesDefault
startUrls array Specific Deliveroo restaurant pages to scrape, for example https://deliveroo.co.uk/menu/london/abbey-wood/solaz-kitchen-78-glimpsing-green. Leave empty to discover restaurants from Deliveroo's published sitemap using the filters below. not set
maxItems integer Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000. Counts restaurant rows and menu item rows together. 10
country string (7 options) Which Deliveroo market to read. Only markets Deliveroo still operates are listed; the ones it has exited no longer publish a sitemap. uk
city string Keep only restaurants whose URL sits under this city slug, for example london, bristol, paris or dubai. Applied to the sitemap, so it costs nothing. london
searchTerm string Keep only restaurants whose URL contains this text, for example pizza or starbucks. not set
includeMenuItems boolean Also write one row per dish with its name, description, category, price, availability, dietary tags and image. Each dish row counts towards Max Items. false
includeModifiers boolean Attach the option groups of each dish (sizes, extras, sides) with their own prices to the menu item row. Only used when menu items are on. false
onlyAvailableItems boolean Skip dishes the restaurant has marked unavailable. Only used when menu items are on. false
proxyConfiguration object Keep Apify residential proxy on. Pick the proxy country that matches the market for the most reliable session (GB for the UK). {"useApifyProxy":true,"apifyProxyGroups"

How much does the Deliveroo Scraper - Restaurant Menus & Food Prices API cost?

from $1.20 per 1,000 results

Charged forWhat it isPrice each
Actor Start Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). $0.0002 to $0.002
Restaurant One Deliveroo restaurant delivered, with 30 fields including name, Deliveroo ID, street address, neighbourhood, city, branch type, currency, menu category names, dish count and the cheapest and dearest dish on the menu. $0.0072 to $0.012
Menu item One dish from a restaurant menu: name, description, menu category, price and currency, discounted price, availability, popularity, dietary tags and image URL. $0.0012 to $0.002

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the Deliveroo Scraper - Restaurant Menus & Food Prices API API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST Β· run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~deliveroo-restaurants-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "maxItems": 10,
    "country": "uk",
    "city": "london",
    "includeMenuItems": false,
    "includeModifiers": false
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "maxItems": 10,
  "country": "uk",
  "city": "london",
  "includeMenuItems": false,
  "includeModifiers": false
}

What do users say about the Deliveroo Scraper - Restaurant Menus & Food Prices API?

No reviews yet. Be the first.

How do I report an issue with the Deliveroo Scraper - Restaurant Menus & Food Prices API?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run Deliveroo Scraper - Restaurant Menus & Food Prices API on Apify All scrapers