# Numbeo Cost of Living Scraper (`parseforge/numbeo-scraper`) Actor

Scrape cost of living data from Numbeo for 539+ cities and 155 countries. Get price indices, individual item prices, and city comparisons. Covers rent, groceries, restaurants, transport, and utilities. Perfect for relocation research and market analysis.

- **URL**: https://apify.com/parseforge/numbeo-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Developer tools, Automation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.40 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🌍 Numbeo Cost of Living Scraper

Collect cost of living data from Numbeo.com without coding. This scraper extracts city rankings, country rankings, individual city prices, and city-to-city comparisons, making it perfect for researchers analyzing global living costs, digital nomads comparing destinations, or businesses benchmarking employee relocation packages.

> **The Numbeo Cost of Living Scraper collects living cost indices for 500+ cities and 150+ countries, plus detailed prices for 55+ everyday items in any city worldwide.**

### ✨ What Does It Do

- 🏙️ **City Rankings** - Compare 500+ cities by cost of living, rent, groceries, restaurants, and purchasing power indices
- 🌐 **Country Rankings** - Compare 150+ countries using the same six standardized indices
- 🛒 **City Prices** - Get 55+ individual item prices for any city (meals, groceries, transport, utilities, rent)
- ⚖️ **City Comparison** - Side-by-side price comparison between any two cities worldwide
- 📊 **Six Index Types** - Cost of Living, Rent, CoL+Rent, Groceries, Restaurant Price, Local Purchasing Power
- 💱 **Local Currency** - Prices returned in local currency with currency symbol included
- 📅 **Timestamp** - Every record includes a scraped-at timestamp for time-series analysis

### 🔧 Input

- **Mode** - Choose between city rankings, country rankings, city prices, or city comparison
- **City** - City name for prices mode (e.g. "New-York", "London", "Tokyo")
- **City 1 / City 2** - Two cities for comparison mode
- **Country 1 / Country 2** - Countries for comparison mode
- **Max Items** - How many results to collect per run

Example input (city rankings):
```json
{
  "mode": "rankings",
  "maxItems": 10
}
````

Example input (city prices):

```json
{
  "mode": "cityPrices",
  "city": "New-York",
  "maxItems": 10
}
```

Example input (compare):

```json
{
  "mode": "compare",
  "city1": "New-York",
  "country1": "United-States",
  "city2": "London",
  "country2": "United-Kingdom",
  "maxItems": 10
}
```

### 📊 Output

Each result includes structured cost of living data. Download as JSON, CSV, or Excel.

**Rankings mode:**

| 🏅 Rank | 🏙️ City | 🌍 Country |
|---|---|---|
| 📊 Cost of Living Index | 🏠 Rent Index | 📊 CoL + Rent Index |
| 🛒 Groceries Index | 🍽️ Restaurant Price Index | 💰 Purchasing Power Index |
| ⏰ Scraped At | | |

**City Prices mode:**

| 📂 Category | 🛒 Item | 💰 Price |
|---|---|---|
| 💱 Currency | 🏙️ City | ⏰ Scraped At |

### 💎 Why Choose the Numbeo Cost of Living Scraper?

| Feature | Our Actor |
|---|---|
| Fast API-based extraction (no browser needed) | ✔️ |
| 4 scraping modes (rankings, country, prices, compare) | ✔️ |
| 500+ cities and 150+ countries covered | ✔️ |
| 55+ individual price items per city | ✔️ |
| CSV, Excel, and JSON export | ✔️ |
| No proxy required - direct access | ✔️ |
| Support for large-scale collection (1 million+ items) | ✔️ |
| Scrape timestamp for time-series tracking | ✔️ |

### 📋 How to Use

No technical skills required. Follow these simple steps:

1. **Sign Up** - [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp)
2. **Find the Tool** - Search for "Numbeo Cost of Living Scraper" in the Apify Store and select your mode
3. **Run It** - Click "Start" and watch your results appear

That's it. No coding, no setup needed. Export your data in CSV, Excel, or JSON format.

### 🎯 Business Use Cases

- 📊 **Data Analyst** - Build monthly cost of living dashboards tracking 500+ cities to publish relocation guides and salary benchmarks
- 🌍 **Digital Nomad Planner** - Compare living costs across destinations to find the best value cities for remote work
- 💼 **HR / Relocation Manager** - Generate side-by-side cost comparisons for employee relocation packages and salary adjustments
- 🏢 **Real Estate Researcher** - Track rent indices across global markets to identify investment opportunities

### ❓ FAQ

**🔍 How does this scraper work?**
The scraper fetches publicly available data from Numbeo.com and parses the HTML tables to extract structured cost of living data. No browser automation needed - pure HTTP requests for fast and reliable results.

**📊 What indices are available?**
Numbeo provides six indices: Cost of Living (excl. rent), Rent, Cost of Living + Rent, Groceries, Restaurant Price, and Local Purchasing Power. All indices use New York City as the baseline (index = 100).

**🏙️ What cities are available?**
Numbeo covers 500+ cities worldwide. Use the rankings mode first to see all available cities, then use cityPrices mode with the exact city name from the rankings.

**📅 Can I schedule this to run automatically?**
Yes. Use the Apify scheduler to run this actor on a daily, weekly, or monthly basis. You can also integrate it with Make, Zapier, or GitHub Actions for automated cost of living tracking.

**⚖️ Is scraping Numbeo allowed?**
Numbeo is a publicly accessible website. You are collecting publicly visible data. Always review the site terms of service and ensure your use case complies with local laws and regulations.

**🛡️ Will Numbeo block me?**
Numbeo has no significant anti-bot protection. The scraper uses standard HTTP requests and works without proxies.

**⚡ How long does a run take?**
A rankings run collecting all 500+ cities takes a few seconds. City prices for a single city takes under 2 seconds. Compare mode also completes in under 2 seconds.

**⚠️ Are there any limits?**
Free users get up to 10 items. Paid users can collect up to 1,000,000 results.

### 🔗 Integrate Numbeo Cost of Living Scraper with any app

- [Make](https://docs.apify.com/platform/integrations/make) - Automate workflows
- [Zapier](https://docs.apify.com/platform/integrations/zapier) - Connect 5000+ apps
- [GitHub](https://docs.apify.com/platform/integrations/github) - Version control integration
- [Slack](https://docs.apify.com/platform/integrations/slack) - Get notifications
- [Airbyte](https://docs.apify.com/platform/integrations/airbyte) - Data pipelines
- [Google Drive](https://docs.apify.com/platform/integrations/drive) - Export to spreadsheets

### 💡 More ParseForge Actors

- [FRED Economic Data Scraper](https://apify.com/parseforge/fred-scraper) - Collect Federal Reserve economic data series and indicators
- [Greatschools Scraper](https://apify.com/parseforge/greatschools-scraper) - Extract school ratings, reviews, and demographic data
- [PR Newswire Scraper](https://apify.com/parseforge/pr-newswire-scraper) - Collect press releases and corporate news
- [GSA eLibrary Scraper](https://apify.com/parseforge/gsa-elibrary-scraper) - Extract government contract and vendor data
- [Pitchbook Funds Scraper](https://apify.com/parseforge/pitchbook-funds-scraper) - Collect investment fund data and performance metrics

Browse our complete collection of [data extraction tools](https://apify.com/parseforge) for more.

### 🚀 Ready to Start?

[Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) and collect your first 100 results for free. No coding, no setup.

### 🆘 Need Help?

- Check the FAQ section above for common questions
- Visit the [Apify support page](https://docs.apify.com) for documentation and tutorials
- Contact us to request a new scraper, propose a custom project, or report an issue at [Tally contact form](https://tally.so/r/BzdKgA)

### ⚠️ Disclaimer

> This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Numbeo.com or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.

# Actor input Schema

## `mode` (type: `string`):

Select the scraping mode. 'rankings' returns cost of living indices for 500+ cities. 'countryRankings' returns indices for 150+ countries. 'cityPrices' returns individual prices for a specific city. 'compare' compares prices between two cities.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `city` (type: `string`):

City name for 'cityPrices' mode. Use the URL-friendly format from Numbeo (e.g. 'New-York', 'London', 'Tokyo', 'Buenos-Aires').

## `city1` (type: `string`):

First city for comparison (e.g. 'New-York'). Used only in 'compare' mode.

## `country1` (type: `string`):

Country of first city (e.g. 'United-States'). Used only in 'compare' mode.

## `city2` (type: `string`):

Second city for comparison (e.g. 'London'). Used only in 'compare' mode.

## `country2` (type: `string`):

Country of second city (e.g. 'United-Kingdom'). Used only in 'compare' mode.

## Actor input object example

```json
{
  "mode": "rankings",
  "maxItems": 10,
  "city": "New-York",
  "city1": "New-York",
  "country1": "United-States",
  "city2": "London",
  "country2": "United-Kingdom"
}
```

# Actor output Schema

## `overview` (type: `string`):

Overview of cost of living data

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "rankings",
    "maxItems": 10,
    "city": "New-York",
    "city1": "New-York",
    "country1": "United-States",
    "city2": "London",
    "country2": "United-Kingdom"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/numbeo-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "rankings",
    "maxItems": 10,
    "city": "New-York",
    "city1": "New-York",
    "country1": "United-States",
    "city2": "London",
    "country2": "United-Kingdom",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/numbeo-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "rankings",
  "maxItems": 10,
  "city": "New-York",
  "city1": "New-York",
  "country1": "United-States",
  "city2": "London",
  "country2": "United-Kingdom"
}' |
apify call parseforge/numbeo-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/numbeo-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Numbeo Cost of Living Scraper",
        "description": "Scrape cost of living data from Numbeo for 539+ cities and 155 countries. Get price indices, individual item prices, and city comparisons. Covers rent, groceries, restaurants, transport, and utilities. Perfect for relocation research and market analysis.",
        "version": "1.0",
        "x-build-id": "7TqZRQfDn7mf5x2EB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~numbeo-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-numbeo-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~numbeo-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-numbeo-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~numbeo-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-numbeo-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "rankings",
                            "countryRankings",
                            "cityPrices",
                            "compare"
                        ],
                        "type": "string",
                        "description": "Select the scraping mode. 'rankings' returns cost of living indices for 500+ cities. 'countryRankings' returns indices for 150+ countries. 'cityPrices' returns individual prices for a specific city. 'compare' compares prices between two cities.",
                        "default": "rankings"
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "city": {
                        "title": "City Name",
                        "type": "string",
                        "description": "City name for 'cityPrices' mode. Use the URL-friendly format from Numbeo (e.g. 'New-York', 'London', 'Tokyo', 'Buenos-Aires')."
                    },
                    "city1": {
                        "title": "City 1",
                        "type": "string",
                        "description": "First city for comparison (e.g. 'New-York'). Used only in 'compare' mode."
                    },
                    "country1": {
                        "title": "Country 1",
                        "type": "string",
                        "description": "Country of first city (e.g. 'United-States'). Used only in 'compare' mode."
                    },
                    "city2": {
                        "title": "City 2",
                        "type": "string",
                        "description": "Second city for comparison (e.g. 'London'). Used only in 'compare' mode."
                    },
                    "country2": {
                        "title": "Country 2",
                        "type": "string",
                        "description": "Country of second city (e.g. 'United-Kingdom'). Used only in 'compare' mode."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
