Official tourism statistics — OECD, Eurostat, UN Tourism via OWID, ISTAT, Banca d'Italia: country KPIs, time series, rankings, side-by-side comparisons and Ask the Data (grounded, cited). Sources are never merged. Pro keys only.
pulse_kpiproread-only
PRO — Pulse headline KPIs for one country (ISO3): international arrivals, travel receipts (US$ and national currency), tourism share of GDP / employment, recovery vs 2019, receipts per arrival, nights year-to-date. Official statistics only (OECD, UN Tourism via OWID, Eurostat) — each KPI carries its own source, period, dataset code and a human `display` label; sources are never merged. Same data as GET /api/external/pulse/kpi/{iso3}.
| Parameter | Type / values | Description |
|---|
country* | string (3 chars) | ISO3 country code, e.g. ITA |
lang | en | it · default en | Language of the human `display`/`label` fields (default en) |
Returns kpis{}: kpis.<code>.value · period · yoy_pct · source_org · dataset_code · unit · display (Source — indicator · period) — plus country, country_label, sparklines
Try in Claude / Cursor: “Give me Italy's headline tourism KPIs (arrivals, receipts, GDP share) with source and year for each figure.”
pulse_seriesproread-only
PRO — Pulse time series for one curated indicator across up to 10 countries (ISO3). ~35 indicators: annual (intl_arrivals, travel_receipts_usd, tourism_gdp_share…), monthly Eurostat (nights_total, nights_foreign, arrivals_monthly, platform_nights…), Banca d'Italia (it_inbound_spend_by_origin…). One series per (source, country) — never merged. Unknown indicator → error listing all valid codes. Without `from` the last 10 years are returned. Same data as GET /api/external/pulse/series.
| Parameter | Type / values | Description |
|---|
indicator* | string | Curated indicator code, e.g. nights_total, intl_arrivals, it_inbound_spend_by_origin |
countries* | array | ISO3 codes, e.g. ["ITA", "ESP"] |
from | string (^\d{4}(-\d{2}|-Q[1-4])?$) | Start period, inclusive (YYYY, YYYY-MM or YYYY-Qn). Default: 10 years ago |
to | string (^\d{4}(-\d{2}|-Q[1-4])?$) | End period, inclusive (optional) |
source | string | Restrict to one source_org, e.g. OECD, EUROSTAT, UN_TOURISM_VIA_OWID, BANCA_D_ITALIA (optional) |
lang | en | it · default en | Language of the human `display`/`label` fields (default en) |
Returns series[]: ref_area · ref_area_label · source_org · dataset_code · unit · data_type · points[] (period, value) · display — plus indicator, label, sources, default_source, freq, from, to, default_window_applied · max 20 per call
Try in Claude / Cursor: “Compare monthly nights in tourist accommodation for Italy and Spain since 2023 (Eurostat) and describe the seasonality.”
pulse_rankingsproread-only
PRO — Pulse country rankings for one indicator. Default source UN Tourism via OWID (200+ economies); pass `source` for others (OECD; EUROSTAT for nights_total / arrivals_monthly — ranked on calendar-year totals). When the indicator has no series in the chosen source the error lists the available sources. Latest year per economy (6-year window) or a fixed `year`. Same data as GET /api/external/pulse/rankings.
| Parameter | Type / values | Description |
|---|
indicator | string · default intl_arrivals | Curated indicator code (default intl_arrivals) |
source | UN_TOURISM_VIA_OWID | OECD | EUROSTAT | BANCA_D_ITALIA · default UN_TOURISM_VIA_OWID | source_org (default UN_TOURISM_VIA_OWID) |
year | string (^\d{4}$) · default latest available per economy | Fixed year (default: latest available per economy) |
limit | integer 1–50 · default 20 | Rows (default 20) |
lang | en | it · default en | Language of the human `display`/`label` fields (default en) |
Returns rankings[]: rank · ref_area · ref_area_label · period · value · yoy_pct · cagr_5y · sparkline — plus indicator, label, source_org, year, economies, display, aggregation · max 20 per call
Try in Claude / Cursor: “Rank the top 15 countries by international arrivals (UN Tourism) and by nights in tourist accommodation (Eurostat).”
pulse_freshnessproread-only
PRO — Pulse warehouse freshness: version, build time, row counts and sync state per source (OECD, Eurostat, UN Tourism via OWID, ISTAT, Banca d'Italia) and next due sync. Same data as GET /api/external/pulse/freshness (without the internal operations block).
No parameters.
Returns warehouse + sources[]: warehouse.version · warehouse.built_at · warehouse.row_counts (per source) · warehouse.source_status · sources[] (source, cadence_days, last_success_at, next_due_at, warehouse_rows) · build · max 20 per call
Try in Claude / Cursor: “How fresh is the Pulse data warehouse — version, build time and rows per source?”
pulse_compareproread-only
PRO — Pulse side-by-side comparison of 2–6 countries (the data behind /pulse/compare): one row per indicator with ONE source per row (never merged), the most recent period shared by all countries, values + yoy, fresher points in latest_by_country and the last 10 points per country. Default indicators: intl_arrivals, travel_receipts_usd, nights_total (monthly → calendar-year totals). Same data as GET /api/external/pulse/compare.
| Parameter | Type / values | Description |
|---|
countries* | array | 2–6 ISO3 codes, e.g. ["ITA", "ESP", "FRA"] |
indicators | array · default intl_arrivals, travel_receipts_usd, nights_total | Curated indicator codes (default: intl_arrivals, travel_receipts_usd, nights_total) |
lang | en | it · default en | Language of the human `display`/`label` fields (default en) |
Returns rows[]: indicator · label · source_org · dataset_code · unit · period (latest shared) · values{ISO3: value, yoy_pct} · latest_by_country · missing · series{ISO3: last 10 points} · display — plus countries, country_labels, note · max 20 per call
Try in Claude / Cursor: “Compare Italy, Spain and France on international arrivals, receipts and nights — same source and year per row.”
pulse_askproread-only
PRO — Ask the Data: a grounded answer on official tourism statistics from the Pulse warehouse (OECD, Eurostat, UN Tourism via OWID, ISTAT, Banca d'Italia) — text-to-SQL + retrieval, every number cited. Use it for figures (arrivals, receipts, nights, spending by origin market, Italian regions); ask_tourismintel covers news only. Answers in the question's language. Pass `session_id` back for follow-ups. Quota: 15 questions/day per PRO key.
| Parameter | Type / values | Description |
|---|
question* | string | Your question (5-500 chars), English or Italian |
session_id | string | Conversation id returned by a previous call — keeps follow-up context (optional) |
lang | en | it | Language hint when the question is ambiguous (optional) |
Returns answer_markdown + citations[]: answer_markdown · citations (display = 'Source — indicator · period', audit = technical reference, sql) · chart_spec · session_id · quota (used / limit / reset_at) · max 20 per call
Try in Claude / Cursor: “Quali sono i primi mercati esteri per spesa turistica in Italia nell'ultimo anno disponibile? Cita le fonti.”