Prices
GET
/v1/pricesMonthly consumer prices of hotels, air fares and package holidays by country, as an index and its change on a year, beside the country's own nights for the same month.
Developer plan and upKey requiredJSON or CSVCached until the next release
Parameters
| Name | Type | Description |
|---|---|---|
| countryoptional | string query | One or more ISO codes, comma separated e.g. CL,BA,AT |
| itemoptional | hotels | air | air_international | package_holidays query | Which prices, comma separated; all four when left out e.g. hotels |
| fromoptional | period query | First period to return e.g. 2025-01 |
| tooptional | period query | Last period to return e.g. 2026-08 |
| limitoptional | integer query | Rows per page, 1 to 1000 e.g. 100 |
Request
# Prices of hotels, air fares and package holidays
curl "https://api.tourismapi.com/v1/prices?country=ES&item=hotels&from=2026-01" \
-H "X-API-Key: $TOURISM_API_KEY"const res = await fetch("https://api.tourismapi.com/v1/prices?country=ES&item=hotels&from=2026-01", {
headers: { "X-API-Key": process.env.TOURISM_API_KEY }
});
if (!res.ok) throw new Error(`Tourism API ${res.status}`);
const { meta, data } = await res.json();
console.log(meta.data_as_of, data);import os, requests
r = requests.get(
"https://api.tourismapi.com/v1/prices?country=ES&item=hotels&from=2026-01",
headers={"X-API-Key": os.environ["TOURISM_API_KEY"]},
timeout=10,
)
r.raise_for_status()
body = r.json()
print(body["meta"]["data_as_of"], body["data"])$ch = curl_init("https://api.tourismapi.com/v1/prices?country=ES&item=hotels&from=2026-01");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ["X-API-Key: " . getenv("TOURISM_API_KEY")],
]);
$body = json_decode(curl_exec($ch), true);
print_r($body["data"]);
Example response
{
"meta": {
"request_id": "req_2b7d4e",
"data_as_of": "2026-10-28T00:00:00Z",
"count": 1,
"next": null,
"countries": [
"ES"
],
"items": [
"hotels"
],
"index_base": "2025 = 100",
"joined": "nights is the country's own nights in the same month (/v1/nights), so a price move reads beside the stays it met."
},
"data": [
{
"country": "ES",
"item": "hotels",
"period": "2026-01",
"index": null,
"change_pct": null,
"nights": null
}
]
}Response fields
| Field | Type | Example |
|---|---|---|
| country | string | ES |
| item | string | hotels |
| period | string | 2026-01 |
| index | null | null |
| change_pct | null | null |
| nights | null | null |