Deliveroo Scraper — UK Restaurant Listings & Menus
Pricing
from $1.20 / 1,000 result scrapeds
Deliveroo Scraper — UK Restaurant Listings & Menus
Scrape Deliveroo.co.uk restaurant listings by UK postcode: name, rating, distance, delivery fee, minimum order, address, and per-restaurant menu items with prices. No login required.
Pricing
from $1.20 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Extract restaurant listings from Deliveroo.co.uk by UK postcode — restaurant name, star rating, review count, distance, estimated delivery time, delivery fee, minimum order value, full address, and a sample of menu items with real prices for every restaurant delivering to that postcode. No login, no app, no session cookies.
Why use this actor?
Deliveroo covers thousands of UK restaurants and takeaways, but there's no public API for it — every price, rating, and menu is only visible one restaurant at a time inside the app or the web checkout flow. Food delivery aggregators, market researchers tracking delivery fees and pricing by postcode, franchise groups monitoring their own listings against competitors, and anyone building a "which postcode has the best food coverage" dataset all need this at scale instead of clicking through Deliveroo restaurant-by-restaurant. This actor turns a single UK postcode into a clean, structured dataset of every restaurant Deliveroo will deliver to that address, plus a real menu sample for each one.
How to scrape Deliveroo data
Deliveroo.co.uk runs on Next.js and server-renders its restaurant listing pages with a full __NEXT_DATA__ JSON payload embedded in the HTML — no headless browser is needed to read it. The site sits behind Cloudflare, which sets an x-roo-cf-rl rate-limit header on responses, but as of this actor's build that rule runs in simulate/log-only mode rather than actively blocking, and the listing page returns HTTP 200 with a real restaurant list for a plain, well-paced request.
The key discovery this actor relies on: Deliveroo's location resolution runs entirely off the postcode query parameter. The /restaurants/{city}/{neighborhood} path segments in the URL are cosmetic — hitting /restaurants/london/soho?postcode=M1 1AE resolves to Manchester results, not London. That means this actor needs no hardcoded city or neighborhood slug map (unlike scrapers for sites with internal, non-derivable city IDs): it builds one neutral listing URL per postcode and lets Deliveroo's own backend do the geocoding.
The listing page's embedded feed is a component tree of "RooBlocks" (Deliveroo's internal UI framework), not a flat restaurant array — this actor walks that tree to pull out each restaurant card's name, rating, review count, distance, and estimated delivery time, plus its restaurant/menu page URL. When menu details are enabled (the default), the actor then visits each restaurant's own page, which carries the same __NEXT_DATA__ pattern with the restaurant's full address, delivery fee, minimum order threshold, and the complete menu (items, descriptions, prices, and menu-section categories) in structured form.
Requests are paced with a randomized delay between each one to stay well clear of the site's rate-limit threshold, and every request uses a real browser Accept/Accept-Language header set.
Input
| Field | Type | Required | Description |
|---|---|---|---|
postcode | String | No | UK postcode to search (default: W1F 0DN, Soho, London). Examples: M1 1AE (Manchester), EH1 1BB (Edinburgh), B1 1AA (Birmingham). |
maxResults | Integer | No | Maximum restaurants to return (default: 20, max: 50 — Deliveroo's listing page returns one batch of up to ~50 per postcode, with no working pagination parameter found). |
includeMenuDetails | Boolean | No | Fetch each restaurant's own page for address, delivery fee, minimum order, and menu items (default: true). One extra request per restaurant. Turn off for a faster, listing-only run. |
maxMenuItemsPerRestaurant | Integer | No | Cap on menu items returned per restaurant (default: 15). Restaurants can list 100-900+ items; this returns a sample from the top menu section. |
proxyConfiguration | Object | No | Apify Proxy settings. UK residential proxies recommended (default). |
Output
Each result is one restaurant:
| Field | Type | Example |
|---|---|---|
restaurantId | String | "14250" |
name | String | "Sushi Shop" |
rating | Number | 4.8 |
reviewCount | Number | 500 |
distanceMiles | Number | 0.9 |
estimatedDeliveryMinutes | Number | 20 |
promotionalOffer | String | "Spend £15, get 20% off" |
address | String | "67-69 Weymouth Street, London, W1G8NY" |
postcode | String | "W1G8NY" |
neighborhood | String | "Marylebone" |
city | String | "london" |
country | String | "GB" |
currency | String | "GBP" |
deliveryFee | Number | 1.29 |
minimumOrder | Number | 8 |
menuItemCount | Number | 286 |
menuItemsSample | Array | Sample menu items with name, description, category, and price |
imageUrl | String | Restaurant cover photo URL |
url | String | Full Deliveroo restaurant/menu URL |
scrapedAt | String | ISO 8601 timestamp |
You can download the dataset in JSON, CSV, Excel, HTML, or XML directly from the Apify Console or API.
Example output
{"restaurantId": "14250","name": "Sushi Shop","rating": 4.8,"reviewCount": 500,"distanceMiles": 0.9,"estimatedDeliveryMinutes": 20,"promotionalOffer": "Spend £15, get 20% off","address": "67-69 Weymouth Street, London, W1G8NY","postcode": "W1G8NY","neighborhood": "Marylebone","city": "london","country": "GB","currency": "GBP","deliveryFee": 1.29,"minimumOrder": 8,"menuItemCount": 286,"menuItemsSample": [{"id": "2701184666","name": "🥇 Salmon Lovers Box (18 pcs) - For 1 person","description": "Our No.1 bestseller - salmon sushi, rolls and springs.","category": "MOST POPULAR","price": 21.70,"priceFormatted": "£21.70","popular": false,"available": true}],"imageUrl": "https://rs-menus-api.roocdn.com/images/abbd8e63-1b3d-48f0-be4a-a2e062a8cb39/image.jpeg","url": "https://deliveroo.co.uk/menu/london/marylebone/sushi-shop-marylebone","scrapedAt": "2026-07-24T21:15:00.000Z"}
Cost estimate
With menu details on (the default), this actor makes one listing request plus one detail request per restaurant — roughly 2 requests per restaurant returned. At standard Apify pricing, expect approximately $0.20-$0.40 per 100 restaurants including menu samples. Turning includeMenuDetails off cuts this to one request total for the whole run.
Limitations
- Deliveroo's own listing page returns a single batch of up to ~50 restaurants per postcode with no working pagination parameter found during recon — this actor cannot currently scrape past that batch for one postcode. Run multiple postcodes to cover a wider area.
- Cuisine type is not returned. Deliveroo's UK web listing (as of this actor's build) doesn't carry a cuisine tag on restaurant cards or restaurant pages — the
menuItemsSample[].categoryfield (menu section names like "MOST POPULAR" or "Sharing menus") is the closest available signal, but it isn't a cuisine taxonomy. If you need cuisine tags for continental Europe food delivery, see the related Lieferando/Takeaway scraper below, which does expose them. menuItemsSampleis a sample (default 15 items) from the restaurant's top menu section, not the full menu — some restaurants list 800+ items. UsemenuItemCountto see the true total, and raisemaxMenuItemsPerRestaurantif you need more.- Delivery fee and minimum order reflect Deliveroo's current promotional state at scrape time (e.g. spend-based free delivery offers) and can change without notice.
- Respect Deliveroo's terms of service and use responsibly.
Frequently asked questions
Does this require a Deliveroo account or login? No. The actor reads Deliveroo's public, server-rendered listing and menu pages, which don't require authentication.
Can I search by city name instead of postcode? Not directly — Deliveroo's own location resolution runs off the postcode, not city or area names, so this actor takes a postcode as input. Use any postcode within the city or area you're targeting.
Why is the restaurant count capped around 50?
That's the size of the single batch Deliveroo's SSR listing page returns per postcode. No working page/offset parameter was found during recon (both were silently ignored server-side). Query several postcodes across an area for broader coverage.
How fresh is the data? Every run scrapes live pages at request time, so ratings, review counts, promotional offers, delivery fees, and menu prices reflect Deliveroo's current listings.
Related scrapers
- TheFork Scraper — European restaurant listings, ratings, and offers from TheFork/TripAdvisor's reservation platform.
- Lieferando & Takeaway Scraper — Restaurant delivery listings, cuisines, ratings, and menus for five Just Eat Takeaway brands across continental Europe.
- Tesco Groceries Scraper — UK grocery products and prices from Tesco.
- Waitrose Scraper — UK grocery products and prices from Waitrose.
- UK Grocery Price Matrix — Compare grocery prices across UK supermarkets by EAN.
Need this data on a schedule, or a custom version?
We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API — maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple sources into one feed.
See studioamba.dev/services or email hello@studioamba.dev for a free data sample. We maintain 300+ European web scrapers and answer within one business day.