Wolt API endpoint
Returns Wolt's own live directory of every city it operates in, each with the coordinate pair the rest of the Wolt endpoints take, plus its slug, country codes, and timezone. Every other Wolt endpoint is resolved purely from a coordinate, so this is the discovery step that makes them usable without an external geocoder. Optionally restrict to one country, or pass a reference coordinate to have each city carry its distance and the list returned nearest-first.
/wolt/citiesEvery other Wolt endpoint (/wolt/search, /wolt/search/filters, /wolt/collections, /wolt/restaurant/availability) resolves its market purely from a latitude/longitude pair, so this is the discovery step that makes them usable without an external geocoder. As of 2026-09-05 the directory covers 964 cities across 30 countries.
Query parameters:
country (optional) — ISO 3166-1 country code to restrict the directory to, either alpha-2 (FI) or alpha-3 (FIN), case-insensitive. Wolt's own endpoint has no country parameter, so this is applied to the returned directory. A code that is not two or three letters returns a 400; a well-formed code that matches no city returns an empty cities list.latitude (optional) — reference latitude, e.g. 60.1699. Must be given together with longitude.longitude (optional) — reference longitude, e.g. 24.9384. Must be given together with latitude.With no parameters this returns the entire directory in Wolt's own order (grouped by country). With a reference coordinate, every city additionally carries distance_km and the list is returned nearest-first — Wolt's own ordering ignores the coordinate, so the sort is applied here.
Response includes total_results, country (only present when the country filter was used), and cities[]. Each city has id, name (localized by Wolt), slug, country (alpha-2), country_iso3, timezone, latitude, longitude, and distance_km (whole kilometres from the reference coordinate; only present when one was supplied).
| Field | Filled in, of 964 checked | Values in the sample |
|---|---|---|
| id | 500 | |
| name | 500 | “Durrës” and 499 other values |
| slug | 500 | |
| country | 500 | “AL” and 13 other values |
| country_iso3 | 500 | “ALB” and 13 other values |
| timezone | 500 | “Europe/Tirane” and 17 other values |
| latitude | 500 | |
| longitude | 500 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| country | string | No | Optional ISO 3166-1 country code to restrict the directory to, alpha-2 (FI) or alpha-3 (FIN), case-insensitive. | FI | |
| latitude | number | No | Optional reference latitude. Must be given together with longitude. | 60.1699 | |
| longitude | number | No | Optional reference longitude. Must be given together with latitude. | 24.9384 | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/wolt/cities?country=us" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"total_results": 2,
"country": "FI",
"cities": [
{
"id": "58da504ba3284104e807127d",
"name": "Helsinki",
"slug": "helsinki",
"country": "FI",
"country_iso3": "FIN",
"timezone": "Europe/Helsinki",
"latitude": 60.165,
"longitude": 24.94
},
{
"id": "5a5b1f8e2e114f000edb7601",
"name": "Espoo",
"slug": "espoo",
"country": "FI",
"country_iso3": "FIN",
"timezone": "Europe/Helsinki",
"latitude": 60.2055,
"longitude": 24.6559,
"distance_km": 9
}
]
}
}Request schema
No body schema
Response schema
#/definitions/wolt.citiesResponseDoc
| 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 | wolt.CitiesResponse | No | ||||
| data.cities | array | No | ||||
| data.cities[].country | string | No | ||||
| data.cities[].country_iso3 | string | No | ||||
| data.cities[].distance_km | integer | No | DistanceKm is Wolt's own whole-kilometre distance from the reference coordinate, present only when latitude/longitude were supplied. Confirmed live 2026-09-05 against a haversine recomputation: Wolt reports 9 for a city 9.65km away and 13 for one 13.79km away, i.e. kilometres truncated to an integer, not metres. | |||
| data.cities[].id | string | No | ||||
| data.cities[].latitude | number | No | ||||
| data.cities[].longitude | number | No | ||||
| data.cities[].name | string | No | ||||
| data.cities[].slug | string | No | ||||
| data.cities[].timezone | string | No | ||||
| data.country | string | No | ||||
| data.total_results | 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/wolt/cities?country=us" \
-H "x-api-key: $CRAWLORA_API_KEY"