Scrape Deliveroo Restaurants for UK Market (2026)
Thirdwatch's Deliveroo Scraper returns restaurants + menus at $0.008 per record — name, rating, delivery time, fee, promotions, menu items with prices. Built for UK hospitality competitive research, restaurant-aggregator products, food-delivery analysts, and UAE/EU food-research workflows.
Why scrape Deliveroo for UK market research
Deliveroo dominates UK food delivery. According to Deliveroo's 2024 Annual report, the platform serves 30%+ UK market share alongside Uber Eats + Just Eat with 150K+ restaurant partners across UK, EU, and UAE markets. For UK hospitality competitive research, restaurant-aggregator builders, and food-delivery analysts, Deliveroo data is essential.
The job-to-be-done is structured. A UK restaurant-operator monitors competitor pricing + promotions across London neighborhoods weekly. A food-delivery analyst tracks per-platform restaurant assortment + pricing differences for UK market reports. A UAE hospitality consultancy researches Deliveroo + Talabat overlap in Dubai for client briefings. A travel-tech aggregator startup ingests UK restaurant data for marketplace seeding. All reduce to area + city queries + per-restaurant detail aggregation.
How does this compare to the alternatives?
Three options for Deliveroo data:
| Approach | Cost per 10K records | Reliability | Setup time | Maintenance |
|---|---|---|---|---|
| Lumina Intelligence (UK delivery research) | $50K–$200K/year | Authoritative cross-platform | Days | Annual contract |
| Deliveroo Restaurant Hub | Free (owned restaurants only) | Limited to your business | Hours | Per-restaurant license |
| Thirdwatch Deliveroo Scraper | $80 ($0.008 × 10K) | Camoufox + residential proxy | 5 minutes | Thirdwatch tracks Deliveroo changes |
UK food-delivery research SaaS bundles cross-platform data at the high end. Deliveroo's first-party Restaurant Hub is owned-restaurant-only. The Deliveroo Scraper actor page gives you cross-restaurant competitor data at the lowest unit cost.
How to scrape Deliveroo in 4 steps
Step 1: How do I authenticate against Apify?
Sign in at apify.com (free tier, no credit card), open Settings → Integrations, and copy your personal API token:
export APIFY_TOKEN="apify_api_xxxxxxxxxxxxxxxx"
Step 2: How do I pull UK area restaurants?
Pass area-based URLs.
import os, requests, pandas as pd
ACTOR = "thirdwatch~deliveroo-scraper"
TOKEN = os.environ["APIFY_TOKEN"]
UK_AREAS = [
"https://deliveroo.co.uk/restaurants/london/soho",
"https://deliveroo.co.uk/restaurants/london/shoreditch",
"https://deliveroo.co.uk/restaurants/london/notting-hill",
"https://deliveroo.co.uk/restaurants/manchester/city-centre",
"https://deliveroo.co.uk/restaurants/birmingham/city-centre",
]
resp = requests.post(
f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items",
params={"token": TOKEN},
json={"areaUrls": UK_AREAS, "maxResults": 100},
timeout=900,
)
df = pd.DataFrame(resp.json())
print(f"{len(df)} restaurants across {len(UK_AREAS)} UK areas")
5 areas × 100 restaurants = up to 500 records, costing $4.
Step 3: How do I pull UAE restaurants via address?
UAE requires address-autocomplete since no area URLs exist.
UAE_ADDRESSES = [
"https://www.google.com/maps/place/Dubai+Marina,+Dubai",
"https://www.google.com/maps/place/Downtown+Dubai",
"https://www.google.com/maps/place/Abu+Dhabi+Corniche",
]
resp_uae = requests.post(
f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items",
params={"token": TOKEN},
json={"locationUrls": UAE_ADDRESSES, "maxResults": 100},
timeout=900,
)
df_uae = pd.DataFrame(resp_uae.json())
print(f"{len(df_uae)} UAE restaurants")
UAE returns ~40-100 restaurants per address (geohash-based). Combined UK + UAE pull = 800-1000 restaurants.
Step 4: How do I extract menus + track price drift?
Pass restaurant slugs to fetch full menus.
import datetime, pathlib, json
QUALITY = df[df.rating >= 4.5].head(50)
menu_resp = requests.post(
f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items",
params={"token": TOKEN},
json={"restaurantSlugs": QUALITY.slug.tolist(),
"fetchMenus": True},
timeout=1800,
)
menus = pd.DataFrame(menu_resp.json())
ts = datetime.datetime.utcnow().strftime("%Y%m%d")
out = pathlib.Path(f"snapshots/deliveroo-menus-{ts}.json")
out.parent.mkdir(parents=True, exist_ok=True)
out.write_text(menus.to_json(orient="records"))
print(f"Persisted {len(menus)} menu items")
50 restaurants × ~70 menu items = 3,500 menu records. Daily snapshot enables price-drift detection across the watchlist.
Sample output
A single Deliveroo restaurant record looks like this. Five rows weigh ~5 KB.
{
"name": "Dishoom Shoreditch",
"slug": "dishoom-shoreditch-london",
"rating": 4.8,
"delivery_time": "25-40 min",
"delivery_fee": "£2.49",
"promo_text": "20% off when you spend £25",
"category": "Indian, Asian",
"url": "https://deliveroo.co.uk/menu/london/shoreditch/dishoom-shoreditch-london",
"is_top_rated": true,
"is_discounted": true,
"image_url": "https://rs-menus-api.deliveroo.com/..."
}
slug is the canonical natural key. is_top_rated (Deliveroo's algorithm-promoted flag) and is_discounted (promo-active flag) enable filtering for premium-tier or deal-tier cohorts.
Common pitfalls
Three things go wrong in Deliveroo pipelines. CSS-class hashing — Deliveroo uses CSS-module hashed classes (css-XXXXX) so DOM scraping must use structural patterns rather than class-based selectors. Image-as-background-CSS — restaurant images load as CSS background-image rather than <img> tags; extract via computed-style rather than DOM-image-query. wait_until="commit" — Deliveroo's domcontentloaded event never fires reliably; the actor uses wait_until="commit" instead.
Thirdwatch's actor uses Camoufox + residential proxy at $3/1K, ~62% margin. Pair Deliveroo with Talabat Scraper for UAE/MENA cross-platform research and Noon Food Scraper for additional UAE depth. A fourth subtle issue worth flagging: Deliveroo's is_top_rated flag is dynamic — restaurants gain/lose this badge based on rolling 30-day rating + delivery-on-time + completion-rate metrics. For accurate competitive research, snapshot the flag weekly + treat status changes as leading indicators of operational shifts. A fifth pattern unique to UK food delivery: Deliveroo Plus (subscription tier) members see different delivery fees + promotions than non-members. The actor's scraped data represents the non-member view; for true effective-pricing research, factor in typical 30-40% Plus penetration in major UK cities. A sixth and final pitfall: Deliveroo's UAE coverage is concentrated in Dubai + Abu Dhabi metros — Sharjah, Ajman, RAK have minimal coverage. For UAE-wide hospitality research, supplement with Talabat (which covers all 7 emirates).
Operational best practices for production pipelines
Tier the cadence to match signal half-life. Restaurant data changes slowly (rating, hours, menu) — daily polling is sufficient even for active monitoring. Tier the watchlist into Tier 1 (active competitors, daily), Tier 2 (broad market research, weekly), Tier 3 (long-tail discovery, monthly). Typical 60-80% cost reduction with negligible signal loss.
Snapshot raw payloads. Pipeline cost is dominated by scrape volume, not storage. Persisting raw JSON snapshots lets you re-derive metrics — particularly useful for menu-trend analysis as your category-classifier evolves. Compress with gzip at write-time (4-8x size reduction).
Schema validation. Run a daily validation suite that asserts each scraper returns expected core fields with non-null rates above 80% (required) and 50% (optional). Deliveroo schema changes occasionally during platform UI revisions — catch drift early before downstream consumers degrade silently. A seventh and final operational pattern unique to this scraper at production scale: cross-snapshot diff alerts. Beyond detecting individual changes, build alerts on cross-snapshot field-level diffs — name changes, category re-classifications, ownership-transfers, status-changes. These structural changes precede or follow material events (acquisitions, rebrands, regulatory issues, leadership departures) and are leading indicators of organization-level disruption. Persist a structured-diff log alongside aggregate snapshots: for each entity, for each scrape, persist (field, old_value, new_value) tuples. Surface high-leverage diffs (name changes, category re-classifications, headcount shifts >10%) to human reviewers; low-leverage diffs (single-record additions, minor count updates) stay in the audit log. This pattern catches signal that pure aggregate-trend monitoring misses entirely. An eighth pattern unique to UK food delivery: cuisine-specific competitive dynamics differ materially across UK cities — London restaurants compete on cuisine breadth and chef-name recognition, while Manchester + Birmingham compete more on price-point + delivery-speed. For accurate per-city competitive research, segment cuisines by metro-tier and apply different ranking weights (price-weight 30% in Tier 1 metros vs 50% in Tier 2). A ninth and final flag for ramen + sushi + niche-cuisine research: Deliveroo's category tagging often groups niche cuisines under broader "Asian" or "Japanese" tags, missing precise sub-cuisine signals. For high-fidelity cuisine research, supplement with description-keyword matching against menu items rather than relying solely on Deliveroo's category tags.
Related use cases
- Monitor Deliveroo pricing across UK cities
- Build UAE food delivery research with Deliveroo
- Scrape Talabat restaurant menus for price monitoring
- The complete guide to scraping food delivery
- All Thirdwatch use-case guides
Frequently asked questions
Why scrape Deliveroo for UK market research?
Deliveroo dominates UK food delivery alongside Uber Eats and Just Eat — the platform processes 300M+ orders annually across 150K+ restaurant partners. According to Deliveroo's 2024 report, the platform has 30%+ UK market share. For UK hospitality competitive research, restaurant-aggregator products, and food-delivery investment analysis, Deliveroo is essential coverage. Strong UAE presence too (Dubai, Abu Dhabi alongside Talabat).
What data does the actor return?
Per restaurant: name, slug, rating (4.6-4.9 typical), delivery time, delivery fee, promotions, slug, URL, lat/lng (when available), category. Per restaurant menu (when fetched): 40-116 menu items with prices, descriptions, categories. Comprehensive coverage of active UK + EU + UAE restaurants.
How does Deliveroo handle anti-bot defenses?
Deliveroo uses Cloudflare + PerimeterX. Thirdwatch's actor uses Camoufox stealth-browser + residential proxy. Production-tested at 90-95% success rate. Restaurants load via GraphQL XHR (api.deliveroo.com/consumer/graphql/) after page render — Camoufox is essential for capturing the rendered restaurant data.
How does Deliveroo geographic input work?
Two patterns: (1) UK + EU — area-based URLs (deliveroo.co.uk/restaurants/london/soho); (2) UAE + other — address autocomplete (input lat/lng or Google Maps URL). UAE has no area-based URLs; Deliveroo redirects through address-autocomplete to a geohash-based listing page. Both modes return the same restaurant + menu data structure.
Can I track per-restaurant pricing over time?
Yes. Persist daily snapshots of (restaurant_slug, menu_item, price) tuples + compute cross-snapshot deltas. Deliveroo restaurants change pricing weekly during promotional windows (lunch deals, dinner specials). For UK competitive research, daily snapshots produce stable price-trajectory data.
How does this compare to first-party UK delivery analytics?
Deliveroo's first-party Restaurant Hub is owned-restaurant-only (no competitor data). UK food-delivery research SaaS (Lumina Intelligence, NPD Group) bundles cross-platform delivery data at $50K-$200K/year. The actor delivers raw competitor-coverage at $0.008/record without partnership gatekeeping. For UK hospitality competitive research, this is materially cheaper than analyst-firm subscriptions.
Run the Deliveroo Scraper on Apify Store — pay-per-record, free to try, no credit card to test.