datituristici

Dati turistici ISTAT di ogni comune italiano: presenze, arrivi, posti letto, popolazione.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
98%
Naming quality
80%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~12,729Tokens (tool definitions)
~13.9 KBTypical response size
Significant attention impact (9.94% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "datituristici": {
      "url": "https://datituristici.it/mcp"
    }
  }
}

Remote endpoints

https://datituristici.it/mcpstreamable-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢cerca_comune(nome, limite, provincia, regione)

Searches Italian municipalities (comuni) by name, tolerating partial names and typos, and returns each match with its 6-digit ISTAT code, province and region. Use it when you have a place name and need the code; when you already have the 6-digit code, do not search again and use leggi_dati_comune instead, to pick comuni by criteria use classifica_territori, and to browse a province use elenca_territori. All homonyms are returned, most similar first (narrow them with `provincia` or `regione`); an empty list means nothing resembles the text and is not an error. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.

Input Schema

{
  "type": "object",
  "properties": {
    "nome": {
      "type": "string",
      "minLength": 2,
      "maxLength": 80,
      "description": "Name of the comune, full or partial, 2-80 characters, in any case; typos, missing accents and apostrophes are tolerated (\"cassano adda\" finds Cassano d'Adda)."
    },
    "limite": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10,
      "description": "Maximum number of matches, 1-20, default 10."
    },
    "provincia": {
      "type": "string",
      "minLength": 2,
      "maxLength": 60,
      "description": "Optional: keep only comuni of this province, given by its Italian name in any case (\"Trento\", \"Bolzano\", \"Monza e Brianza\")."
    },
    "regione": {
      "type": "string",
      "minLength": 2,
      "maxLength": 60,
      "description": "Optional: keep only comuni of this region, given by its Italian name (\"Toscana\", not \"Tuscany\"; Bolzano and Trento are in \"Trentino-Alto Adige\")."
    }
  },
  "required": [
    "nome"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "risultati": {
      "type": "array",
      "description": "Matching comuni, most similar name first, at most `limite`; empty when nothing resembles the text.",
      "items": {
        "type": "object",
        "properties": {
          "cod_istat": {
            "type": "string",
            "description": "6-digit ISTAT code, as a string with leading zeros kept: the `cod_istat` input of leggi_dati_comune."
          },
          "nome": {
            "type": "string",
            "description": "Official name of the comune."
          },
          "provincia": {
            "type": [
              "string",
              "null"
            ],
            "description": "Province (or metropolitan city) as recorded by ISTAT; null if not recorded."
          },
          "regione": {
            "type": [
              "string",
              "null"
            ],
            "description": "Region as recorded by ISTAT (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null if not recorded."
          }
        },
        "required": [
          "cod_istat",
          "nome"
        ]
      }
    },
    "nota": {
      "type": [
        "string",
        "null"
      ],
      "description": "Set only when `provincia` or `regione` excluded every match: how many comuni with a similar name exist elsewhere. Null otherwise."
    },
    "fonte": {
      "type": "string",
      "description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
    }
  },
  "required": [
    "risultati",
    "fonte"
  ]
}
🟢leggi_dati_comune(cod_istat, anno)

Reads the tourism figures of one Italian municipality (comune) in one year: nights spent (presenze), arrivals, bed places, accommodation establishments and resident population. Use it when you have the 6-digit `cod_istat` from cerca_comune; do not use it to look a place up by name (use cerca_comune instead), to follow a comune over the years (use leggi_serie_comune instead) or to put comuni side by side (use confronta_comuni instead). Presenze are nights, not people (one guest staying three nights counts three); `anno` defaults to the latest year with data, and capacity figures are for `anno_capacita`: the latest year published, as on the comune's page, or the latest up to `anno` when `anno` is given; `profilo` adds the comune's altitude, surface, coordinates, UNESCO sites and tourism pressure, each group with its own year. Missing figures are null and `nota` says why (also from 2025, when the counts changed scope, and when `profilo` is null), and a year outside `anni_disponibili` or an unknown code returns an error that says what to pass. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.

Input Schema

{
  "type": "object",
  "properties": {
    "cod_istat": {
      "type": "string",
      "pattern": "^\\d{6}$",
      "description": "6-digit ISTAT code of the comune as a string, leading zeros kept (\"058091\" is Roma); it comes from cerca_comune."
    },
    "anno": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2100,
      "description": "Year of the figures, e.g. 2024; default: the latest year with data for this comune. A year outside its years with data returns an error that gives them."
    }
  },
  "required": [
    "cod_istat"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "cod_istat": {
      "type": "string",
      "description": "6-digit ISTAT code of the comune, as a string with leading zeros kept."
    },
    "nome": {
      "type": "string",
      "description": "Official name of the comune."
    },
    "provincia": {
      "type": [
        "string",
        "null"
      ],
      "description": "Province (or metropolitan city) as recorded by ISTAT; null if not recorded."
    },
    "regione": {
      "type": [
        "string",
        "null"
      ],
      "description": "Region as recorded by ISTAT (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null if not recorded."
    },
    "anno": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Year of the movement figures (presenze and arrivi): `anno_richiesto`, or the latest year with data when it was omitted; null if the comune has no tourism data."
    },
    "anno_richiesto": {
      "type": [
        "integer",
        "null"
      ],
      "description": "The `anno` argument as given; null when it was omitted."
    },
    "anni_disponibili": {
      "type": [
        "object",
        "null"
      ],
      "description": "First and last year with movement figures for this comune, the accepted range of `anno`; null if the comune has none.",
      "properties": {
        "primo": {
          "type": "integer",
          "description": "First year with movement figures."
        },
        "ultimo": {
          "type": "integer",
          "description": "Latest year with movement figures, the default `anno`."
        }
      },
      "required": [
        "primo",
        "ultimo"
      ]
    },
    "presenze_totali": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Nights spent by all guests in accommodation establishments during `anno` (one guest staying three nights counts three); null if not available."
    },
    "presenze_italiani": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Nights spent by guests resident in Italy during `anno`; null if not available."
    },
    "presenze_stranieri": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Nights spent by guests resident abroad during `anno`; null if not available."
    },
    "arrivi_totali": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Guest arrivals (check-ins) at accommodation establishments during `anno`; null if not available."
    },
    "arrivi_italiani": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Arrivals of guests resident in Italy during `anno`; null if not available."
    },
    "arrivi_stranieri": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Arrivals of guests resident abroad during `anno`; null if not available."
    },
    "anno_capacita": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Year of the capacity figures (bed places and establishments): with `anno`, the latest year published up to it; without, the latest year published, as on the comune's page. It can be earlier or later than `anno`, and `nota` then gives both years; null if none is published."
    },
    "posti_letto": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Bed places in accommodation establishments in `anno_capacita`: the ISTAT total, or hotel plus non-hotel beds where the total is missing, as on the site; null if not available."
    },
    "esercizi": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Number of accommodation establishments in `anno_capacita`; null if not available."
    },
    "popolazione": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Resident population in `popolazione_anno` (the latest year loaded, whatever `anno` is); null if not available."
    },
    "popolazione_anno": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Reference year of `popolazione`; null if not available."
    },
    "nota": {
      "type": [
        "string",
        "null"
      ],
      "description": "Notes in English on reading the figures, null when there is nothing to say: from 2025 ISTAT counts include privately rented holiday flats, so totals and non-hotel figures are not comparable with years before 2025 (hotel figures are); capacity from a year other than `anno`; a year or a comune without movement figures; a comune without a `profilo`."
    },
    "profilo": {
      "type": [
        "object",
        "null"
      ],
      "description": "The comune's territorial profile, the same data as the Territorial profile section of its page: altitude, surface, coordinates, UNESCO World Heritage sites and two tourism-pressure ratios, with the year of each group in `anni` and its own `fonte`. Null when no profile is recorded for the comune or this server does not serve it; `nota` then says which.",
      "properties": {
        "zona_altimetrica": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Altimetric zone of the comune (ISTAT): 1 inland mountain, 2 coastal mountain, 3 inland hill, 4 coastal hill, 5 plain; null if not available."
        },
        "altitudine_m": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Altitude of the comune's centre in metres above sea level (ISTAT); null if not available."
        },
        "litoraneo": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "True if the comune is on the coast, false if not (ISTAT); null if not available."
        },
        "isolano": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "True if the comune is on an island, false if not (ISTAT); null if not available."
        },
        "montano": {
          "type": [
            "string",
            "null"
          ],
          "enum": [
            "T",
            "P",
            "NM",
            null
          ],
          "description": "Mountain classification of the comune (ISTAT): T entirely mountain, P partly mountain, NM not mountain; null if not available."
        },
        "grado_urbanizzazione": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Degree of urbanisation (ISTAT): 1 city, 2 towns and suburbs, 3 rural areas; null if not available."
        },
        "superficie_kmq": {
          "type": [
            "number",
            "null"
          ],
          "description": "Surface area of the comune in square kilometres (ISTAT); null if not available."
        },
        "presenze_per_abitante": {
          "type": [
            "number",
            "null"
          ],
          "description": "Tourism pressure: nights spent in the latest year with movement figures (`anni.presenze`) per resident (population of `anni.popolazione`), rounded to two decimals; null if a term is missing. Nights are not people."
        },
        "posti_letto_per_kmq": {
          "type": [
            "number",
            "null"
          ],
          "description": "Bed places in the latest year of the accommodation establishments (`anni.posti_letto`) per square kilometre of `superficie_kmq`, rounded to two decimals; null if a term is missing."
        },
        "lat": {
          "type": [
            "number",
            "null"
          ],
          "description": "Latitude of the comune in degrees (Wikidata, WGS 84); null if not available, including the few comuni with two different points, none of which is chosen."
        },
        "lon": {
          "type": [
            "number",
            "null"
          ],
          "description": "Longitude of the comune in degrees (Wikidata, WGS 84); null when `lat` is null."
        },
        "siti_unesco": {
          "type": [
            "integer",
            "null"
          ],
          "description": "Number of UNESCO World Heritage sites located in the comune (Wikidata), a count taken from Wikidata as it is; 0 if none; null if the comune is not in Wikidata."
        },
        "anni": {
          "type": "object",
          "description": "The reference year of each group of the profile, only of what was used; null where the group is not available.",
          "properties": {
            "classificazioni": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Reference year of the ISTAT group (`altitudine_m`, `superficie_kmq` and the classifications): the year the file refers to; null if that group is not available."
            },
            "presenze": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Reference year of the nights spent used in `presenze_per_abitante`: the latest year with movement figures; null if that group is not available."
            },
            "popolazione": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Reference year of the resident population used in `presenze_per_abitante`: the year closest to `anni.presenze`, which can differ from it; null if that group is not available."
            },
            "posti_letto": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Reference year of the bed places used in `posti_letto_per_kmq`: the latest year of the accommodation establishments; null if that group is not available."
            },
            "wikidata": {
              "type": [
                "integer",
                "null"
              ],
              "description": "Reference year of the Wikidata group (`lat`, `lon`, `siti_unesco`): the year read; null if that group is not available."
            }
          },
          "required": [
            "classificazioni",
            "presenze",
            "popolazione",
            "posti_letto",
            "wikidata"
          ]
        },
        "fonte": {
          "type": "string",
          "description": "Sources to cite with the profile: processed by DatiTuristici.it from institutional data (ISTAT) and Wikidata (CC0)."
        }
      },
      "required": [
        "zona_altimetrica",
        "altitudine_m",
        "litoraneo",
        "isolano",
        "montano",
        "grado_urbanizzazione",
        "superficie_kmq",
        "presenze_per_abitante",
        "posti_letto_per_kmq",
        "lat",
        "lon",
        "siti_unesco",
        "anni",
        "fonte"
      ]
    },
    "fonte": {
      "type": "string",
      "description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
    },
    "scheda": {
      "type": "string",
      "description": "Link to the comune's public page on datituristici.it, to cite."
    }
  },
  "required": [
    "cod_istat",
    "nome",
    "fonte",
    "scheda"
  ]
}
🟢elenca_territori(livello, regione, provincia, limite, offset)

Lists Italian regions, provinces or comuni in alphabetical order, with how many provinces and comuni each region has and how many comuni each province has. Use it to browse the territory and to get the exact names that classifica_territori accepts; do not use it to rank places by tourism figures (use classifica_territori instead) or to look one comune up by name (use cerca_comune instead). Names ignore case, accents and punctuation, and Trentino-Alto Adige is one region with the two provinces of Bolzano and Trento; an unknown or ambiguous name returns an error with the closest names, a comune without a recorded province has null there, and a page past the end is an empty list. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.

Input Schema

{
  "type": "object",
  "properties": {
    "livello": {
      "type": "string",
      "enum": [
        "regione",
        "provincia",
        "comune"
      ],
      "description": "What to list: \"regione\" (regions), \"provincia\" (provinces, optionally of one `regione`) or \"comune\" (comuni, optionally of one `regione` or `provincia`)."
    },
    "regione": {
      "type": "string",
      "minLength": 2,
      "maxLength": 60,
      "description": "Optional: only the provinces or comuni of this region, by its Italian name in any case (\"Toscana\", \"trentino alto adige\")."
    },
    "provincia": {
      "type": "string",
      "minLength": 2,
      "maxLength": 60,
      "description": "Optional: only the comuni of this province, by its Italian name in any case (\"Firenze\", \"Bolzano\", \"Monza e Brianza\")."
    },
    "limite": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "default": 50,
      "description": "Items per page, 1-200, default 50."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0,
      "description": "Items to skip, default 0: for the next page pass the previous `offset` plus `limite` while `ha_altri` is true."
    }
  },
  "required": [
    "livello"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "elementi": {
      "type": "array",
      "description": "The page of regions, provinces or comuni in alphabetical order; an empty list past the last page.",
      "items": {
        "type": "object",
        "properties": {
          "nome": {
            "type": "string",
            "description": "Name as recorded by ISTAT (regions and provinces in capitals): for a region or province, the exact value for `regione` or `provincia` of classifica_territori."
          },
          "cod_istat": {
            "type": [
              "string",
              "null"
            ],
            "description": "6-digit ISTAT code of a comune, leading zeros kept: the `cod_istat` input of leggi_dati_comune. Null for regions and provinces."
          },
          "provincia": {
            "type": [
              "string",
              "null"
            ],
            "description": "Province of a comune, or the province itself; null for regions and for a comune without a recorded province."
          },
          "regione": {
            "type": [
              "string",
              "null"
            ],
            "description": "Region of a comune or province, or the region itself (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null if not recorded."
          },
          "n_province": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of provinces of a region; null for provinces and comuni."
          },
          "n_comuni": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of comuni of a region or province; null for comuni."
          }
        },
        "required": [
          "nome"
        ]
      }
    },
    "totale": {
      "type": "integer",
      "description": "Number of matching items across all pages."
    },
    "offset": {
      "type": "integer",
      "description": "Items skipped before this page, as requested."
    },
    "ha_altri": {
      "type": "boolean",
      "description": "True when more items follow this page: ask again with a larger `offset`."
    },
    "fonte": {
      "type": "string",
      "description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
    }
  },
  "required": [
    "elementi",
    "totale",
    "offset",
    "ha_altri",
    "fonte"
  ]
}
🟢classifica_territori(livello, regione, provincia, anno, ordina_per, ...)

Ranks and filters Italian comuni, provinces or regions by the tourism figures of one year, with the same rows, order and values as the advanced search (Esplora) on datituristici.it. Use it for questions with criteria, such as the comuni of a region with the most nights or those above a bed occupancy threshold; do not use it to read one known comune (use leggi_dati_comune instead), to look a place up by name (use cerca_comune instead) or to browse names (use elenca_territori instead). Figures are for `anno`, by default the latest year with data; a figure that is not available is null, an empty list means that no territory meets the criteria, and in 2025 `variazione` is null because the counts started including privately rented holiday flats (`nota` explains it). Read-only, public, no authentication; 30 requests per minute per client, shared across tools.

Input Schema

{
  "type": "object",
  "properties": {
    "livello": {
      "type": "string",
      "enum": [
        "comune",
        "provincia",
        "regione"
      ],
      "default": "comune",
      "description": "What to rank: \"comune\" (default), \"provincia\" or \"regione\"."
    },
    "regione": {
      "type": "array",
      "maxItems": 5,
      "items": {
        "type": "string",
        "minLength": 2,
        "maxLength": 60
      },
      "description": "Optional: keep only these regions, up to 5, by Italian name in any case, e.g. [\"Toscana\", \"Umbria\"]."
    },
    "provincia": {
      "type": "array",
      "maxItems": 5,
      "items": {
        "type": "string",
        "minLength": 2,
        "maxLength": 60
      },
      "description": "Optional: keep only these provinces, up to 5, by Italian name, e.g. [\"Firenze\", \"Bolzano\"]; not with \"regione\" as `livello`."
    },
    "anno": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2100,
      "description": "Year of the figures, e.g. 2024; default: the latest year with data. A year outside the years with data returns an error that gives them."
    },
    "ordina_per": {
      "type": "string",
      "enum": [
        "presenze",
        "arrivi",
        "permanenza",
        "variazione",
        "stagionalita",
        "tasso_occ",
        "posti_letto",
        "n_esercizi",
        "quota_extra",
        "nome"
      ],
      "default": "presenze",
      "description": "Metric to sort by (meanings under `filtri`), or nome for alphabetical order; default presenze. Rows without the metric come last."
    },
    "ordine": {
      "type": "string",
      "enum": [
        "desc",
        "asc"
      ],
      "default": "desc",
      "description": "\"desc\" (default) puts the highest values first, \"asc\" the lowest."
    },
    "filtri": {
      "type": "array",
      "maxItems": 5,
      "description": "Optional thresholds, up to 5 and one per metric: a row is kept when each metric is within its bounds, and a row without that metric is dropped. Example: [{\"metrica\": \"presenze\", \"min\": 100000}, {\"metrica\": \"tasso_occ\", \"max\": 40}].",
      "items": {
        "type": "object",
        "properties": {
          "metrica": {
            "type": "string",
            "enum": [
              "presenze",
              "arrivi",
              "permanenza",
              "variazione",
              "stagionalita",
              "tasso_occ",
              "posti_letto",
              "n_esercizi",
              "quota_extra"
            ],
            "description": "Metric to bound: presenze: Nights spent by guests in accommodation establishments in `anno` (one guest staying three nights counts three).; arrivi: Guest arrivals (check-ins) at accommodation establishments in `anno`.; permanenza: Average length of stay in nights: presenze divided by arrivi.; variazione: Percent change of presenze on the previous year; null in 2025 by construction (see `nota`).; stagionalita: Seasonality index from 0 to 100: how much the nights concentrate in the three busiest months (0 = spread evenly over the year, 100 = all in three months).; tasso_occ: Gross bed occupancy in percent: presenze / (posti_letto * 365) * 100.; posti_letto: Bed places in accommodation establishments.; n_esercizi: Number of accommodation establishments.; quota_extra: Share of nights spent in non-hotel establishments (holiday homes, campsites, rented flats and others), in percent."
          },
          "min": {
            "type": "number",
            "description": "Lowest accepted value, inclusive; omit it for no lower bound."
          },
          "max": {
            "type": "number",
            "description": "Highest accepted value, inclusive; omit it for no upper bound."
          }
        },
        "required": [
          "metrica"
        ],
        "additionalProperties": false
      }
    },
    "andamento": {
      "type": "string",
      "enum": [
        "crescita",
        "stabile",
        "calo"
      ],
      "description": "Optional trend of presenze on the previous year: crescita = variazione at least +3%, calo = at most -3%, stabile = in between. Not applied in 2025, where variazione does not exist (see `nota`)."
    },
    "limite": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 10,
      "description": "Rows per page, 1-50, default 10."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0,
      "description": "Items to skip, default 0: for the next page pass the previous `offset` plus `limite` while `ha_altri` is true."
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "righe": {
      "type": "array",
      "description": "The page of ranked rows; an empty list when no territory meets the criteria or past the last page.",
      "items": {
        "type": "object",
        "properties": {
          "livello": {
            "type": "string",
            "description": "Kind of territory: \"comune\", \"provincia\" or \"regione\"."
          },
          "chiave": {
            "type": "string",
            "description": "6-digit ISTAT code for a comune (the `cod_istat` input of leggi_dati_comune), the name for a province or region."
          },
          "nome": {
            "type": "string",
            "description": "Name as recorded by ISTAT. Among comuni, a row whose name starts with 'Altri comuni' is not a comune: it is the ISTAT total of the small comuni of its province, published as one row."
          },
          "provincia": {
            "type": [
              "string",
              "null"
            ],
            "description": "Province of the row (for a province, itself); null for regions."
          },
          "regione": {
            "type": [
              "string",
              "null"
            ],
            "description": "Region of the row (for a region, itself); null if not recorded."
          },
          "anno": {
            "type": "integer",
            "description": "Year of the figures."
          },
          "presenze": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Nights spent by guests in accommodation establishments in `anno` (one guest staying three nights counts three). Null if not available."
          },
          "arrivi": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Guest arrivals (check-ins) at accommodation establishments in `anno`. Null if not available."
          },
          "permanenza": {
            "type": [
              "number",
              "null"
            ],
            "description": "Average length of stay in nights: presenze divided by arrivi. Null if not available."
          },
          "variazione": {
            "type": [
              "number",
              "null"
            ],
            "description": "Percent change of presenze on the previous year; null in 2025 by construction (see `nota`). Null if not available."
          },
          "stagionalita": {
            "type": [
              "number",
              "null"
            ],
            "description": "Seasonality index from 0 to 100: how much the nights concentrate in the three busiest months (0 = spread evenly over the year, 100 = all in three months). Null if not available."
          },
          "tasso_occ": {
            "type": [
              "number",
              "null"
            ],
            "description": "Gross bed occupancy in percent: presenze / (posti_letto * 365) * 100. Null if not available."
          },
          "posti_letto": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Bed places in accommodation establishments. Null if not available."
          },
          "n_esercizi": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of accommodation establishments. Null if not available."
          },
          "quota_extra": {
            "type": [
              "number",
              "null"
            ],
            "description": "Share of nights spent in non-hotel establishments (holiday homes, campsites, rented flats and others), in percent. Null if not available."
          },
          "ha_dati": {
            "type": "boolean",
            "description": "False when ISTAT published no movement figures for this territory in `anno`: its metrics are then null."
          }
        },
        "required": [
          "livello",
          "chiave",
          "nome",
          "anno",
          "ha_dati"
        ]
      }
    },
    "totale": {
      "type": "integer",
      "description": "Number of matching items across all pages."
    },
    "offset": {
      "type": "integer",
      "description": "Items skipped before this page, as requested."
    },
    "ha_altri": {
      "type": "boolean",
      "description": "True when more items follow this page: ask again with a larger `offset`."
    },
    "anno": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Year of the figures: the requested one, or the latest with data; null only when no figures are loaded."
    },
    "nota": {
      "type": [
        "string",
        "null"
      ],
      "description": "Comparability warning in English for 2025 and later (privately rented holiday flats entered the counts), saying in 2025 which arguments were not applied; null otherwise."
    },
    "fonte": {
      "type": "string",
      "description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
    }
  },
  "required": [
    "righe",
    "totale",
    "offset",
    "ha_altri",
    "anno",
    "nota",
    "fonte"
  ]
}
🟢leggi_dati_territorio(livello, nome, anno)

Reads the tourism totals of one Italian region, one province or the whole of Italy in one year: nights, arrivals, bed places, establishments and population. Use it for the figures of a whole territory, split by guests resident in Italy and abroad; do not use it to rank or filter territories (use classifica_territori instead) or for a single comune (use leggi_dati_comune instead). Names ignore case and accents, Trentino-Alto Adige is one region with the provinces of Bolzano and Trento, and an unknown name returns an error with the closest names (elenca_territori lists them all). The totals are those of classifica_territori for the same year; a figure that is not available is null and `nota` says why, also from 2025, when the counts changed scope. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.

Input Schema

{
  "type": "object",
  "properties": {
    "livello": {
      "type": "string",
      "enum": [
        "regione",
        "provincia",
        "nazione"
      ],
      "description": "What to total: \"regione\" (one region), \"provincia\" (one province) or \"nazione\" (the whole of Italy, the sum of the regions)."
    },
    "nome": {
      "type": "string",
      "minLength": 2,
      "maxLength": 60,
      "description": "Italian name of the region or province, in any case (\"Toscana\", \"Bolzano\", \"Monza e Brianza\"); required for regione and provincia, omitted for nazione."
    },
    "anno": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2100,
      "description": "Year of the figures, e.g. 2024; default: the latest year with data. A year outside the years with data returns an error that gives them."
    }
  },
  "required": [
    "livello"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "livello": {
      "type": "string",
      "description": "Kind of territory, as requested: \"regione\", \"provincia\" or \"nazione\" (the whole of Italy)."
    },
    "nome": {
      "type": [
        "string",
        "null"
      ],
      "description": "Name of the region or province as recorded by ISTAT (in capitals), the one `nome` resolved to; null for nazione."
    },
    "regione": {
      "type": [
        "string",
        "null"
      ],
      "description": "Region of the province, or the region itself (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null for nazione."
    },
    "anno": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Year of the figures: the requested one, or the latest year with data; null only when no figures are loaded."
    },
    "presenze_totali": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Nights spent by all guests in accommodation establishments during `anno` (one guest staying three nights counts three); null if not available."
    },
    "presenze_italiani": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Nights spent by guests resident in Italy during `anno`; null if not available."
    },
    "presenze_stranieri": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Nights spent by guests resident abroad during `anno`; null if not available."
    },
    "arrivi_totali": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Guest arrivals (check-ins) at accommodation establishments during `anno`; null if not available."
    },
    "arrivi_italiani": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Arrivals of guests resident in Italy during `anno`; null if not available."
    },
    "arrivi_stranieri": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Arrivals of guests resident abroad during `anno`; null if not available."
    },
    "posti_letto": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Bed places in `anno` of the comuni with movement figures in `anno`, the total of classifica_territori; null if not available."
    },
    "n_esercizi": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Accommodation establishments in `anno` of the same comuni, the total of classifica_territori; null if not available."
    },
    "popolazione": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Resident population in `popolazione_anno`, summed over the comuni of the territory; null if not available."
    },
    "popolazione_anno": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Reference year of `popolazione`: the latest year loaded; null if not available."
    },
    "n_comuni": {
      "type": "integer",
      "description": "Number of comuni of the territory, as counted by elenca_territori."
    },
    "n_comuni_con_dati": {
      "type": "integer",
      "description": "How many of those comuni have movement figures of their own in `anno`."
    },
    "nota": {
      "type": [
        "string",
        "null"
      ],
      "description": "Notes in English on reading the totals, null when there is nothing to say: from 2025 ISTAT counts include privately rented holiday flats, so totals and non-hotel figures are not comparable with years before 2025 (hotel figures are); ISTAT rows that group the small comuni of a province, counted in the totals; a territory without figures in `anno`."
    },
    "fonte": {
      "type": "string",
      "description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
    }
  },
  "required": [
    "livello",
    "nome",
    "regione",
    "anno",
    "presenze_totali",
    "presenze_italiani",
    "presenze_stranieri",
    "arrivi_totali",
    "arrivi_italiani",
    "arrivi_stranieri",
    "posti_letto",
    "n_esercizi",
    "popolazione",
    "popolazione_anno",
    "n_comuni",
    "n_comuni_con_dati",
    "nota",
    "fonte"
  ]
}
🟢leggi_serie_comune(cod_istat, da_anno, a_anno)

Reads the yearly series of nights spent (presenze) and arrivals of one Italian comune, split by guests resident in Italy and abroad, over a range of years. Use it for the trend of one comune, given its 6-digit `cod_istat` from cerca_comune; do not use it for one year or for capacity and population (use leggi_dati_comune instead), or for several comuni (use confronta_comuni instead). Rows are yearly, oldest first; from 2025 ISTAT counts include privately rented holiday flats, so `anno_discontinuita` and `nota` flag that totals across 2025 are not comparable (hotel figures are). A comune without figures returns an empty list in `serie` with a `nota`, and a range outside its years with data or an unknown code returns an error that says what to pass. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.

Input Schema

{
  "type": "object",
  "properties": {
    "cod_istat": {
      "type": "string",
      "pattern": "^\\d{6}$",
      "description": "6-digit ISTAT code of the comune as a string, leading zeros kept (\"058091\" is Roma); it comes from cerca_comune."
    },
    "da_anno": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2100,
      "description": "First year to include, e.g. 2015; default: the first year with data."
    },
    "a_anno": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2100,
      "description": "Last year to include, e.g. 2024, not before `da_anno`; default: the latest year with data. A range with no year of data returns an error that gives the years."
    }
  },
  "required": [
    "cod_istat"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "cod_istat": {
      "type": "string",
      "description": "6-digit ISTAT code of the comune, as a string with leading zeros kept."
    },
    "nome": {
      "type": "string",
      "description": "Official name of the comune."
    },
    "provincia": {
      "type": [
        "string",
        "null"
      ],
      "description": "Province (or metropolitan city) as recorded by ISTAT; null if not recorded."
    },
    "regione": {
      "type": [
        "string",
        "null"
      ],
      "description": "Region as recorded by ISTAT (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null if not recorded."
    },
    "serie": {
      "type": "array",
      "description": "One row per year with movement figures, oldest first, from `da_anno` to `a_anno`; yearly figures only. An empty list when the comune has none, or none in that range (`nota` then lists the years that have figures).",
      "items": {
        "type": "object",
        "properties": {
          "anno": {
            "type": "integer",
            "description": "Year of the row."
          },
          "presenze_totali": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Nights spent by all guests in accommodation establishments during `anno` (one guest staying three nights counts three); null if not available."
          },
          "presenze_italiani": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Nights spent by guests resident in Italy during `anno`; null if not available."
          },
          "presenze_stranieri": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Nights spent by guests resident abroad during `anno`; null if not available."
          },
          "arrivi_totali": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Guest arrivals (check-ins) at accommodation establishments during `anno`; null if not available."
          },
          "arrivi_italiani": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Arrivals of guests resident in Italy during `anno`; null if not available."
          },
          "arrivi_stranieri": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Arrivals of guests resident abroad during `anno`; null if not available."
          }
        },
        "required": [
          "anno",
          "presenze_totali",
          "presenze_italiani",
          "presenze_stranieri",
          "arrivi_totali",
          "arrivi_italiani",
          "arrivi_stranieri"
        ]
      }
    },
    "anno_discontinuita": {
      "type": [
        "integer",
        "null"
      ],
      "description": "2025 when the series reaches it: from 2025 ISTAT counts include privately rented holiday flats, so totals and non-hotel figures are not comparable with years before 2025 (hotel figures are). Null when every row is before 2025."
    },
    "nota": {
      "type": [
        "string",
        "null"
      ],
      "description": "Notes in English on reading the series (the change of scope above, a comune without figures, or a range without a year of figures); null otherwise."
    },
    "fonte": {
      "type": "string",
      "description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
    },
    "scheda": {
      "type": "string",
      "description": "Link to the comune's public page on datituristici.it, to cite."
    }
  },
  "required": [
    "cod_istat",
    "nome",
    "provincia",
    "regione",
    "serie",
    "anno_discontinuita",
    "nota",
    "fonte",
    "scheda"
  ]
}
🟢confronta_comuni(cod_istat, anno)

Compares 2 to 5 Italian comuni side by side in the same year: nights, arrivals, bed places, establishments, population, average stay and share of arrivals from abroad. Use it when the question is about several comuni at once and you have their 6-digit codes from cerca_comune; do not use it for one comune (use leggi_dati_comune instead) or to rank many by a criterion (use classifica_territori instead). `anno` defaults to the latest year with figures for every comune, so the numbers stay comparable; a comune without figures in that year keeps null values and `nota` names it, also flagging 2025 and later, when the counts changed scope. Fewer than 2 or more than 5 codes, a repeated code or an unknown one returns an error that says what to pass. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.

Input Schema

{
  "type": "object",
  "properties": {
    "cod_istat": {
      "type": "array",
      "minItems": 2,
      "maxItems": 5,
      "uniqueItems": true,
      "items": {
        "type": "string",
        "pattern": "^\\d{6}$"
      },
      "description": "2 to 5 different 6-digit ISTAT codes as strings, leading zeros kept, e.g. [\"058091\", \"015146\"] for Roma and Milano; they come from cerca_comune."
    },
    "anno": {
      "type": "integer",
      "minimum": 2000,
      "maximum": 2100,
      "description": "Year of the figures for every comune, e.g. 2024; default: the latest year they all have. A year outside their years with data returns an error that gives them."
    }
  },
  "required": [
    "cod_istat"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "anno": {
      "type": [
        "integer",
        "null"
      ],
      "description": "The one year of every figure: the requested one, or the latest year with figures for every comune; null if none of them has figures."
    },
    "comuni": {
      "type": "array",
      "description": "The comuni in the requested order, each with its figures of `anno`.",
      "items": {
        "type": "object",
        "properties": {
          "cod_istat": {
            "type": "string",
            "description": "6-digit ISTAT code of the comune, as a string with leading zeros kept."
          },
          "nome": {
            "type": "string",
            "description": "Official name of the comune."
          },
          "provincia": {
            "type": [
              "string",
              "null"
            ],
            "description": "Province (or metropolitan city) as recorded by ISTAT; null if not recorded."
          },
          "regione": {
            "type": [
              "string",
              "null"
            ],
            "description": "Region as recorded by ISTAT (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null if not recorded."
          },
          "presenze_totali": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Nights spent by all guests in accommodation establishments during `anno` (one guest staying three nights counts three); null if not available."
          },
          "presenze_italiani": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Nights spent by guests resident in Italy during `anno`; null if not available."
          },
          "presenze_stranieri": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Nights spent by guests resident abroad during `anno`; null if not available."
          },
          "arrivi_totali": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Guest arrivals (check-ins) at accommodation establishments during `anno`; null if not available."
          },
          "arrivi_italiani": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Arrivals of guests resident in Italy during `anno`; null if not available."
          },
          "arrivi_stranieri": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Arrivals of guests resident abroad during `anno`; null if not available."
          },
          "anno_capacita": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Year of the capacity figures (bed places and establishments): the latest year published up to `anno`, so it can be earlier; null if none is."
          },
          "posti_letto": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Bed places in accommodation establishments in `anno_capacita`: the ISTAT total, or hotel plus non-hotel beds where the total is missing, as on the site; null if not available."
          },
          "esercizi": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Number of accommodation establishments in `anno_capacita`; null if not available."
          },
          "popolazione": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Resident population in `popolazione_anno` (the latest year loaded, whatever `anno` is); null if not available."
          },
          "popolazione_anno": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Reference year of `popolazione`; null if not available."
          },
          "permanenza": {
            "type": [
              "number",
              "null"
            ],
            "description": "Average length of stay in nights: presenze_totali / arrivi_totali, not rounded, the same value as `permanenza` in classifica_territori; null if not available."
          },
          "quota_arrivi_stranieri": {
            "type": [
              "number",
              "null"
            ],
            "description": "Share of arrivals by guests resident abroad, in percent: arrivi_stranieri / arrivi_totali * 100, rounded to one decimal; null if not available."
          },
          "scheda": {
            "type": "string",
            "description": "Link to the comune's public page on datituristici.it, to cite."
          }
        },
        "required": [
          "cod_istat",
          "nome",
          "scheda"
        ]
      }
    },
    "nota": {
      "type": [
        "string",
        "null"
      ],
      "description": "Notes in English, null when there is nothing to say: from 2025 ISTAT counts include privately rented holiday flats, so totals and non-hotel figures are not comparable with years before 2025 (hotel figures are); comuni without figures in `anno`; capacity from an earlier year."
    },
    "fonte": {
      "type": "string",
      "description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
    }
  },
  "required": [
    "anno",
    "comuni",
    "nota",
    "fonte"
  ]
}
🟢leggi_previsioni_comune(cod_istat)

Reads the statistical projection of one Italian municipality (comune) for the year after the latest ISTAT year: total, hotel and non-hotel nights and arrivals. Use it when you have the 6-digit `cod_istat` from cerca_comune and the question is what to expect next; do not use it for past figures (use leggi_serie_comune instead) or to set comuni side by side (use confronta_comuni instead). Each line gives last year's real figure, the projected figure and `affidabilita_pct` (0 to 100, measured by projecting a past year), and only the total has the p10 to p90 uncertainty band; a line that fails the checks has `disponibile` false and a `motivo`, a comune without a yearly series returns an empty list in `linee` with a `nota`, and a missing figure is null. These are estimates, not official statistics, and they are served only while the site shows projections to everyone, otherwise the call returns an error. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.

Input Schema

{
  "type": "object",
  "properties": {
    "cod_istat": {
      "type": "string",
      "pattern": "^\\d{6}$",
      "description": "6-digit ISTAT code of the comune as a string, leading zeros kept (\"058091\" is Roma); it comes from cerca_comune. An unknown code returns an error that says what to pass."
    }
  },
  "required": [
    "cod_istat"
  ],
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "cod_istat": {
      "type": "string",
      "description": "6-digit ISTAT code of the comune, as a string with leading zeros kept."
    },
    "nome": {
      "type": "string",
      "description": "Official name of the comune."
    },
    "anno_orizzonte": {
      "type": [
        "integer",
        "null"
      ],
      "description": "The one year projected: the year after the latest year with ISTAT yearly figures. Null when no projection is stored for this comune (see `nota`)."
    },
    "soglia_affidabilita_bassa": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Reliability percentage below which the site labels a projection as low; null when no projection is stored."
    },
    "linee": {
      "type": "array",
      "description": "The four lines in the order totale, alberghieri, extra, arrivi; an empty list when no projection is stored for this comune (see `nota`).",
      "items": {
        "type": "object",
        "properties": {
          "linea": {
            "type": "string",
            "enum": [
              "totale",
              "alberghieri",
              "extra",
              "arrivi"
            ],
            "description": "What is projected: totale = nights spent in all establishments, alberghieri = nights in hotels, extra = nights in non-hotel establishments, arrivi = guest arrivals."
          },
          "disponibile": {
            "type": "boolean",
            "description": "True when this line has a projection; false when it was rejected (see `motivo`) and its numbers are null."
          },
          "motivo": {
            "type": [
              "string",
              "null"
            ],
            "description": "Why the line is not projected, null when it is: nessun_dato = no figure in the recent years the check looks at; serie_corta = a recent year is missing; zeri = a recent year is zero; salto = a jump between consecutive years too large to project from (the 2025 change of ISTAT scope is not counted as a jump); senza_totale = the line itself passes but `totale` does not, and every other line is anchored to it."
          },
          "reale_anno_prima": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The real figure of the year before `anno_orizzonte`, the latest year with ISTAT figures, to set beside `proiettato`; null when the line is not available."
          },
          "proiettato": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The projected figure for `anno_orizzonte` (nights, or arrivals for the line arrivi). For totale it is the median of the model's forecast for the year or, when `nota` says the total adds any months ISTAT has already published, those months (if any) plus the projected remaining months. alberghieri, extra and arrivi may be derived from the total, as `nota` says. Null when the line is not available."
          },
          "p10": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Lower end of the uncertainty band: the 10th percentile of the model's forecast or, when `nota` says the total adds any months ISTAT has already published, those months (if any) plus the sum of the monthly 10th percentiles of the projected months, a wider band than a plain 10th percentile. Only the line totale has it; null for the others."
          },
          "p90": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Upper end of the uncertainty band: the 90th percentile of the model's forecast or, when `nota` says the total adds any months ISTAT has already published, those months (if any) plus the sum of the monthly 90th percentiles of the projected months, a wider band than a plain 90th percentile. Only the line totale has it; null for the others."
          },
          "affidabilita_pct": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Reliability from 0 to 100: 100 minus the percent error the model made when it projected `anno_di_prova` from the earlier years only, floored at 0. Null when the line is not available or too few earlier years allowed the test (see `nota`)."
          },
          "anno_di_prova": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The year on which the reliability was measured; null when the line is not available."
          }
        },
        "required": [
          "linea",
          "disponibile",
          "motivo",
          "reale_anno_prima",
          "proiettato",
          "p10",
          "p90",
          "affidabilita_pct",
          "anno_di_prova"
        ]
      }
    },
    "metodo": {
      "type": [
        "string",
        "null"
      ],
      "description": "Name of the statistical model that made the projections; null when none is stored."
    },
    "nota": {
      "type": "string",
      "description": "Notes in English on reading the projection: what it is, how the total and its band are built when the year adds any months ISTAT has already published, which lines are not projected and why, which may be derived from the total, where reliability is missing, and the change of ISTAT scope in 2025. When no projection is stored, it says so."
    },
    "fonte": {
      "type": "string",
      "description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
    },
    "scheda": {
      "type": "string",
      "description": "Link to the comune's public page on datituristici.it, to cite."
    }
  },
  "required": [
    "cod_istat",
    "nome",
    "anno_orizzonte",
    "soglia_affidabilita_bassa",
    "linee",
    "metodo",
    "nota",
    "fonte",
    "scheda"
  ]
}
🟢leggi_copertura_dati(cod_istat)

Reads which tourism figures the service holds and how recent they are: the latest year, how many comuni are covered, the last import, what each metric means and the 2025 break in the series. Use it to check how current the figures are, what a metric means or why a comune has a gap; do not use it to read the figures themselves (use leggi_dati_comune instead) or to find a comune by name (use cerca_comune instead). With a 6-digit `cod_istat` it adds the years with figures and with capacity for that comune and whether it has a projection and why not; without one `per_comune` is null. `aggiornato_il` is the time of the last successful import, null if none is recorded, not of the last check for new files; `profilo_territoriale` gives the year and the last import of the sources of the territorial profile. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.

Input Schema

{
  "type": "object",
  "properties": {
    "cod_istat": {
      "type": "string",
      "pattern": "^\\d{6}$",
      "description": "Optional: 6-digit ISTAT code of one comune as a string, leading zeros kept (\"058091\" is Roma), from cerca_comune, to add its own coverage; omit it for the summary of the whole country. An unknown code returns an error that says what to pass."
    }
  },
  "additionalProperties": false
}

Output Schema

{
  "type": "object",
  "properties": {
    "ultimo_anno_annuale": {
      "type": [
        "integer",
        "null"
      ],
      "description": "Latest year with yearly movement figures (the default `anno` of the other tools); null only when no figures are loaded."
    },
    "ultimo_periodo_infrannuale": {
      "type": [
        "string",
        "null"
      ],
      "description": "Latest period with sub-annual (monthly) nights, as YYYY-MM. Only this date is given: the monthly figures themselves are not served here. Null if there are none."
    },
    "comuni_con_dati": {
      "type": "integer",
      "description": "How many comuni have movement figures in `ultimo_anno_annuale`; the ISTAT rows that group the small comuni of a province are not counted."
    },
    "comuni_totali": {
      "type": "integer",
      "description": "Number of comuni, as counted by elenca_territori."
    },
    "aggiornato_il": {
      "type": [
        "string",
        "null"
      ],
      "description": "UTC timestamp of the last successful import of the ISTAT tourism files (ISO 8601): when the figures were last loaded, not when they were last checked. Null if no import is recorded."
    },
    "cadenza": {
      "type": "string",
      "description": "How the figures are kept up to date: when the service checks for new ISTAT files and what makes the figures change."
    },
    "definizioni": {
      "type": "object",
      "description": "What the metrics of classifica_territori mean, one entry per metric, with the same wording as its `filtri` parameter. Presenze are nights spent, not people.",
      "properties": {
        "presenze": {
          "type": "string",
          "description": "Definition of the metric presenze."
        },
        "arrivi": {
          "type": "string",
          "description": "Definition of the metric arrivi."
        },
        "permanenza": {
          "type": "string",
          "description": "Definition of the metric permanenza."
        },
        "tasso_occ": {
          "type": "string",
          "description": "Definition of the metric tasso_occ."
        },
        "stagionalita": {
          "type": "string",
          "description": "Definition of the metric stagionalita."
        },
        "variazione": {
          "type": "string",
          "description": "Definition of the metric variazione."
        },
        "quota_extra": {
          "type": "string",
          "description": "Definition of the metric quota_extra."
        }
      },
      "required": [
        "presenze",
        "arrivi",
        "permanenza",
        "tasso_occ",
        "stagionalita",
        "variazione",
        "quota_extra"
      ]
    },
    "discontinuita": {
      "type": "object",
      "description": "The break in the series: the year ISTAT changed what its counts include.",
      "properties": {
        "anno": {
          "type": "integer",
          "description": "First year counted with the new scope."
        },
        "spiegazione": {
          "type": "string",
          "description": "What changed and which figures are no longer comparable."
        }
      },
      "required": [
        "anno",
        "spiegazione"
      ]
    },
    "per_comune": {
      "type": [
        "object",
        "null"
      ],
      "description": "The coverage of the one comune asked for with `cod_istat`; null when `cod_istat` was omitted.",
      "properties": {
        "cod_istat": {
          "type": "string",
          "description": "6-digit ISTAT code of the comune, as a string with leading zeros kept."
        },
        "nome": {
          "type": "string",
          "description": "Official name of the comune."
        },
        "anni_con_dati": {
          "type": "array",
          "description": "Years with a row of movement figures (nights and arrivals), oldest first; an empty list when the comune has none.",
          "items": {
            "type": "integer",
            "description": "A year."
          }
        },
        "anni_con_capacita": {
          "type": "array",
          "description": "Years with a row of capacity figures (bed places and establishments), oldest first; an empty list when the comune has none.",
          "items": {
            "type": "integer",
            "description": "A year."
          }
        },
        "ha_previsioni": {
          "type": [
            "boolean",
            "null"
          ],
          "description": "True when leggi_previsioni_comune has a projection of the total nights for this comune; null when projections are not public at the moment."
        },
        "motivo": {
          "type": [
            "string",
            "null"
          ],
          "description": "Why there is no projection, null when there is one: the `motivo` codes of leggi_previsioni_comune, or non_calcolata = none is stored for the comune, or non_pubbliche = projections are not public at the moment."
        }
      },
      "required": [
        "cod_istat",
        "nome",
        "anni_con_dati",
        "anni_con_capacita",
        "ha_previsioni",
        "motivo"
      ]
    },
    "profilo_territoriale": {
      "type": [
        "array",
        "null"
      ],
      "description": "The sources of the `profilo` that leggi_dati_comune gives, one entry each, with the year of their data and the time of their last successful import; null when this server does not serve the profile.",
      "items": {
        "type": "object",
        "description": "One source of the territorial profile.",
        "properties": {
          "fonte": {
            "type": "string",
            "description": "How to cite this source."
          },
          "dati": {
            "type": "string",
            "description": "What this source gives to the profile."
          },
          "anno": {
            "type": [
              "integer",
              "null"
            ],
            "description": "Reference year of the data held (the latest year of the ISTAT file, the year Wikidata was read); null if none is loaded."
          },
          "aggiornato_il": {
            "type": [
              "string",
              "null"
            ],
            "description": "UTC timestamp of the last successful import of this source (ISO 8601), not of the last check; null if none is recorded."
          }
        },
        "required": [
          "fonte",
          "dati",
          "anno",
          "aggiornato_il"
        ]
      }
    },
    "nota": {
      "type": [
        "string",
        "null"
      ],
      "description": "Notes in English, null when there is nothing to say: no figures loaded yet, or the comune has no movement figures."
    },
    "fonte": {
      "type": "string",
      "description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
    }
  },
  "required": [
    "ultimo_anno_annuale",
    "ultimo_periodo_infrannuale",
    "comuni_con_dati",
    "comuni_totali",
    "aggiornato_il",
    "cadenza",
    "definizioni",
    "discontinuita",
    "per_comune",
    "profilo_territoriale",
    "nota",
    "fonte"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools
failed observationversion not recorded—
failed observationversion not recorded—
failed observationversion not recorded—
failed observationversion not recorded—