---
name: tourismapi
description: Official tourism statistics for every country (arrivals, nights, spend, departures, occupancy, capacity), with public holidays, exchange rates and worked statistics such as forecasts and recovery against 2019. Use when a task needs visitor numbers, tourism trends or comparisons between destinations.
---

# Tourism API

Official monthly, quarterly and yearly tourism figures for 220 countries and territories, from each country's own statistics office, cleaned to one shape.

- Base: `https://api.tourismapi.com/v1`
- Key: send `X-API-Key: <key>` (or `Authorization: Bearer <key>`). Never put the key in the address.
- Free key: sign in with Google at https://tourismapi.com/login. It reads figures up to a year back; the latest months come with the paid plans.
- Docs: https://tourismapi.com/documentation. Full manual: https://tourismapi.com/documentation/manual.md
- MCP server: `https://tourismapi.com/mcp`, the same key as a Bearer token.

## How to answer with it

1. Countries are ISO two-letter codes (`JP`, `TH`, `FR`). `GET /v1/countries` lists every one held, with how fresh it is.
2. For a country's headline numbers, call the measure: `GET /v1/arrivals?country=JP&from=2024-01`. Up to ten countries in one call.
3. Each answer names its series and unit. Countries count differently (arrivals at the border, at hotels, or visitors), so say which series a figure comes from when you compare countries.
4. Side by side: `GET /v1/compare?country=JP,TH,FR&measure=arrivals`. Ranked: `GET /v1/rank?measure=arrivals`. Change: `GET /v1/growth?country=JP`.
5. Anything else: `GET /v1/series/search?q=hotel nights` finds series by name; `GET /v1/series/{id}/observations` reads one. Readable ids such as `jp.arrivals.total.m` name a country's headline series.
6. Statistics (Analyst and Intel plans): `GET /v1/stats/forecast?country=JP`, also trend, recovery, benchmark, stay-length, nowcast, anomalies, origin-shift and concentration. Forecasts and nowcasts are estimates with ranges; say so.

## Answers and errors

- Every answer is `{"data": ..., "meta": {...}}`. `meta.data_as_of` says how fresh it is; `meta.delayed_to` appears on a free key.
- A month an office withheld comes back with `"value": null` and a `status`; never fill it in.
- Errors are `{"error": {"code", "message", "docs"}}`. `upgrade_required` (403) names the plan that has the endpoint; `rate_limited` and `quota_exceeded` (429) carry `Retry-After`.
- `GET /v1/usage` shows the key's plan, calls left and the months it can read, without counting as a call.
