Datasets API endpoint
Returns one Numbeo country from the dataset by `country`, spelled as Numbeo does, such as `Vietnam`. The record has a `coverage` list and country-level indices for cost of living, rent, quality of life, crime, safety, health care, pollution, traffic and property, present only where ranked.
/datasets/numbeo-countries/items/{country}Returns one composite Numbeo country record by country name.
Dataset id enum:
numbeo-countriesPath parameters:
country: required, country name as Numbeo spells it, e.g. Vietnam.Response fields are the same index set as
Get a Numbeo city from the dataset, keyed by
country instead of city_slug/city (no city-level fields).
| Field | In the sample | Value in the sample |
|---|---|---|
| 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 | 32.7 |
| property_gross_rental_yield_city_centre | Has a value | 2.6 |
| property_gross_rental_yield_outside_centre | Has a value | 3.3 |
| property_price_to_rent_ratio_city_centre | Has a value | 38.4 |
| property_price_to_rent_ratio_outside_centre | Has a value | 30.2 |
| property_mortgage_pct_of_income | Has a value | 346.1 |
| 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 |
|---|---|---|---|---|---|
| country (path) | string | Yes | Country name as Numbeo spells it | Vietnam | |
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/datasets/numbeo-countries/items/Vietnam" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"country": "Vietnam",
"coverage": [
"cost-of-living",
"crime",
"quality-of-life"
],
"cost_of_living_index": 39.8,
"crime_index": 39.75,
"safety_index": 60.25,
"quality_of_life_index": 118.2,
"synced_at": "2026-07-13T00:00:00Z",
"schema_version": 1
}
}Request schema
No body schema
Response schema
#/definitions/datasets.numbeoCountryResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | es.NumbeoCountryRecord | 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-countries/items/Vietnam" \
-H "x-api-key: $CRAWLORA_API_KEY"