Deliveroo Restaurant & Menu Scraper
Pricing
from $2.00 / 1,000 results
Deliveroo Restaurant & Menu Scraper
Scrape Deliveroo restaurants and full menus with prices (UK, France, UAE and more): ratings, fees, minimum order, ETA, promotions, address and coordinates, plus every item with price, discount, calories, dietary tags and modifiers. Paste a listing or menu URL, or a lat,lng.
Pricing
from $2.00 / 1,000 results
Rating
0.0
(0)
Developer
Banea Teodor
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
What does Deliveroo Restaurant & Menu Scraper do?
This Actor extracts restaurants and full menus with prices from Deliveroo in the UK, France, the UAE and Deliveroo's other markets. Paste a neighbourhood listing URL or a restaurant menu URL, or just enter a latitude,longitude, and get clean JSON: restaurant ratings, ETAs, distances, promotions, delivery fees, minimum orders, addresses with coordinates and hygiene ratings, or complete menus with item prices, discounts, calories, dietary tags and modifier options (sizes, sides, extras) with their prices.
It reads Deliveroo's server-rendered pages directly. There is no browser and no login, so runs are fast and cheap.
Why use this Actor?
- Full menus with prices: every orderable item with numeric price, discounted price, currency, calories, dietary tags, popular and availability flags, image, and modifier groups with option prices. Each row carries its restaurant context.
- Rich restaurant records: rating with label and count, ETA, distance, delivery fee and minimum order as both text and number, free-delivery flag, promotions and restaurant-wide offers, street address, postcode, latitude/longitude, phone (FR/AE), UK FSA hygiene rating, cuisine tags (FR/AE).
- Search by location: give
"51.5155,-0.1419"and the Actor opens the listing Deliveroo shows for that address. - Multi-market: deliveroo.co.uk, .fr, .ae verified; .ie, .be, .it, .com.kw, .com.qa use the same site. Prices come back in local currency, including 3-decimal currencies such as KWD.
- Built for pipelines: every row always has every field (
nullwhen Deliveroo doesn't show it), numbers are numbers, timestamps are ISO 8601, and restaurants are deduplicated across listings.
Pairs with our Glovo, Wolt and Bolt Food restaurant & menu scrapers, which use the same field names, for cross-platform delivery price comparison.
How much does it cost?
You pay per row returned, plus a small start fee per run.
| Run | Rows | Typical cost |
|---|---|---|
| One listing, restaurant list | ~100–120 restaurants | ~$0.25 |
| 10 restaurants, full menus | ~1,000–2,000 items | ~$2–4 |
| 1 menu URL, full menu | 50–250 items | ~$0.10–0.50 |
Use maxRestaurants and maxItemsTotal to bound any run. The Actor logs a cost estimate before it starts when a run could return more than ~5,000 rows.
Input
| Field | Type | Description | Example |
|---|---|---|---|
startUrls | array | Deliveroo neighbourhood listings (/restaurants/<city>/<neighbourhood>) or menu pages (/menu/<city>/<neighbourhood>/<restaurant>), any Deliveroo domain. | https://deliveroo.co.uk/restaurants/london/fitzrovia?geohash=gcpvhep7zzx1 |
locations | array of strings | Delivery locations as "latitude,longitude". | ["51.5155,-0.1419"] |
countryDomain | string | Deliveroo country for locations. | deliveroo.fr |
mode | string | restaurants (one row per restaurant, default) or menus (one row per menu item). | "menus" |
includeModifiers | boolean | Menus mode: attach modifier groups with option prices (default on). | true |
maxRestaurants | integer | Cap on restaurants scraped / menus opened (0 = no cap). | 10 |
maxItemsTotal | integer | Hard ceiling on billed rows (0 = none). The crawler stops as soon as it is reached. | 1000 |
maxItemsPerRestaurant | integer | Menus mode: keep only the first N items of each menu, in menu order (0 = complete menus). | 25 |
maxConcurrency, maxRequestsPerMinute | integer | Request pacing. | 3, 60 |
Notes:
- A Deliveroo listing shows its top ~100–120 restaurants for that location (Deliveroo does not paginate further). Add more locations or neighbourhood URLs to widen coverage.
- Restaurant rows from a listing carry what the listing card shows (rating, ratings count, ETA, distance, promotions, sponsored flag, image). Fees, minimum order, address, coordinates, hygiene rating, cuisine and open state live on the menu page: use
mode: menus(the full records are stored under theRESTAURANTSkey, free) or pass menu URLs inrestaurantsmode to get them in the dataset. - In
restaurantsmode a menu URL without a delivery location is fetched once more from the restaurant's own location, so fees, minimum order and open state are filled. Inmenusmode item rows do not depend on the location, so bare menu URLs are fetched once and their freeRESTAURANTSrecord has no fee or minimum (use a listing or a URL with?geohash=to get them). - National brands (KFC, Pizza Hut, Subway, Papa John's, Popeyes, …) sit in a compact carousel on listings that carries only the name and ETA, so their listing rows have no rating, ratings count or distance. Their menu pages have everything.
maxRestaurantsandmaxItemsTotalare shared by all listings and locations in a run: with two locations andmaxRestaurants: 20the first listing to answer fills the cap. Run one location per run (or raise the cap) when you need every area covered.- UK menu pages show no ETA and no cuisine tags; the ETA comes from the listing card when the menu was found through a listing.
Output
Menus mode: one row per menu item.
{"storeId": "516734","storeName": "Shake Shack - Burgers & Shakes - Oxford Street","storeSlug": "shake-shack-oxford-street","storeUrl": "https://deliveroo.co.uk/menu/london/soho/shake-shack-oxford-street","city": "london","countryCode": "GB","categoryId": "956305007","categoryName": "Limited Time Only!","categoryPosition": 1,"productId": "2849629908","name": "The Big Shack","description": "Made with two 100% Aberdeen Angus cheeseburgers made to order, topped with lettuce, pickles, onions, tomatoes, and secret sauce on a three-layer toasted potato bun.","price": 16.15,"priceDiscounted": null,"currency": "GBP","priceText": "£16.15","calories": 1008,"dietaryTags": [],"imageUrl": "https://rs-menus-api.roocdn.com/images/3f25b128-5496-49ae-8382-84b11d49f8c1/image.jpeg?width=800&height=600&auto=webp&format=jpg&fit=crop","isPopular": false,"isAvailable": true,"offerText": null,"modifierGroups": [{"id": "2922055379","name": "NEW LTO Big Shack","minSelection": 0,"maxSelection": 6,"multiselect": false,"options": [{ "id": "2849629897", "name": "No Cheese", "price": 0, "priceDiscounted": null, "isAvailable": true, "modifierGroupIds": [] }]}],"itemRating": null,"stockCount": null,"isSponsored": false,"offerTag": null,"strikeThroughPrice": null,"position": 1,"sourceUrl": "https://deliveroo.co.uk/menu/London/soho/shake-shack-oxford-street?day=today&geohash=gcpvhep7zzx1&time=ASAP","scrapedAt": "2026-10-15T20:17:09.842Z","runId": "AbC123dEf456"}
Restaurants mode: one row per restaurant (this one came from a menu URL, so the menu-page fields are filled).
{"storeId": "135495","name": "Burger King - Paris Lescot","slug": "burger-king-paris-lescot","url": "https://deliveroo.fr/menu/paris/paris-1-louvre/burger-king-paris-lescot","sourceUrl": "https://deliveroo.fr/en/menu/paris/paris-1-louvre/burger-king-paris-lescot?day=today&time=ASAP&geohash=u09tvqvszqwd","city": "paris","neighborhood": "paris-1-louvre","countryCode": "FR","currency": "EUR","rating": 4,"ratingText": "Good","ratingCount": "376","cuisine": ["Burgers", "Vegetarian", "Dessert"],"eta": null,"distance": null,"deliveryFeeText": "€1.79 delivery","deliveryFee": 1.79,"minimumOrderText": "€10.00 minimum","minimumOrder": 10,"isFreeDelivery": false,"promotions": [],"offers": ["Spend €10.00 to get free delivery"],"isSponsored": null,"isOpen": true,"closingText": "Closes at 23:45","address": "2 RUE PIERRE LESCOT, Paris, 75001","postcode": "75001","latitude": 48.8611717,"longitude": 2.347961,"phone": "+33142601653","hygieneRating": null,"branchType": "RESTAURANT","description": "Serving up amazing food, Burger King - Paris Lescot sits in the heart of Paris 1 - Louvre. With dishes you're guaranteed to love, order now for delivery within 32 minutes","imageUrl": "https://rs-menus-api.roocdn.com/images/e3f51063-2fb7-4c04-a33d-a7f7a17876e9/image.jpeg?width=800&height=600&auto=webp&format=jpg&fit=crop","scrapedAt": "2026-10-15T20:16:28.065Z","runId": "AbC123dEf456"}
A run produces only one of the two shapes (per the mode), so exports are always uniform. Menus mode additionally stores one full restaurant record per menu under the RESTAURANTS key of the run's key-value store (join on storeId). Pages that could not be scraped are listed under ERRORS with the reason (blocked, notFound, invalid, requestFailed, unexpectedResponse).
Tips and tricks
- Price monitoring: schedule a menus run on the same menu URLs and diff by
storeId+productId;runIdandscrapedAtkeep runs apart after export. - Area overview: restaurants mode over a handful of
locationsmaps who delivers where, with ratings, ETAs and promotions, in one cheap run. - Fees and minimum orders: these depend on the delivery address. Listing-driven menus use the listing's location; menu URLs without one use the restaurant's own location.
- Cost control in menus mode:
maxItemsTotalis a hard ceiling (the last menu may be cut short) and stops the crawler;maxRestaurantsbounds how many menus are opened;maxItemsPerRestaurantkeeps the first N items of every menu in page order. - Closed restaurants still count toward
maxRestaurants: a menu that is closed at scrape time has no orderable items (0 item rows, aRESTAURANTSrecord withclosingTextlike "Opens at 10:00"). Inrestaurantsmode a closed restaurant reached through a bare menu URL has no fee or minimum order either. Run during opening hours for complete data. - Grocery pages (supermarkets, convenience stores) are shelf previews: only the first items of each aisle are on the page, so grocery "menus" are partial.
- Discounted prices reflect store-wide promotions active at scrape time (
priceDiscountedon every item when the restaurant runs "25% off"). - Modifiers: switch
includeModifiersoff for flat, CSV-friendly item rows.
Integrations
The dataset works with every Apify integration: export to JSON, CSV, Excel, push to Google Sheets, trigger webhooks on finish, or query via the Apify API from Python/Node, for example a weekly menu-price snapshot feeding a pricing dashboard.