# Numbeo API

> Numbeo returns city cost-of-living indices, estimates, prices, and comparisons, available as a workflow and API.

Get cost of living returns city indices, monthly estimates excluding rent, and prices; it needs a city, with currency optional. Compare cost of living returns differences and a salary estimate; it needs two cities, with salary and currency optional.

- Page: https://fous.com/tools/numbeo
- Handle: `@numbeo`
- Category: [Data](https://fous.com/tools/category/data)
- Source website: https://numbeo.com
- Last verified: Sep 29, 2026

## Methods

### Compare cost of living

Operation `compare_cost_of_living`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Compare living costs in two Numbeo cities, including six price and purchasing-power differences and the monthly take-home salary needed to maintain a similar standard of living. The salary calculation assumes rent in both cities.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `to_city` | string | yes | `"Berlin"` | Destination city, such as Berlin or Berlin, Germany. |
| `currency` | string | no | `"euros"` | Currency for the salary calculation, such as GBP, EUR, or British pound. Defaults to the starting city’s currency. |
| `from_city` | string | yes | `"London"` | Starting city, such as London or London, United Kingdom. |
| `monthly_salary` | number | no | `3500` | Monthly take-home pay in the starting city, such as 5000. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "from_city",
    "to_city"
  ],
  "properties": {
    "to_city": {
      "type": "string",
      "title": "To city",
      "description": "Destination city, such as Berlin or Berlin, Germany.",
      "examples": [
        "Berlin",
        "London"
      ]
    },
    "currency": {
      "type": "string",
      "description": "Currency for the salary calculation, such as GBP, EUR, or British pound. Defaults to the starting city’s currency.",
      "examples": [
        "euros"
      ]
    },
    "from_city": {
      "type": "string",
      "title": "From city",
      "description": "Starting city, such as London or London, United Kingdom.",
      "examples": [
        "London",
        "Berlin"
      ]
    },
    "monthly_salary": {
      "type": "number",
      "default": 5000,
      "description": "Monthly take-home pay in the starting city, such as 5000.",
      "exclusiveMinimum": 0,
      "examples": [
        3500
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "to_city": "Berlin",
      "from_city": "London"
    },
    {
      "to_city": "London",
      "currency": "euros",
      "from_city": "Berlin",
      "monthly_salary": 3500
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `to_city` | string | `"Berlin"` |  |
| `from_city` | string | `"London"` |  |
| `rent_percent` | number | `-48` |  |
| `comparison_link` | string | `"https://www.numbeo.com/cost-of-living/compare_cities.jsp?country1=United+Kingdom&city1=London&country2=Germany&city2=Be` |  |
| `groceries_percent` | number | `-7.4` |  |
| `consumer_prices_percent` | number | `-16.7` | Percent difference excluding rent; negative means cheaper in the destination. |
| `required_monthly_salary` | object |  |  |
| `required_monthly_salary.amount` | number | `3546.4` |  |
| `required_monthly_salary.currency` | string | `"GBP"` |  |
| `restaurant_prices_percent` | number | `-21.9` |  |
| `local_purchasing_power_percent` | number | `4` |  |
| `consumer_prices_including_rent_percent` | number | `-29.1` |  |

**Example input**

```json
{
  "to_city": "Berlin",
  "from_city": "London"
}
```

**Example output**

```json
{
  "to_city": "Berlin",
  "from_city": "London",
  "rent_percent": -48,
  "comparison_link": "https://www.numbeo.com/cost-of-living/compare_cities.jsp?country1=United+Kingdom&city1=London&country2=Germany&city2=Berlin&amount=5000",
  "groceries_percent": -7.4,
  "consumer_prices_percent": -16.7,
  "required_monthly_salary": {
    "amount": 3546.4,
    "currency": "GBP"
  },
  "restaurant_prices_percent": -21.9,
  "local_purchasing_power_percent": 4,
  "consumer_prices_including_rent_percent": -29.1
}
```

### Get cost of living

Operation `get_cost_of_living`, version 1. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.

Get a city’s current cost of living indices, monthly estimates without rent, and typical prices. Add a country or state to distinguish cities with the same name. Some prices have no reported range, and cities without a current published index return null indices.

**Input**

| Field | Type | Required | Example | Description |
|---|---|---|---|---|
| `city` | string | yes | `"Portland, Oregon"` | City name, with a country or state if needed, e.g. Lisbon or Portland, Oregon. |
| `currency` | string | no | `"British pound"` | Display currency name or 3-letter code, e.g. British pound or GBP. Defaults to the city’s local currency. |

**Input schema**

```json
{
  "type": "object",
  "required": [
    "city"
  ],
  "properties": {
    "city": {
      "type": "string",
      "description": "City name, with a country or state if needed, e.g. Lisbon or Portland, Oregon.",
      "examples": [
        "Portland, Oregon",
        "Lisbon"
      ]
    },
    "currency": {
      "type": "string",
      "default": "",
      "description": "Display currency name or 3-letter code, e.g. British pound or GBP. Defaults to the city’s local currency.",
      "examples": [
        "British pound"
      ]
    }
  },
  "additionalProperties": false,
  "examples": [
    {
      "city": "Portland, Oregon"
    },
    {
      "city": "Lisbon"
    },
    {
      "city": "Lisbon",
      "currency": "British pound"
    }
  ]
}
```

**Output**

| Field | Type | Example | Description |
|---|---|---|---|
| `city` | string | `"Portland"` | City name. |
| `prices` | array |  | Typical item prices in currency, with reported low and high values when available. |
| `prices[].item` | string | `"Meal at an Inexpensive Restaurant"` |  |
| `prices[].category` | string | `"Restaurants"` |  |
| `prices[].low_price` | number or null | `16` |  |
| `prices[].high_price` | number or null | `35` |  |
| `prices[].average_price` | number or null | `25` |  |
| `country` | string | `"United States"` | Country name. |
| `currency` | string | `"USD"` | Three-letter currency code used for all money amounts. |
| `rent_index` | number or null | `44.4` | Current rent index, when published. |
| `numbeo_link` | string | `"https://www.numbeo.com/cost-of-living/in/Portland"` | City cost of living page. |
| `cost_of_living_index` | number or null | `85.7` | Current cost of living index, when published. |
| `data_last_updated_month` | string or null | `"2026-09"` | Latest city price update month in YYYY-MM format. |
| `monthly_cost_one_person_without_rent` | number or null | `1500.9` | Estimated monthly cost for one person, excluding rent, in currency. |
| `monthly_cost_family_of_four_without_rent` | number or null | `5408.4` | Estimated monthly cost for a family of four, excluding rent, in currency. |

**Example input**

```json
{
  "city": "Portland, Oregon"
}
```

**Example output**

```json
{
  "city": "Portland",
  "prices": [
    {
      "item": "Meal at an Inexpensive Restaurant",
      "category": "Restaurants",
      "low_price": 16,
      "high_price": 35,
      "average_price": 25
    },
    {
      "item": "Meal for Two at a Mid-Range Restaurant (Three Courses, Without Drinks)",
      "category": "Restaurants",
      "low_price": 60,
      "high_price": 125,
      "average_price": 90
    },
    {
      "item": "Combo Meal at McDonald's (or Equivalent Fast-Food Meal)",
      "category": "Restaurants",
      "low_price": 10,
      "high_price": 15,
      "average_price": 14
    }
  ],
  "country": "United States",
  "currency": "USD",
  "rent_index": 44.4,
  "numbeo_link": "https://www.numbeo.com/cost-of-living/in/Portland",
  "cost_of_living_index": 85.7,
  "data_last_updated_month": "2026-09",
  "monthly_cost_one_person_without_rent": 1500.9,
  "monthly_cost_family_of_four_without_rent": 5408.4
}
```

## Quick start

Replace `YOUR_API_KEY` with a Fous API key. To create one, open Developers at the bottom of Fous Studio, turn on Developer mode, then go to API keys (https://app.fous.com/keys). Change the values in `input` to run the same tool on new data.

```bash
curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 180 \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H 'Content-Type: application/json' \
  --data-raw '{
  "api": "@numbeo",
  "visibility": "public",
  "operation": "compare_cost_of_living",
  "version": 1,
  "input": {
    "to_city": "Berlin",
    "from_city": "London"
  },
  "response": {
    "format": "json"
  }
}'
```

```python
# Save as fous.py and run with python3 fous.py. No packages needed.
import json
import urllib.error
import urllib.request

api_key = "YOUR_API_KEY"

body = json.loads("{\n  \"api\": \"@numbeo\",\n  \"visibility\": \"public\",\n  \"operation\": \"compare_cost_of_living\",\n  \"version\": 1,\n  \"input\": {\n    \"to_city\": \"Berlin\",\n    \"from_city\": \"London\"\n  },\n  \"response\": {\n    \"format\": \"json\"\n  }\n}")
request = urllib.request.Request(
    "https://api.fous.com/v1/query",
    data=json.dumps(body).encode("utf-8"),
    headers={
        "Authorization": f"Bearer {api_key}",
        "Content-Type": "application/json",
    },
    method="POST",
)
try:
    with urllib.request.urlopen(request, timeout=180) as response:
        result = json.load(response)
except urllib.error.HTTPError as error:
    raise RuntimeError(f"HTTP {error.code}: {error.read().decode('utf-8', errors='replace')}") from error
if result.get("success") is False:
    raise RuntimeError(result.get("error", {}).get("message", "Request failed"))
print(json.dumps(result["data"]["output"], indent=2))
```

```typescript
// Save as fous.mts and run with npx tsx fous.mts.
const apiKey = "YOUR_API_KEY";

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(180_000),
  body: JSON.stringify({
  "api": "@numbeo",
  "visibility": "public",
  "operation": "compare_cost_of_living",
  "version": 1,
  "input": {
    "to_city": "Berlin",
    "from_city": "London"
  },
  "response": {
    "format": "json"
  }
}),
});
type ApiResult = { success: boolean; data?: { output: unknown }; error?: { message: string } };
const result: ApiResult = await response.json();
if (!response.ok || result.success === false) {
  throw new Error(result.error?.message ?? `HTTP ${response.status}`);
}
if (!result.data) throw new Error("Missing API response data");
console.log(result.data.output);
```

## Use from an AI assistant

Connect this tool to Claude Code, Claude Desktop, Cursor, VS Code, Codex and any MCP client as its own MCP server. Each method is a typed tool whose arguments are the method’s input.

- Server URL: `https://api.fous.com/mcp/tools/numbeo`
- Authorization: `Authorization: Bearer <Fous API key>`

**Tools**

- `compare_cost_of_living`: Compare cost of living. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `get_cost_of_living`: Get cost of living. 1 credit per completed call. Failed calls without a completed billing receipt are free; completed work can remain charged if delivery is interrupted.
- `fous_get_run`: the result of a run that was still going, by its `request_id`. Free.

Claude Code:

```bash
claude mcp add --scope user --transport http fous-numbeo https://api.fous.com/mcp/tools/numbeo --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"
```

To give the assistant every tool, connect `https://api.fous.com/mcp`: it finds one with `fous_search_tools` and runs it with `fous_run_tool`. Setup for other clients: https://fous.com/llms-full.txt.

## Use cases

- Estimate monthly living costs before relocating.
- Compare everyday prices between two cities.
- Review typical prices by item and category.
- Estimate salary needs for a similar standard of living.
- Plan costs using a city’s price update month.

## FAQ

### Can I run it with my own inputs?

Yes. Change the inputs in Studio and press Run, or send new inputs from your code, or ask a connected AI assistant.

### Can I call this Numbeo tool as an API?

Yes. Send a POST request to /v1/query with your Fous API key and the inputs, and get JSON back.

### How much does it cost?

Each completed run costs 1 credit. Failed runs without a completed receipt are free; completed work can remain charged if delivery is interrupted. With pay as you go, a credit costs 1¢. Monthly plans cost less per credit.

### Do I need a Numbeo account?

No. You only need a Fous account.

### How current is the data?

Fous gets the data from numbeo.com when you run it. Some results are reused for up to 24 hours, and results that use your account or key are never reused. It was last verified on Sep 29, 2026.

### What does it cost to live in a city?

Get cost of living returns current indices when published, monthly estimates excluding rent, and typical prices for a specified city.

### How do living costs compare between two cities?

Compare cost of living returns price and purchasing-power differences and the estimated monthly take-home salary needed for a similar standard of living.

### What are typical prices for items in a city?

Get cost of living returns typical item prices, including reported low and high values when available.

## Related

- [Zumper API](https://fous.com/tools/zumper.md): Zumper searches rental homes and apartments with filters and reports rolling 30-day city median rents, changes, and rankings where available.
- [US Census Bureau API](https://fous.com/tools/us-census-bureau.md): US Census Bureau returns statistics from varying Census years, population estimates through July 1, and address geographies using Census vintages that may differ from representation.
- [Zillow API](https://fous.com/tools/zillow.md): Zillow provides homes for sale, rental listings, home details, estimates, and housing market figures; rental details, history, schools, estimates, and market figures may be missing or reflect different reporting dates.
- [Idealista API](https://fous.com/tools/idealista.md): Idealista provides homes for sale and rent in Spain, Italy and Portugal, plus current property listings and latest monthly asking prices per square metre for published areas.
- [Time and Date API](https://fous.com/tools/time-and-date.md): Time and Date provides current city times, zones, daylight-saving changes; meeting conversions (1970–2030); daily solar times and twilight; and business-day counts based on published holiday calendars.
- [Trading Economics API](https://fous.com/tools/trading-economics.md): Trading Economics provides economic indicators, market data and country statistics, including country overviews, latest reported country comparisons and current commodity prices reflecting reported trading days.
- [Agoda API](https://fous.com/tools/agoda.md): Agoda finds stays and room prices for selected dates; displayed prices exclude taxes and fees, and availability, prices, and cancellation terms may change before booking.
- [Redfin API](https://fous.com/tools/redfin.md): Redfin provides publicly listed homes, details, estimates, and latest area market figures with up to 12 months of sale prices; some data may be unavailable.
- [All Data tools](https://fous.com/tools/category/data)
