Datasets API endpoint
Returns one Numbeo city from the dataset by `slug` such as `Los-Angeles`. The record has the city, country, `coverage` list and the cost of living, rent, quality of life, crime, safety, health care, pollution, traffic and property indices. Indices appear only where the city was ranked.
/datasets/numbeo-cities/items/{slug}Dataset id enum:
numbeo-citiesPath parameters:
slug: required Numbeo city slug, e.g. Los-Angeles.Response fields:
city_slug, city, countrycoverage[]: which of the seven index families ranked this city in the current sync run, e.g. ["cost-of-living","crime","quality-of-life"].cost_of_living_index, rent_index, cost_of_living_plus_rent_index, groceries_index, restaurant_price_index, local_purchasing_power_index (from the cost-of-living family).quality_of_life_index, climate_index (from the quality-of-life family).crime_index, safety_index (from the crime family).health_care_index, health_care_exp_index (from the health-care family).pollution_index, pollution_exp_index (from the pollution family).traffic_index, traffic_time_index_minutes, traffic_time_exp_index, traffic_inefficiency_index, traffic_co2_emission_index (from the traffic family).property_price_to_income_ratio, property_gross_rental_yield_city_centre, property_gross_rental_yield_outside_centre, property_price_to_rent_ratio_city_centre, property_price_to_rent_ratio_outside_centre, property_mortgage_pct_of_income, property_affordability_index (from the property-investment family).extra_indices[] (name, value): any upstream ranking column not mapped to a typed field above.synced_at, schema_version.Every field except city_slug/city/coverage/synced_at/schema_version is
optional and present only when the corresponding family ranked this city.
| Field | In the sample | Value in the sample |
|---|---|---|
| city_slug | Has a value | |
| city | Has a value | |
| country | Has a value | |
| coverage | Has a value | 7 entries |
| cost_of_living_index | Has a value | |
| rent_index | Has a value | |
| cost_of_living_plus_rent_index | Has a value | |
| groceries_index | Has a value | |
| restaurant_price_index | Has a value | |
| local_purchasing_power_index | Has a value | |
| quality_of_life_index | Has a value | |
| climate_index | Has a value | |
| crime_index | Has a value | |
| safety_index | Has a value | |
| health_care_index | Has a value | |
| health_care_exp_index | Has a value | |
| pollution_index | Has a value | |
| pollution_exp_index | Has a value | |
| traffic_index | Has a value | |
| traffic_time_index_minutes | Has a value | |
| traffic_time_exp_index | Has a value | |
| traffic_inefficiency_index | Has a value | |
| traffic_co2_emission_index | Has a value | |
| property_price_to_income_ratio | Has a value | 8.9 |
| property_gross_rental_yield_city_centre | Has a value | 8.3 |
| property_gross_rental_yield_outside_centre | Has a value | 7.4 |
| property_price_to_rent_ratio_city_centre | Has a value | 12.1 |
| property_price_to_rent_ratio_outside_centre | Has a value | 13.6 |
| property_mortgage_pct_of_income | Has a value | 82.2 |
| property_affordability_index | Has a value | |
| synced_at | Has a value | 2026-10-13 |
| schema_version | Has a value |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| slug (path) | string | Yes | Numbeo city slug | Los-Angeles | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/numbeo-cities/items/Los-Angeles" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"city_slug": "Los-Angeles",
"city": "Los Angeles, CA",
"country": "United States",
"coverage": [
"cost-of-living",
"quality-of-life",
"crime",
"health-care",
"pollution",
"traffic",
"property-investment"
],
"cost_of_living_index": 84.5,
"rent_index": 91.4,
"quality_of_life_index": 133,
"crime_index": 53.83,
"safety_index": 46.17,
"health_care_index": 61.94,
"pollution_index": 68.46,
"traffic_index": 57.1,
"property_price_to_income_ratio": 8.23,
"synced_at": "2026-07-13T00:00:00Z",
"schema_version": 1
}
}Request schema
No body schema
Response schema
#/definitions/datasets.numbeoCityResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | es.NumbeoCityRecord | No | ||||
| data.city | string | No | ||||
| data.city_slug | string | No | ||||
| data.climate_index | number | No | ||||
| data.cost_of_living_index | number | No | ||||
| data.cost_of_living_plus_rent_index | number | No | ||||
| data.country | string | No | ||||
| data.coverage | array | No | Coverage lists which of the seven families ranked this entity in the current sync run, e.g. ["cost-of-living","crime","quality-of-life"]. | |||
| data.crime_index | number | No | ||||
| data.extra_indices | array | No | ExtraIndices carries any upstream ranking column not mapped to a typed field above (future-proofing against Numbeo adding columns). | |||
| data.extra_indices[].name | string | No | ||||
| data.extra_indices[].value | number | No | ||||
| data.groceries_index | number | No | ||||
| data.health_care_exp_index | number | No | ||||
| data.health_care_index | number | No | ||||
| data.local_purchasing_power_index | number | No | ||||
| data.pollution_exp_index | number | No | ||||
| data.pollution_index | number | No | ||||
| data.property_affordability_index | number | No | ||||
| data.property_gross_rental_yield_city_centre | number | No | ||||
| data.property_gross_rental_yield_outside_centre | number | No | ||||
| data.property_mortgage_pct_of_income | number | No | ||||
| data.property_price_to_income_ratio | number | No | ||||
| data.property_price_to_rent_ratio_city_centre | number | No | ||||
| data.property_price_to_rent_ratio_outside_centre | number | No | ||||
| data.quality_of_life_index | number | No | ||||
| data.rent_index | number | No | ||||
| data.restaurant_price_index | number | No | ||||
| data.safety_index | number | No | ||||
| data.schema_version | integer | No | ||||
| data.synced_at | string | No | ||||
| data.traffic_co2_emission_index | number | No | ||||
| data.traffic_index | number | No | ||||
| data.traffic_inefficiency_index | number | No | ||||
| data.traffic_time_exp_index | number | No | ||||
| data.traffic_time_index_minutes | number | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/datasets/numbeo-cities/items/Los-Angeles" \
-H "x-api-key: $CRAWLORA_API_KEY"