Compare covered cities for a stay of N days, or for exact dates. Returns per-city lodging and meal components, a lodging + meals subtotal, the assumptions and formulas used, observed ranges, sample sizes, source coverage, freshness, and the categories that are explicitly NOT included. This is not a cost-of-living total. A priced call is settled only when the response contains observations; a no-data answer (`no_data_reason` set) is returned unbilled, marked by the `X-BUDGETATLAS-BILLED` response header.
Call get_dataset_coverage first. It is free and lists the cities and cohorts that exist.
An answer with no data (no_data_reason set) is not settled upstream. OpenTools bills zero for it.
Input schema
citiesarrayCity IDs such as 'th-bangkok'. Call get_dataset_coverage for the covered list.
countriesarrayISO 3166-1 alpha-2 country codes, e.g. ['TH','VN'].
daysintegerNumber of days/nights to price. Ignored in exact mode.
checkinstringExact mode: use with checkout.
checkoutstringpeopleintegerroomsintegerlodging_typesarraymin_rating_fractionnumbermin_review_countintegercomponentsarrayWhich components the subtotal covers. Pass ['meals'] to get a complete meals-only answer for cities that have meal prices but no lodging price, instead of a null lodging+meals subtotal. The returned subtotal_label always names exactly what the figure contains.
meals_per_person_per_daynumberCaller's assumption. BudgetAtlas does not infer how often someone eats out.
freshness_daysintegerOnly use observations collected within this many days.
Use this exact tool
Every snippet below names budgetatlas/v1/compare_city_costs, so an agent runs this endpoint instead of searching for something similar.
Use the OpenTools tool budgetatlas/v1/compare_city_costs (https://opentools.fulinlabs.com/tools/budgetatlas/v1/compare_city_costs?method=POST). Connect to the OpenTools MCP server at https://opentools.fulinlabs.com/mcp (or install the CLI with `npm i -g @aeither/opentools`). Do not search the catalog — call `inspect` with provider "budgetatlas" and endpoint "/v1/compare_city_costs" and method "POST" for the input schema, then `run` with the same provider and endpoint.
opentools run -p budgetatlas -e /v1/compare_city_costs --method POST -i '{"body":{"cities":[],"countries":[],"days":0,"checkin":"","checkout":"","people":0,"rooms":0,"lodging_types":[],"min_rating_fraction":0,"min_review_count":0,"components":[],"meals_per_person_per_day":0,"freshness_days":0}}' -wcurl -X POST https://opentools.fulinlabs.com/v1/run \
-H "Authorization: Bearer opentools_live_..." \
-H "content-type: application/json" \
-d '{"provider":"budgetatlas","endpoint":"/v1/compare_city_costs","method":"POST","input":{"body":{"cities":[],"countries":[],"days":0,"checkin":"","checkout":"","people":0,"rooms":0,"lodging_types":[],"min_rating_fraction":0,"min_review_count":0,"components":[],"meals_per_person_per_day":0,"freshness_days":0}}}'Connect
set up https://opentools.fulinlabs.com/SKILL.mdhttps://opentools.fulinlabs.com/mcpnpm i -g @aeither/opentoolsShare this tool
Send this link to whoever should use it. It carries the schema, the price, and the snippets above — they need an OpenTools key and a balance, nothing from you.
https://opentools.fulinlabs.com/tools/budgetatlas/v1/compare_city_costs?method=POST