Numbeo Cost of Living & Quality of Life Scraper | from $1/1K
Pricing
from $3.75 / 1,000 numbeo cost of living & quality of life scraper | from $1/1ks
Numbeo Cost of Living & Quality of Life Scraper | from $1/1K
Scrape itemized cost-of-living prices (55 items: restaurants, groceries, transport, utilities, rent, salaries) and quality-of-life indices (safety, health care, climate, pollution, traffic, purchasing power) by city from Numbeo.com. No API key required.
Pricing
from $3.75 / 1,000 numbeo cost of living & quality of life scraper | from $1/1ks
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Numbeo Cost of Living & Quality of Life Scraper | No API key
For relocation researchers, salary calculators, and AI agents comparing city cost-of-living and livability — without a Numbeo API subscription.
No API key required. No login. $1.00/1,000 price items · $3.00/1,000 city index records (Pay Per Event). Every record includes parse_confidence (0.0–1.0) and warnings.
What data you get
Cost-of-living mode — 55 itemized prices per city
One record per item, grouped into 10 categories: Restaurants, Markets, Transportation, Utilities (Monthly), Sports and Leisure, Childcare, Clothing and Shoes, Rent Per Month, Buy Apartment Price, Salaries and Financing.
city,city_slug,category,item(e.g. "Meal at an Inexpensive Restaurant")price,currency(parsed from the displayed value, e.g.$25.00→price=25.0, currency="$")price_low,price_high— the observed contributor range shown on Numbeo's price bar
Quality-of-life mode — composite indices per city
One record per city with 8 sub-indices (each a numeric score + qualitative rating: Very High/High/Moderate/Low/Very Low) and the overall composite:
purchasing_power_index/purchasing_power_ratingsafety_index/safety_ratinghealth_care_index/health_care_ratingclimate_index/climate_ratingcost_of_living_index/cost_of_living_ratingproperty_price_to_income_ratio/property_price_to_income_ratingtraffic_commute_time_index/traffic_commute_time_ratingpollution_index/pollution_ratingqol_index— the overall composite Quality of Life Index
Access path & compliance
Both endpoints are server-rendered HTML, no Cloudflare/JS challenge — fetched with curl_cffi browser-TLS impersonation, no browser or residential proxy required (verified live 2026-07-15).
numbeo.com/robots.txtdisallows only/heavy_crawling.any— both/cost-of-living/in/<city>and/quality-of-life/in/<city>are fully clean, no restrictions.- No login wall, no rate-limit encountered during recon probing.
Input
| Field | Mode | Description |
|---|---|---|
mode | both | cost-of-living or quality-of-life |
cities | both | City names, e.g. ["New York", "London", "Tokyo"] — auto-slugified (spaces → hyphens) |
maxItems | cost-of-living | Max total price-item records across all cities (0 = no limit) |
City names are auto-converted to Numbeo's URL slug format ("New York" → "New-York"). Ambiguous city names (multiple cities share a name, e.g. several "Cambridge"s) may resolve to the wrong page or a 404 — pass the exact Numbeo slug (visible in the site's own URL) for those cases.
Output examples
Cost-of-living (abridged):
{"city": "New York", "city_slug": "New-York","category": "Restaurants", "item": "Meal at an Inexpensive Restaurant","price": 25.0, "currency": "$", "price_low": 15.0, "price_high": 50.0,"mode": "cost-of-living", "scraped_at": "2026-07-15T10:00:00Z","parse_confidence": 1.0, "warnings": []}
Quality-of-life (abridged):
{"city": "New York", "city_slug": "New-York","qol_index": 136.89,"purchasing_power_index": 105.49, "purchasing_power_rating": "High","safety_index": 49.20, "safety_rating": "Moderate","cost_of_living_index": 100.00, "cost_of_living_rating": "Very High","mode": "quality-of-life", "scraped_at": "2026-07-15T10:00:00Z","parse_confidence": 1.0, "warnings": []}
Edge cases
- Unresolvable / misspelled city: cost-of-living mode pushes one record with
warnings: ["fetch_failed"], all price fieldsnull; quality-of-life mode does the same for its one record. - City page exists but table format changed:
warnings: ["no_items_parsed"](cost-of-living) or["no_indices_parsed"](quality-of-life),parse_confidencenear 0 — a loud signal to re-check the site structure, not a silent empty result. - Partial index set (rare small cities missing e.g. a Climate Index):
warnings: ["some_indices_missing"], the missing sub-index fields arenull, others still populate.
Known limitations
- No historical trend data (Numbeo's
/cost-of-living/prices_by_city.jsphistory view isn't covered by this actor's two modes). - Currency is whatever Numbeo displays server-side for that city (mostly USD by default) — no currency-conversion parameter in this version.