Deliveroo Scraper - Restaurant Menus & Food Prices API
Pricing
from $7.20 / 1,000 restaurants
Deliveroo Scraper - Restaurant Menus & Food Prices API
Scrape Deliveroo restaurants and full menus in 7 countries: name, address, neighbourhood, dish names, categories and prices. Export to CSV, JSON, Excel, or XML.
Pricing
from $7.20 / 1,000 restaurants
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share

π½οΈ 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
- Create a free Apify account. New accounts start with $5 in free credit.
- Open the Deliveroo Restaurants Scraper page and click Try for free.
- Pick a Country, type a City slug such as
london,bristol,parisordubai, and optionally a Name contains filter such aspizza. - Or paste restaurant page URLs into Restaurant URLs to skip discovery entirely.
- Turn on Include menu items if you want one row per dish, and set Max Items.
- 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
- Weedmaps Scraper: dispensary menus and product prices.
- Carousell Scraper: marketplace listings and prices.
- Chemist Warehouse Scraper: pharmacy and health product catalogue with prices.
π‘ 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.