Numbeo Cost of Living Scraper
Pricing
Pay per event
Numbeo Cost of Living Scraper
Scrape cost-of-living data from Numbeo.com — city rankings with indices, detailed price lists per city, and city-to-city comparisons. Covers 486+ cities with 93 price items each.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
0
Bookmarked
4
Total users
1
Monthly active users
9 days ago
Last modified
Share
Scrape cost-of-living data from Numbeo.com — the world's largest database of user-contributed data about cities and countries. Extract city rankings, detailed price lists, and city-to-city comparisons in structured JSON, CSV, or Excel format.
What data can you scrape?
This actor supports three scraping modes:
1. City Rankings
Scrape the global cost-of-living rankings table with indices for 486+ cities worldwide. Each city includes:
- Cost of Living Index — relative to New York City (100)
- Rent Index — apartment rent prices relative to NYC
- Cost of Living + Rent Index — combined metric
- Groceries Index — grocery prices relative to NYC
- Restaurant Price Index — dining costs relative to NYC
- Local Purchasing Power Index — relative purchasing power
2. City Prices
Get detailed price breakdowns for specific cities. Each city page contains ~93 individual price items organized by category:
- Restaurants — meal prices, coffee, beer, water at restaurants
- Markets — grocery prices for milk, bread, eggs, cheese, fruits, vegetables, meat
- Transportation — public transit tickets, taxi fares, gasoline prices
- Utilities — electricity, water, heating, internet, mobile plans
- Sports and Leisure — gym memberships, cinema tickets, tennis court rentals
- Childcare — preschool, international school fees
- Clothing and Shoes — brand-name and mid-range clothing prices
- Rent Per Month — apartments (1-bedroom and 3-bedroom, city center and outside)
- Buy Apartment Price — price per square meter in and outside city center
- Salaries and Financing — average monthly salary, mortgage interest rates
3. City Comparison
Compare two cities side by side. Get price differences for every item with percentage comparisons, making it easy to understand the relative cost of living.
Use cases
Relocation research
Moving to a new city? Compare cost of living between your current city and potential destinations. Understand exactly how much more or less you will spend on rent, groceries, dining out, and transportation.
Salary benchmarking
HR teams and recruiters use cost-of-living data to set competitive salaries across different locations. Compare purchasing power indices to understand what equivalent salaries look like in different cities.
Remote work location planning
Digital nomads and remote workers can evaluate potential base cities by comparing living costs. Find cities with the best quality-of-life-to-cost ratio by analyzing purchasing power alongside rent and grocery indices.
Academic and economic research
Researchers studying urbanization, economic development, and quality of life use Numbeo data as a primary source. Export structured datasets for statistical analysis and cross-city modeling.
HR compensation planning
Build location-based compensation tiers backed by real data. Use rankings indices to create multipliers for different office locations and calculate equitable pay adjustments.
Market analysis
Companies evaluating expansion into new markets can use cost-of-living data to estimate operational costs, employee compensation requirements, and consumer purchasing power in target cities.
Real estate investment
Compare rent indices and apartment purchase prices across cities to identify markets with favorable rent-to-price ratios or emerging affordable markets.
How to use
Rankings mode (default)
Scrape the global rankings table. Set maxCities to limit results.
{"mode": "rankings","maxCities": 20}
Output example:
{"rank": 1,"city": "Hamilton","country": "Bermuda","costOfLivingIndex": 148.17,"rentIndex": 95.38,"costOfLivingPlusRentIndex": 123.43,"groceriesIndex": 155.89,"restaurantPriceIndex": 138.22,"localPurchasingPowerIndex": 97.24,"url": "https://www.numbeo.com/cost-of-living/in/Hamilton"}
City Prices mode
Scrape detailed prices for specific cities.
{"mode": "city_prices","cities": ["New York", "London", "Tokyo", "Berlin"]}
Output example:
{"city": "New York","country": "United States","category": "Restaurants","item": "Meal, Inexpensive Restaurant","price": 25.00,"currency": "USD","range": "15.00-40.00","url": "https://www.numbeo.com/cost-of-living/in/New-York","scrapedAt": "2026-03-26T10:30:00.000Z"}
Comparison mode
Compare two cities side by side.
{"mode": "comparison","cities": ["New York", "London"]}
Output example:
{"city1": "New York","city2": "London","category": "Restaurants","item": "Meal, Inexpensive Restaurant","city1Price": 25.00,"city2Price": 20.00,"difference": "-20.00%","currency": "USD","url": "https://www.numbeo.com/cost-of-living/compare_cities.jsp?city1=New+York&city2=London","scrapedAt": "2026-03-26T10:30:00.000Z"}
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | rankings | Scraping mode: rankings, city_prices, or comparison |
cities | array | [] | List of city names (for city_prices and comparison modes) |
maxCities | integer | 50 | Max cities to return in rankings mode |
year | string | (current) | Year for historical data (e.g., "2024") |
currency | string | (local) | Display currency code (e.g., "USD", "EUR") |
language | string | en | Language code |
requestDelay | integer | 500 | Delay between requests in milliseconds |
City name format
Use city names as they appear on Numbeo. Multi-word cities use spaces in the input and are automatically converted to URL slugs:
"New York"becomes/in/New-York"Buenos Aires"becomes/in/Buenos-Aires"Ho Chi Minh City"becomes/in/Ho-Chi-Minh-City"London"becomes/in/London
Output format
Data is stored in the default dataset and can be exported as:
- JSON — structured data for programmatic use
- CSV — spreadsheet-compatible format
- Excel — direct download as .xlsx
- XML — for data pipeline integration
Access results via the Apify API, Console UI, or integrate with tools like Google Sheets, Zapier, Make, or custom webhooks.
Performance and limits
| Metric | Value |
|---|---|
| Memory | 256 MB |
| Rankings (all cities) | ~5 seconds |
| Per city (prices) | ~2 seconds |
| Default rate limit | 500ms between requests |
| Retry attempts | 3 with exponential backoff |
Pricing
This actor uses pay-per-event pricing:
| Event | Price |
|---|---|
| Run started | $0.01 (one-time) |
| City scraped (FREE tier) | $0.005 per city |
| City scraped (BRONZE) | $0.0045 per city |
| City scraped (SILVER) | $0.004 per city |
| City scraped (GOLD) | $0.00325 per city |
| City scraped (PLATINUM) | $0.0025 per city |
| City scraped (DIAMOND) | $0.002 per city |
Example costs:
- Rankings (50 cities): $0.01 + 50 x $0.005 = $0.26
- City prices (10 cities): $0.01 + 10 x $0.005 = $0.06
- Comparison (2 cities): $0.01 + 2 x $0.005 = $0.02
Integrations
Connect this actor to your existing workflows:
- Google Sheets — automatically export data to spreadsheets
- Slack / Discord — get notifications when scraping completes
- Zapier / Make — trigger downstream automations
- Webhooks — receive data via HTTP callbacks
- API — programmatic access to datasets and runs
Tips
- Start with rankings to identify cities of interest, then use city_prices for detailed data.
- Use the currency parameter to normalize all prices to a single currency for easier comparison.
- Historical data is available by setting the year parameter — useful for tracking trends over time.
- Rate limiting — the default 500ms delay works well. Increase if you encounter issues.
- Comparison mode is ideal for quick A-vs-B decisions; use city_prices for comprehensive data.
Data freshness
Numbeo data is updated continuously by user contributions. The scraper extracts the latest available data at the time of each run. For historical analysis, use the year parameter to access archived data.
Legal and ethical use
This actor scrapes publicly available data from Numbeo.com. Users are responsible for complying with Numbeo's Terms of Service and applicable data regulations. The actor implements polite scraping practices with rate limiting and retry backoff.
Support
- Bug reports: Open an issue on the actor's Apify Store page
- Feature requests: Contact the author via Apify messaging
- Documentation: Refer to this README and the input schema tooltips

