Deliveroo API endpoint
Returns one partner's full menu or catalog grouped into categories -- restaurant menus, grocery aisles, and shopping-store catalogs all use this same endpoint (see /deliveroo/search's collection parameter). Every item carries a name, description, product-meta text when the upstream provides it (calorie counts on restaurant items, per-unit pricing like "380g · £15.79/kg" on grocery/shopping items), price, availability, and its resolved customization options (e.g. "Choose your meal", "Add ingredients?") with each option's own price and required/multi-select bounds.
/deliveroo/restaurant/menuReturns one Deliveroo partner's full menu or catalog, grouped into categories with prices. Restaurant menus, grocery aisles (Sainsbury's, Waitrose, Co-op, ...), and shopping-store catalogs (Boots, B&Q, Screwfix, ...) all use this same endpoint (see /deliveroo/search's collection parameter).
Query parameters:
uname (required) — slug, from /deliveroo/search's uname field, e.g. nandos-wilton-road (restaurant) or boots-piccadilly (shopping).market (optional, default uk) — the Deliveroo national market the uname was found in. One of uk, ie, fr, it, be, ae, kw.An unknown uname, or a partner with no published menu, returns 404.
Response includes restaurant_id, name, uname, currency_code, categories[], and item_count. Each category has id, name, and items[]. Each item has id, name, description, product_meta (a short upstream badge -- a calorie count on restaurant items, per-unit pricing such as "380g · £15.79/kg" on grocery/shopping items -- when present), price, available, and modifier_groups[] (customization prompts, present only when the item has any -- restaurant items only in practice).
Each modifier group has id, name (e.g. "Choose your meal", "Add ingredients?"), min_selection and max_selection (a group with min_selection greater than 0 is required), multiselect (whether the same option may be picked more than once), and options[]. Each option has id, name, description, price (0 for a free choice such as removing an ingredient), and available.
Example response for a collection=shopping partner (no modifier_groups, per-unit pricing in product_meta where the upstream shows one):
{"code":200,"msg":"OK","data":{"restaurant_id":"349456","name":"Boots - Piccadilly","uname":"boots-piccadilly","currency_code":"GBP","categories":[{"id":"c1","name":"Hair care","items":[{"id":"i1","name":"Pantene Pro-V grow abundant anti hair-loss shampoo 290ml","price":15.40,"available":true}]}],"item_count":117}}
| Field | Filled in, of 1 checked | Values in the sample |
|---|---|---|
| id | 1 | |
| name | 1 | “🎁Gifting Season Is Here” |
| items | 1 | median 15 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| uname | string | Yes | Restaurant slug, from a search response's uname field | nandos-wilton-road | |
| market | string | No | Deliveroo national market the uname was found in (default uk) Allowed values: uk, ie, fr, it, be, ae, kw. | uk | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/deliveroo/restaurant/menu?uname=nandos-wilton-road&market=uk" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"restaurant_id": "255494",
"name": "Nando's - Wilton Road",
"uname": "nandos-wilton-road",
"currency_code": "GBP",
"categories": [
{
"id": "269873213",
"name": "Our Latest & Greatest",
"items": [
{
"id": "2793389360",
"name": "Family Platter",
"description": "Two Whole Chickens and five large sides.",
"product_meta": "2317 kcal",
"price": 69,
"available": true,
"modifier_groups": [
{
"id": "2893426302",
"name": "Choose 5 large sides",
"min_selection": 5,
"max_selection": 5,
"multiselect": true,
"options": [
{
"id": "o1",
"name": "PERi-Salted Chips",
"price": 0,
"available": true
}
]
}
]
}
]
}
],
"item_count": 1029
}
}Request schema
No body schema
Response schema
#/definitions/deliveroo.menuResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | deliveroo.MenuResponse | No | ||||
| data.categories | array | No | ||||
| data.categories[].id | string | No | ||||
| data.categories[].items | array | No | ||||
| data.categories[].items[].available | boolean | No | ||||
| data.categories[].items[].description | string | No | ||||
| data.categories[].items[].id | string | No | ||||
| data.categories[].items[].modifier_groups | array | No | ||||
| data.categories[].items[].modifier_groups[].id | string | No | ||||
| data.categories[].items[].modifier_groups[].max_selection | integer | No | ||||
| data.categories[].items[].modifier_groups[].min_selection | integer | No | ||||
| data.categories[].items[].modifier_groups[].multiselect | boolean | No | ||||
| data.categories[].items[].modifier_groups[].name | string | No | ||||
| data.categories[].items[].modifier_groups[].options | array | No | ||||
| data.categories[].items[].modifier_groups[].options[].available | boolean | No | ||||
| data.categories[].items[].modifier_groups[].options[].description | string | No | ||||
| data.categories[].items[].modifier_groups[].options[].id | string | No | ||||
| data.categories[].items[].modifier_groups[].options[].name | string | No | ||||
| data.categories[].items[].modifier_groups[].options[].price | number | No | ||||
| data.categories[].items[].name | string | No | ||||
| data.categories[].items[].price | number | No | ||||
| data.categories[].items[].product_meta | string | No | ||||
| data.categories[].name | string | No | ||||
| data.currency_code | string | No | ||||
| data.item_count | integer | No | ||||
| data.name | string | No | ||||
| data.restaurant_id | string | No | ||||
| data.uname | string | No | ||||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/deliveroo/restaurant/menu?uname=nandos-wilton-road&market=uk" \
-H "x-api-key: $CRAWLORA_API_KEY"