Deliveroo API endpoint
Returns the exact same sort and filter catalog -- every cuisine, dietary tag, dish, delivery-time tier, delivery-fee tier, star-rating tier, and offer flag, each with a live result count for this location -- that the real search page's own filter dropdowns are populated from. Every option's query_param/query_value pair is the literal query string /deliveroo/search accepts for that filter.
/deliveroo/search/filtersReturns Deliveroo's own live sort and filter catalog for a latitude/longitude in the given national market -- the exact same data (option counts included) the real search page's own filter dropdowns are populated from.
Query parameters:
latitude (required) — search center latitude, e.g. 51.4975.longitude (required) — search center longitude, e.g. -0.1357.market (optional, default uk) — Deliveroo national market to search. One of uk, ie, fr, it, be, ae, kw.Response includes total_count (total restaurants/stores matching no filters, for this location), sort_options[], and filters[].
Each sort option has id (the value /deliveroo/search's sort parameter accepts), name, and default.
Each filter group has query_param (the query parameter name /deliveroo/search accepts, e.g. cuisine, dietary, dish, delivery-eod, delivery-fee, partner-star-rating, offer), name, multiple (whether more than one option can be selected at once), and options[]. Each option has query_param (repeated for convenience) and query_value (the exact value to send), name, count (how many results currently match), and currently_active.
/deliveroo/search's own cuisine, dietary, and dish parameters accept any query_value this endpoint lists for those filter groups; min_rating, max_delivery_minutes, max_delivery_fee_pounds, and sort accept the small, fixed value sets documented on /deliveroo/search itself rather than requiring a lookup here.
Example response (trimmed):
{"code":200,"msg":"OK","data":{"total_count":4193,"sort_options":[{"id":"recommended","name":"Recommended (default)","default":true},{"id":"distance","name":"Distance","default":false},{"id":"time","name":"Quickest delivery","default":false},{"id":"rating","name":"Top-rated","default":false}],"filters":[{"query_param":"dietary","name":"Dietary","multiple":true,"options":[{"query_param":"dietary","query_value":"vegan","name":"Vegan","count":37,"currently_active":false}]},{"query_param":"delivery-eod","name":"Delivery time","multiple":false,"options":[{"query_param":"delivery-eod","query_value":"min-eod-under-20","name":"20 mins or less","count":522,"currently_active":false}]}]}}
| Field | Filled in, of 8 checked | Values in the sample |
|---|---|---|
| query_param | 8 | “delivery-eod” and 7 other values |
| name | 8 | “Delivery time” and 7 other values |
| multiple | 8 | true in 5 of 8 |
| options | 8 | median 3 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| latitude | number | Yes | Search center latitude | 51.4975 | |
| longitude | number | Yes | Search center longitude | -0.1357 | |
| market | string | No | Deliveroo national market to search (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/search/filters?latitude=51.4975&longitude=-0.1357&market=uk" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"total_count": 4193,
"sort_options": [
{
"id": "recommended",
"name": "Recommended (default)",
"default": true
},
{
"id": "distance",
"name": "Distance",
"default": false
},
{
"id": "time",
"name": "Quickest delivery",
"default": false
},
{
"id": "rating",
"name": "Top-rated",
"default": false
}
],
"filters": [
{
"query_param": "dietary",
"name": "Dietary",
"multiple": true,
"options": [
{
"query_param": "dietary",
"query_value": "vegan",
"name": "Vegan",
"count": 37,
"currently_active": false
}
]
},
{
"query_param": "delivery-eod",
"name": "Delivery time",
"multiple": false,
"options": [
{
"query_param": "delivery-eod",
"query_value": "min-eod-under-20",
"name": "20 mins or less",
"count": 522,
"currently_active": false
}
]
}
]
}
}Request schema
No body schema
Response schema
#/definitions/deliveroo.filtersResponseDoc
| 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.FiltersResponse | No | ||||
| data.filters | array | No | ||||
| data.filters[].multiple | boolean | No | ||||
| data.filters[].name | string | No | ||||
| data.filters[].options | array | No | ||||
| data.filters[].options[].count | integer | No | ||||
| data.filters[].options[].currently_active | boolean | No | ||||
| data.filters[].options[].name | string | No | ||||
| data.filters[].options[].query_param | string | No | ||||
| data.filters[].options[].query_value | string | No | ||||
| data.filters[].query_param | string | No | ||||
| data.sort_options | array | No | ||||
| data.sort_options[].default | boolean | No | ||||
| data.sort_options[].id | string | No | ||||
| data.sort_options[].name | string | No | ||||
| data.total_count | integer | 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 |
| 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/search/filters?latitude=51.4975&longitude=-0.1357&market=uk" \
-H "x-api-key: $CRAWLORA_API_KEY"