Hotel rates
GET
/v1/hotelsAverage daily rate (ADR), revenue per available room (RevPAR) and occupancy by place, monthly: Spain by province, tourist zone and tourist point; Singapore by hotel size; Thailand by region; Sint Maarten for the island.
Analyst plan and upKey requiredJSON or CSVCached until the next release
Parameters
| Name | Type | Description |
|---|---|---|
| isorequired | string path | ISO 3166 two-letter country code e.g. CL |
| metricoptional | adr | revpar | occupancy query | Which hotel figures, comma separated; all three when left out e.g. adr |
| leveloptional | country | province | zone | point query | Only places of one kind: the country, regions and provinces, tourist zones or tourist points (towns) e.g. point |
| placeoptional | string query | Part of a place name e.g. Barcelona |
| 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
# Hotel rates and occupancy by place
curl "https://api.tourismapi.com/v1/hotels?iso=ES&metric=adr&place=Benidorm&from=2026-01" \
-H "X-API-Key: $TOURISM_API_KEY"const res = await fetch("https://api.tourismapi.com/v1/hotels?iso=ES&metric=adr&place=Benidorm&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/hotels?iso=ES&metric=adr&place=Benidorm&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/hotels?iso=ES&metric=adr&place=Benidorm&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_cf8a41a3f1",
"data_as_of": "2026-11-07T04:51:41Z",
"count": 9,
"country": "ES",
"places": 1,
"metrics": [
"adr"
],
"joined": "Each place reads beside its nights: /v1/destinations?iso=ES gives the same places' nights, and /v1/prices?country=ES the country's hotel prices."
},
"data": [
{
"place": "Benidorm",
"level": "point",
"metric": "adr",
"what": "Average Daily Rate (ADR). All categories. Data",
"period": "2026-01",
"value": 78.08,
"unit": "EUR"
},
{
"place": "Benidorm",
"level": "point",
"metric": "adr",
"what": "Average Daily Rate (ADR). All categories. Data",
"period": "2026-02",
"value": 81.84,
"unit": "EUR"
},
{
"place": "Benidorm",
"level": "point",
"metric": "adr",
"what": "Average Daily Rate (ADR). All categories. Data",
"period": "2026-03",
"value": 80.71,
"unit": "EUR"
}
]
}Response fields
| Field | Type | Example |
|---|---|---|
| place | string | Benidorm |
| level | string | point |
| metric | string | adr |
| what | string | Average Daily Rate (ADR). All categories. Data |
| period | string | 2026-01 |
| value | number | 78.08 |
| unit | string | EUR |