Numbeo API: Get cost of living
Gets a city's current Numbeo cost of living indices, monthly estimates without rent, and typical prices. Add a country or state to tell apart cities with the same name.
Unofficial. Not affiliated with or endorsed by Numbeo.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- City, required
city City name, with a country or state if needed, e.g. Lisbon or Portland, Oregon.
Lisbon
- Currency optional
currency Display currency name or 3-letter code, e.g. British pound or GBP. Defaults to the city's local currency.
(default)
Input as JSON
{ "city": "Lisbon"}Output
{ "city": "Lisbon", "prices": [ { "item": "Meal at an Inexpensive Restaurant", "category": "Restaurants", "low_price": 11, "high_price": 20, "average_price": 15 }, { "item": "Meal for Two at a Mid-Range Restaurant (Three Courses, Without Drinks)", "category": "Restaurants", "low_price": 40, "high_price": 75, "average_price": 55 }, { "item": "Combo Meal at McDonald's (or Equivalent Fast-Food Meal)", "category": "Restaurants", "low_price": 8, "high_price": 12, "average_price": 10 } ], "country": "Portugal", "currency": "EUR", "rent_index": 34.7, "numbeo_link": "https://www.numbeo.com/cost-of-living/in/Lisbon" , "cost_of_living_index": 54.4, "data_last_updated_month": "2026-10", "monthly_cost_one_person_without_rent": 756.3, "monthly_cost_family_of_four_without_rent": 2733}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"numbeo.com/get_cost_of_living","input":{"city":"Lisbon"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "numbeo.com/get_cost_of_living" , "input": { "city": "Lisbon" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "numbeo.com/get_cost_of_living" , "input": { "city": "Lisbon" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run numbeo.com/get_cost_of_living# with {"city":"Lisbon"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "city" ], "properties": { "city": { "type": "string", "minLength": 1, "description": "City name, with a country or state if needed, e.g. Lisbon or Portland, Oregon." }, "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." } }}Output schema
{ "type": "object", "required": [ "city", "country", "currency", "cost_of_living_index", "rent_index", "monthly_cost_one_person_without_rent", "monthly_cost_family_of_four_without_rent", "data_last_updated_month", "numbeo_link", "prices" ], "properties": { "city": { "type": "string" }, "prices": { "type": "array", "items": { "type": "object", "required": [ "item", "category", "average_price", "low_price", "high_price" ], "properties": { "item": { "type": "string" }, "category": { "type": "string" }, "low_price": { "type": [ "number", "null" ] }, "high_price": { "type": [ "number", "null" ] }, "average_price": { "type": [ "number", "null" ] } } } }, "country": { "type": "string" }, "currency": { "type": "string" }, "rent_index": { "type": [ "number", "null" ] }, "numbeo_link": { "type": "string" }, "cost_of_living_index": { "type": [ "number", "null" ] }, "data_last_updated_month": { "type": [ "string", "null" ] }, "monthly_cost_one_person_without_rent": { "type": [ "number", "null" ] }, "monthly_cost_family_of_four_without_rent": { "type": [ "number", "null" ] } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
numbeo.com/get_cost_of_living- Returns
- city, country, currency, cost of living and rent indices, monthly estimates, last update month, link, prices
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method numbeo.com/get_cost_of_living with the inputs above.
Ask your agent
- What's the current cost of living index for Lisbon, Portugal, and how much does a single person typically spend monthly without rent?
- Need the Numbeo cost of living and rent indices for Portland, Oregon, shown in USD.
- Look up typical prices and monthly expense estimates for Osaka, Japan, converted to GBP.
- How expensive is it to live in Austin, Texas right now? Give me the indices and the last update month.
- Find the cost of living data for Porto in Portugal, with figures in euros, plus a link to the source page.
See more
All Numbeo methodsCompares living costs in two Numbeo cities: six price and purchasing-power differences, plus the monthly take-home salary needed in the destination for a similar standard of living (rent assumed in both cities).
numbeo.com/compare_cost_of_livingGets Zumper's current median monthly rents for studio through three-bedroom homes in a city, with monthly and yearly percentage changes. National rank is included only when the same-month U.S. national report ranks the city.
zumper.com/get_average_rentsGets the current local time, time zone, and next daylight saving change for a city listed on Time and Date. Add a state or country to distinguish cities with the same name.
timeanddate.com/get_time_in_cityLooks up Zillow housing market figures for a city and state or five-digit ZIP code: typical home value, one-year change, list and sale prices, inventory and listing activity.
zillow.com/get_housing_marketFinds available hostels, hotels and guesthouses on Hostelworld in a city for given dates, with per-night dorm and private room prices, ratings, facilities and booking links.
hostelworld.com/search_hostelsGets GasBuddy's latest reported average regular gas price, its changes and the diesel benchmark for a US state or a listed metro area. Midgrade, premium and area low/high prices are not published with these averages; updates may lag the current day.
gasbuddy.com/get_average_gas_pricesGets a state's latest monthly electricity price for a customer type from EIA. It also returns the year-over-year change, the year-to-date average and the matching US average.
eia.gov/get_electricity_pricesLooks up an official Eurostat statistic for an EU or EEA country and the EU27 figure for the same period. Quarterly and half-yearly series return the reporting period that contains a requested month.
ec.europa.eu/get_statistic