# 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/workflows/numbeo
- Handle: `@numbeo`
- Category: [Data](https://fous.com/workflows/category/data)
- Source website: https://numbeo.com
- Last verified: Sep 29, 2026
- Fous is not affiliated with Numbeo.

## Methods

### Compare cost of living

Operation `compare_cost_of_living`, version 1. 1 credit per call.

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 call.

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

Call the API with a Fous API key (`FOUS_API_KEY`). To create one, turn on Developer mode in Fous Studio, then open Keys & connections → API keys (https://app.fous.com/keys).

```bash
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
: "${FOUS_API_KEY:?Set FOUS_API_KEY before running this example}"

curl 'https://api.fous.com/v1/query' \
  --fail-with-body --silent --show-error --max-time 120 \
  -H "Authorization: Bearer $FOUS_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.
# First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
import json
import os
import urllib.error
import urllib.request

api_key = os.environ.get("FOUS_API_KEY")
if not api_key:
    raise RuntimeError("Set FOUS_API_KEY before running this example")

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=120) 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.
// First set your key: export FOUS_API_KEY='YOUR_FOUS_API_KEY'
const apiKey = process.env.FOUS_API_KEY;
if (!apiKey) throw new Error("Set FOUS_API_KEY before running this example");

const response = await fetch("https://api.fous.com/v1/query", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  signal: AbortSignal.timeout(120_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);
```

Or describe the data in plain language: send `{"api":"@numbeo","prompt":"Describe the data you need, with every detail"}` to the same URL. Fous fills in the input, runs the method that fits and returns only the fields you asked for; `data.route.calls[].request` is the exact call it made. Routing is free; the run costs the same.

## 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

### Is Fous affiliated with Numbeo?

No. Fous is not affiliated with Numbeo. This workflow reads the public numbeo.com website and returns its data.

### How much does it cost?

Each run costs 1 credit. 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; repeating the same request within a day may return the saved result. Fous checks this workflow automatically; it last passed a check 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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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/workflows/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 workflows](https://fous.com/workflows/category/data)
