Rivals
GET
/v1/countries/{iso}/rivalsUp to six destinations competing for the same travellers, scored 0 to 100 from the source markets they share, how alike their seasons are, their size and region, with the shared markets named, and the countries that count this one as a rival. Remade every day.
Developer plan and upKey requiredJSON or CSVCached until the next release
Parameters
No parameters.
Request
# The destinations a country competes with
curl "https://api.tourismapi.com/v1/countries/{iso}/rivals" \
-H "X-API-Key: $TOURISM_API_KEY"const res = await fetch("https://api.tourismapi.com/v1/countries/{iso}/rivals", {
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/countries/{iso}/rivals",
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/countries/{iso}/rivals");
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_7f3a1c",
"data_as_of": "2026-10-14T06:00:00Z",
"count": 1,
"next": null
},
"data": [
{
"country": "VN",
"name": "Vietnam",
"rank": 1,
"score": 86,
"shared_markets": [
{
"country": "CN",
"name": "China"
},
{
"country": "KR",
"name": "South Korea"
}
],
"basis": "shared source markets, season, size and region"
}
]
}Response fields
| Field | Type | Example |
|---|---|---|
| country | string | VN |
| name | string | Vietnam |
| rank | number | 1 |
| score | number | 86 |
| shared_markets | array | 2 items |
| basis | string | shared source markets, season, size and region |