Cost-of-living comparisons
Use Numbeo endpoints to turn cost-of-living comparisons into repeatable API requests with documented inputs and JSON responses.
Compare cities and countries with normalized Numbeo cost-of-living and quality indices. Retrieve city or country detail and current or historical rankings for location research, relocation products, market analysis, and local-data enrichment.
Retrieve public Numbeo cost-of-living, quality-of-life, crime, health-care, pollution, traffic, and property indices as structured JSON.
Endpoint families
2
Documented params
20
Examples
8
Live catalog snapshot
Active endpoints
8
Methods
GET
Required params
16
Schema refs
8
{
"platform": "Numbeo",
"endpoint": "numbeo-cost-of-living-rankings",
"method": "GET",
"path": "/numbeo/cost-of-living/rankings",
"auth": "apiKey"
}Use cases
Retrieve public Numbeo cost-of-living, quality-of-life, crime, health-care, pollution, traffic, and property indices as structured JSON.
Use Numbeo endpoints to turn cost-of-living comparisons into repeatable API requests with documented inputs and JSON responses.
Use Numbeo endpoints to turn city and country market research into repeatable API requests with documented inputs and JSON responses.
Use Numbeo endpoints to turn relocation and location intelligence into repeatable API requests with documented inputs and JSON responses.
Managed execution
Every figure below is read from the live Numbeo endpoint catalog — 8 endpoints, 20 documented request parameters, and 8 published response schemas — the same catalog Docs and Playground run against.
8 documented Numbeo endpoints, grouped into 2 request families — Cost Of Living and Indices.
20 request parameters are documented across those Numbeo endpoints, 16 of them required — the full input contract is public before you write any integration code.
8 of the 8 Numbeo endpoints ship a recorded example response, and 8 carry a documented response schema — you can code against the real JSON before the first request.
Numbeo endpoints document their error responses (400, 404, 500 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
8 hosted MCP tools back the Numbeo endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Coverage map
These cards are generated from the active endpoint catalog, so the landing page reflects the same API surface used by Docs and Playground.
/numbeo/cost-of-living/rankings
/numbeo/indices/rankings
Endpoint catalog
/numbeo/cost-of-living/rankingsReturns the global cost-of-living city ranking (Cost of Living, Rent, Cost of Living Plus Rent, Groceries, Restaurant Price, and Local Purchasing Power indices), either the continuously-updated current index or a historical periodic snapshot. Credential-free public Numbeo data (numbeo.com).
MCP tool numbeo_cost_of_living_rankings
/numbeo/cost-of-living/rankings-by-countryReturns the global country-level cost-of-living ranking (Cost of Living, Rent, Cost of Living Plus Rent, Groceries, Restaurant Price, and Local Purchasing Power indices). Credential-free public Numbeo data (numbeo.com).
MCP tool numbeo_cost_of_living_rankings_by_country
/numbeo/cost-of-living/city/{slug}Returns itemized cost-of-living prices for one city (restaurants, markets, transportation, utilities, rent, and more), grouped by category. Credential-free public Numbeo data (numbeo.com).
MCP tool numbeo_cost_of_living_city
/numbeo/cost-of-living/countryReturns aggregate itemized cost-of-living prices for a country, plus the headline cost-of-living indices for every city Numbeo tracks there. Credential-free public Numbeo data (numbeo.com).
MCP tool numbeo_cost_of_living_country
/numbeo/indices/rankingsReturns the global city ranking for a Numbeo index family, either the continuously-updated current index or a historical periodic snapshot. Credential-free public Numbeo data (numbeo.com).
MCP tool numbeo_indices_rankings
/numbeo/indices/rankings-by-countryReturns the global country-level ranking for a Numbeo index family. Credential-free public Numbeo data (numbeo.com).
MCP tool numbeo_indices_rankings_by_country
/numbeo/indices/city/{slug}Returns one city's data for a Numbeo index family (quality of life, crime, health care, pollution, traffic, or property investment): headline indices, and (depending on the family) titled sub-index sections and/or itemized prices. Credential-free public Numbeo data (numbeo.com).
MCP tool numbeo_indices_city
/numbeo/indices/countryReturns one country's aggregate data for a Numbeo index family, plus every city Numbeo tracks there with its index breakdown. Credential-free public Numbeo data (numbeo.com).
MCP tool numbeo_indices_country
Related APIs
Maps & Local Data
Collect local business and place data from Google Maps for location intelligence workflows.
Maps & Local Data
Search ready-made scraped datasets for local business research with filters, facets, geo queries, and repeatable API output.
Maps & Local Data
Normalize location search, coordinate lookup, and OSM identifier enrichment through API-key protected geocoding endpoints.
How to scrape Numbeo
Crawlora's 8 Numbeo endpoints normalize public city and country indices into JSON. numbeo.com is a plain server-rendered site with no bot manager in front of it — the awkward part is its vocabulary of city slugs, index families, and historical periods, which these endpoints hand you directly.
Cost of living has its own routes. Everything else goes through /numbeo/indices/* with an index of quality-of-life, crime, health-care, pollution, traffic, or property-investment.
The ranking routes need no identifier at all and return every ranked city or country with its indices — plus each row's city_slug, which is the exact value the city routes expect as a path parameter.
/numbeo/cost-of-living/city/{slug} returns itemized prices grouped by category (restaurants, markets, transport, utilities, rent) with a low and high range on each item. /numbeo/indices/city/{slug} returns that city's headline and sub-indices for one family.
The country routes take a country name as Numbeo spells it and return the aggregate figures alongside every city Numbeo tracks in that country.
Ranking routes accept scope=historical with a period such as 2026-mid, 2025, or 2024. Coverage shrinks as you go back — a recent period ranks several hundred more cities than an older one — so hold the period fixed when you compare across time.
FAQ
Six on the indices routes — quality of life, crime, health care, pollution, traffic, and property investment — plus cost of living, which has its own city, country, and ranking routes.
From any ranking response. Each row carries a city_slug (for example The-Hague-Den-Haag-Netherlands) that is exactly what /numbeo/cost-of-living/city/{slug} and /numbeo/indices/city/{slug} take as their path parameter, so you never have to guess the spelling.
Yes. Pass scope=historical and a period such as 2026-mid or 2024 to either ranking route. Older periods cover noticeably fewer cities than current ones, so compare like with like rather than reading a coverage change as a ranking change.
Not technically — it is a server-rendered page with no bot manager in front of it. What is awkward is the shape: city slugs, index families, sub-index sections, and period vocabulary all differ by route. These endpoints normalize that into one JSON contract.
That is between you and Numbeo. Numbeo's terms make personal use free with a link back to numbeo.com and allow academic or media reuse with credit, but republishing Numbeo data through another API or public-facing data feed needs Numbeo's prior consent. These endpoints read the same public pages a browser sees — attribute Numbeo and check its terms before redistributing rather than using the values internally.
No. Numbeo's Cost of Living API is a paid product — commercial access to its city and country indices runs through purchased plans or a separate data license, not a free tier. Crawlora is not affiliated with Numbeo; these endpoints normalize the same public city and country pages instead.