About the data

This page covers every dataset behind Expat Living Italy’s data tools — the ISTAT-derived comune-level demographics map and profile pages, the BES (Benessere Equo e Sostenibile) province comparison, and residential purchase/rent prices from Agenzia delle Entrate’s OMI (Osservatorio del Mercato Immobiliare), used in the cost vs. quality of life tool. Our editorial commitment is that every number is traceable to a source and a date — provenance is a feature, not a footnote. Data as of 2026-10-13.

Sources

Sources · data as of 2026-10-13
  • Foreign residents by citizenshipISTAT, extracted 2026-10-13 — Residents holding foreign citizenship, by comune and nationality.
  • Foreign residents, all citizenshipsISTAT, extracted 2026-10-13 — Residents holding any foreign citizenship, by comune: ISTAT's own total, not limited to the nationalities this site tracks. Citizenship, not birthplace. Comuni ISTAT sends no total for are absent, not zero.
  • Residents by country-of-birth groupISTAT, extracted 2026-10-13 — Broad country-of-birth group (Italy / other EU / non-EU), not per-nationality — see methodology page.
  • New foreign registrations from abroadISTAT, extracted 2026-10-13 — New residency registrations from abroad, by comune. Not nationality-specific.
  • Population change (2019–2025)ISTAT, extracted 2026-10-13 — Total resident population % change, 2019–2025 (shorter than 10 years — see methodology).
  • Median age and indice di vecchiaia (2019)ISTAT, extracted 2026-10-13 — From ISTAT's intercensal population reconstruction, 2019 (its last year) — not current-year.
  • Median age (2019)ISTAT, extracted 2026-10-13 — Median age, from ISTAT's intercensal population reconstruction, 2019 (its last year) — not current-year.
  • Indice di vecchiaia (2019)ISTAT, extracted 2026-10-13 — Population aged 65+ per 100 aged 0-14, from ISTAT's intercensal population reconstruction, 2019. Comuni with nobody aged 0-14 are omitted (the ratio is undefined), not shown as zero.
  • Change in foreign share (2019–2025)ISTAT, extracted 2026-10-13 — Percentage-point change in the all-citizenships foreign-resident share, 2019–2025 (shorter than 5/10 years — see methodology).
  • Citizenship acquisitions (2024)ISTAT, extracted 2026-10-13 — Foreigners who acquired Italian citizenship, by province (province-level, not comune).
  • BES (Benessere Equo e Sostenibile) dei territoriISTAT, extracted 2026-08-09 — BesT 2025 edition (reference year 2024). All 67 published indicators, province level (15 flagged as a curated expat-relevant default view). Percentile ranks are polarity-aware: a higher percentile always means better, regardless of whether the underlying indicator's direction is 'higher is better' or 'lower is better'.
  • Well-being (BES) — map layerISTAT, extracted 2026-08-19 — BesT 2025 edition (reference year 2024). Percentile rank among the 106 provinces with data for the selected indicator, polarity-aware — a higher percentile always means better, whichever direction the underlying indicator runs. Raw values, in each indicator's own units, are on the indicator explorer.
  • National IRPEF brackets (2026)Legge di Bilancio 2026 (L. 199/2025), amending TUIR art. 11, extracted 2026-08-24 — The statutory IRPEF rate schedule: 23% to EUR 28,000, 33% to EUR 50,000, 43% above. Hand-encoded from the legislation, not scraped. Used to compute IMPOSTA LORDA — tax before credits — never tax payable: detrazioni are not modeled, so any figure derived from it overstates what someone actually pays. Verified 2026-08-25 against TUIR art. 11 as amended by L. 199/2025 — see data/tax/irpef-national-2026.json's verificationNotes.
  • Residential property prices (OMI, 2025H2)Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI), extracted 2026-09-12 — Transaction-range midpoints (Compr_min/Compr_max, Loc_min/Loc_max) for "Abitazioni civili" in "NORMALE" condition, averaged across OMI zones to comune level, then population-weighted (ISTAT resident population) to province level. OMI semester 2025H2.
  • Property purchase price by province (2025H2)Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI), extracted 2026-09-12 — Residential purchase price, €/m², population-weighted from comune to province across the comuni OMI covers. Transaction-range midpoints for "Abitazioni civili" in normal condition, OMI semester 2025H2. Provinces absent from the OMI file are absent here, never zero-filled.
  • Property rent by province (2025H2)Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI), extracted 2026-09-12 — Residential rent, €/m² per month, population-weighted from comune to province across the comuni OMI covers. Transaction-range midpoints for "Abitazioni civili" in normal condition, OMI semester 2025H2. Provinces absent from the OMI file are absent here, never zero-filled.
  • Years of rent to equal the purchase price by province (2025H2)Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI), extracted 2026-09-12 — Purchase €/m² divided by twelve months' rent per m², population-weighted from comune to province across the comuni OMI covers. A ratio between two published OMI prices, not a yield or a payback period: it ignores purchase taxes, IMU, maintenance, financing and vacancy. OMI semester 2025H2. At province grain this is the ratio of the two population-weighted means, not the average of the comuni's own ratios — the two are not the same number, and this one answers "what does the average square meter in this province cost to buy versus rent". Provinces without both a purchase and a rent figure are absent, never estimated.
  • Property purchase price by comune (2025H2)Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI), extracted 2026-09-12 — Residential purchase price, €/m², averaged across that comune's own OMI zones. Transaction-range midpoints for "Abitazioni civili" in normal condition, OMI semester 2025H2. Comuni absent from the OMI file are absent here, never zero-filled.
  • Property rent by comune (2025H2)Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI), extracted 2026-09-12 — Residential rent, €/m² per month, averaged across that comune's own OMI zones. Transaction-range midpoints for "Abitazioni civili" in normal condition, OMI semester 2025H2. Comuni absent from the OMI file are absent here, never zero-filled.
  • Premium for refurbished housing by comune (2025H2)Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI), extracted 2026-09-12 — Mean price of "Abitazioni civili" graded OTTIMO divided by the same comune's NORMALE price, OMI semester 2025H2. 1.3 means excellent-condition housing costs a third more than ordinary housing in that town. Grades are paired within each OMI micro-zone and then averaged, so the comparison is like-for-like rather than across different parts of town. This is the gap between two market prices, NOT the cost of renovating. Comuni where OMI grades no OTTIMO zone are absent, never assumed to be 1.0. SCADENTE is not used: OMI records it for 63 comuni against 2,304 for OTTIMO, too few to publish as national coverage.
  • Detached house purchase price by comune (2025H2)Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI), extracted 2026-09-12 — Purchase price of "Ville e Villini" (OMI's detached-house category) in normal condition, €/m², averaged across a comune's own OMI micro-zones. Every other price layer here describes Abitazioni civili — apartments — so this is a different product, not a variant. Comuni where OMI prices no detached housing are absent, never filled in with the apartment figure. OMI semester 2025H2.
  • House vs apartment price by comune (2025H2)Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI), extracted 2026-09-12 — Detached-house €/m² divided by apartment €/m², paired WITHIN each OMI micro-zone and then averaged — comparing a comune's two means would compare different parts of town, since the categories are not surveyed in the same zones. 1.14 means a house costs 14% more per square meter than a flat in the same zone. Below 1 means the reverse, which is the case in 450 comuni. Comuni without both figures in a shared zone are absent. OMI semester 2025H2.
  • Years of rent to equal the purchase price by comune (2025H2)Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI), extracted 2026-09-12 — Purchase €/m² divided by twelve months' rent per m², averaged across that comune's own OMI zones. A ratio between two published OMI prices, not a yield or a payback period: it ignores purchase taxes, IMU, maintenance, financing and vacancy. OMI semester 2025H2. Comuni without both a purchase and a rent figure are absent, never estimated.
  • Regional IRPEF surcharge (addizionale regionale)MEF — Dipartimento delle Finanze, extracted 2026-09-14 — Regional IRPEF surcharge, scraped live from MEF's per-region rate lookup for tax year 2026. status: draft — see docs/data-sources.md §4.2.
  • IMU rate on non-primary, non-category-D buildings (altri fabbricati)MEF — Dipartimento delle Finanze, Portale del Federalismo Fiscale, extracted 2026-09-14 — IMU, 2025 tax year, parsed from each comune's mandatory structured 'Prospetto aliquote IMU' PDF (no bulk rate file exists for IMU — see docs/data-sources.md §4.2). status: draft.
  • IMU rate on a luxury (cat. A/1, A/8, A/9) primary residenceMEF — Dipartimento delle Finanze, Portale del Federalismo Fiscale, extracted 2026-09-14 — IMU, 2025 tax year, parsed from each comune's mandatory structured 'Prospetto aliquote IMU' PDF (no bulk rate file exists for IMU — see docs/data-sources.md §4.2). status: draft.
  • Municipal IRPEF surcharge (addizionale comunale)MEF — Dipartimento delle Finanze, extracted 2026-09-14 — Municipal IRPEF surcharge, 2025 tax year, from MEF's annual bulk export. status: draft — see docs/data-sources.md §4.2. Covers comuni with a flat rate or a 3-bracket rate matching the current national IRPEF schedule only; comuni with a non-conforming bracket count or no rate shown are absent.
  • Average annual days above 30C (2015-2024)Copernicus Climate Data Store (ERA5-Land), extracted 2026-09-22 — Mean number of days per year with a daily maximum 2m temperature of 30C or more, averaged across 2015-2024 (ten baseline years — a deliberate departure from the WMO's 30-year normal period, given CDS's per-request cost cap; see scripts/etl/era5.py's own docstring). ERA5-Land reanalysis, Copernicus Climate Data Store, daily-maximum statistic, UTC+01:00 day boundary.
  • Average July daily maximum temperature (2015-2024)Copernicus Climate Data Store (ERA5-Land), extracted 2026-09-22 — Mean of July's daily maximum 2m temperature, averaged across 2015-2024. Fixed calendar month (July), not 'the hottest month per comune' - simpler and reproducible; Italy's seasonal cycle doesn't shift enough between comuni to change which month that is. ERA5-Land reanalysis, Copernicus Climate Data Store, daily-maximum statistic, UTC+01:00 day boundary.
  • Average January daily minimum temperature (2015-2024)Copernicus Climate Data Store (ERA5-Land), extracted 2026-09-22 — Mean of January's daily minimum 2m temperature, averaged across 2015-2024. Fixed calendar month (January), same reasoning as the July summer-high layer. ERA5-Land reanalysis, Copernicus Climate Data Store, daily-minimum statistic, UTC+01:00 day boundary.
  • Reported crime rate, by province (2024)ISTAT — crime and public safety, extracted 2026-09-25 — All offense types reported to the police, per 100,000 residents, per province — ISTAT's own crime-rate dataflow (73_67_DF_DCCV_DELITTIPS_9, DATA_TYPE=CRIMET, TYPE_CRIME=TOT), 2024. A higher value means MORE reported crime — this is a negative-direction indicator, the same as the Europe map's OECD intentional-homicide and vehicle-theft layers.
  • Home burglary rate, by province (2024)ISTAT — crime and public safety, extracted 2026-09-25 — Home burglaries ("furti in abitazioni") reported to the police, per 100,000 residents, per province — the same ISTAT dataflow as the overall crime rate (73_67_DF_DCCV_DELITTIPS_9, DATA_TYPE=CRIMET, TYPE_CRIME=BURGTHEF), 2024. Picked as the one offense-specific breakdown most relevant to a relocating homeowner, over the total rate alone. A higher value means MORE reported burglary — a negative-direction indicator, same as the overall crime-rate layer.
  • Air quality: PM10 by province (2024)EEA, extracted 2026-09-25 — Annual mean PM10 concentration (ug/m3), by province — European Environment Agency air-quality e-Reporting data, 'Primary validated data (E1a)' dataset, 2024. Each province's value is the unweighted average of every EEA monitoring station whose nearest comune (by coordinate) falls in that province; a station only counts for a year with at least 274 valid daily observations (75% of the year, the EU Air Quality Directive's own completeness convention). A higher value means WORSE air quality — this is a negative-direction indicator, the same class as the crime/safety layers.
  • Air quality: PM2.5 by province (2024)EEA, extracted 2026-09-25 — Annual mean PM2.5 concentration (ug/m3), by province — European Environment Agency air-quality e-Reporting data, 'Primary validated data (E1a)' dataset, 2024. Each province's value is the unweighted average of every EEA monitoring station whose nearest comune (by coordinate) falls in that province; a station only counts for a year with at least 274 valid daily observations (75% of the year, the EU Air Quality Directive's own completeness convention). A higher value means WORSE air quality — this is a negative-direction indicator, the same class as the crime/safety layers.
  • Healthcare quality: prevention by region (2024)Ministero della Salute, extracted 2026-09-25 — Ministero della Salute's Nuovo Sistema di Garanzia (NSG) CORE-indicator score for collective prevention and public health (vaccination coverage, screening uptake, food/veterinary safety controls), per region, 2024 — the newest year published (approved by the Comitato LEA 14 May 2026). Score 0-100; 60 is the official "sufficiency" threshold below which a region is not considered compliant for this macro-area. A HIGHER score means BETTER assessed care — this is a positive-direction indicator, the opposite direction from this map's crime and air-quality layers.
  • Healthcare quality: community & district care by region (2024)Ministero della Salute, extracted 2026-09-25 — Ministero della Salute's Nuovo Sistema di Garanzia (NSG) CORE-indicator score for territorial/community care (GP and pharmaceutical access, home care, chronic-disease management outside hospital), per region, 2024 — the newest year published (approved by the Comitato LEA 14 May 2026). Score 0-100; 60 is the official "sufficiency" threshold below which a region is not considered compliant for this macro-area. A HIGHER score means BETTER assessed care — this is a positive-direction indicator, the opposite direction from this map's crime and air-quality layers.
  • Healthcare quality: hospital care by region (2024)Ministero della Salute, extracted 2026-09-25 — Ministero della Salute's Nuovo Sistema di Garanzia (NSG) CORE-indicator score for hospital care (surgical appropriateness, post-operative outcomes, C-section rates, stroke mortality), per region, 2024 — the newest year published (approved by the Comitato LEA 14 May 2026). Score 0-100; 60 is the official "sufficiency" threshold below which a region is not considered compliant for this macro-area. A HIGHER score means BETTER assessed care — this is a positive-direction indicator, the opposite direction from this map's crime and air-quality layers.
  • Average annual rainfall (2015-2024)Copernicus Climate Data Store (ERA5-Land), extracted 2026-09-28 — Mean total annual precipitation, averaged across 2015-2024 (same ten-baseline-year departure from the WMO 30-year normal as the temperature layers, for the same CDS cost-cap reason; see scripts/etl/era5.py's own docstring). Built from the raw hourly ERA5-Land dataset (reanalysis-era5-land), not the derived daily-statistics dataset used for temperature above — that derived dataset excludes accumulated variables like precipitation from its own catalog entirely. Each day's total is read directly from the single 00:00 UTC reading on the FOLLOWING calendar day: ERA5-Land resets its accumulated fields at 00 UTC daily (unlike full ERA5, which resets at the 06/18 UTC forecast-run boundaries), so that one timestep already holds the whole day's accumulation — no hour-by-hour de-accumulation is performed. Confirmed against ECMWF's own support forum, checked live 2026-09-28. A 'day' here is a UTC calendar day (00-00 UTC), not the temperature layers' UTC+01:00 local day — immaterial to an annual total, but a real difference from how this file's own temperature layers define a day.
  • Average annual days with measurable rain (2015-2024)Copernicus Climate Data Store (ERA5-Land), extracted 2026-09-28 — Mean number of 'wet days' per year, averaged across 2015-2024 — a wet day is the WMO's own definition (a day with 1.0mm of precipitation or more, WMO-No. 8 Guide to Instruments and Methods of Observation), not a cutoff picked for this site. Same source, method and UTC-day-boundary note as the rainfall-total layer above.
  • Tourism seasonality index (2024)ISTAT — tourist accommodation flow, extracted 2026-09-28 — 1 minus the ratio of the quietest month's tourist-accommodation nights spent (presenze) to the busiest month's, from ISTAT's comune-level monthly occupancy survey, 2024 (the newest year not flagged provisional in the source — 2025's own rows are 100% flagged '(f)'). 0 means visitor nights are spread evenly across the year; a value approaching 1 means almost all of the year's overnight tourist stays happen in a single month. A raw peak/trough ratio was deliberately not used: it is undefined whenever any month records zero presenze, a real and unremarkable outcome for a small seasonal town's quietest month.
  • Peak-month visitors per resident (2024)ISTAT — tourist accommodation flow, extracted 2026-09-28 — The comune's busiest month's tourist-accommodation nights spent (presenze), divided by the number of days in that month, divided by the comune's resident population (comuni.json, most recently published year — one year newer than this metric's own 2024 tourism figures, a real vintage mismatch). Reads as: on an average night in this comune's busiest month, this many overnight tourists are present for every resident — 0.16 means 16 tourists per 100 residents, so the night-time population is 1.16 times the resident one (it is a ratio of visitors to residents, not a multiplier of the population). Registered commercial accommodation only, set against the residents of the whole comune, so a large comune with a small tourist core reads lower than its busiest streets feel. Same source and year-selection reasoning as the seasonality index above.
  • Tourist accommodation bed capacity (2024)ISTAT — tourist accommodation capacity, extracted 2026-09-29 — Total registered tourist-accommodation bed capacity (hotels and similar establishments plus campsites, holiday rentals, agritourism, hostels, B&Bs and other collective accommodation), ISTAT's comune-level capacity survey, 2024. This is installed capacity (how many beds exist), not realized occupancy (see the seasonality-index and peak-visitor-multiplier layers for how full those beds actually get across the year) — a comune can have a large bed capacity that sits mostly empty, or a small one that's booked solid.
  • Tourist beds per resident (2024)ISTAT — tourist accommodation capacity, extracted 2026-09-29 — Total registered tourist-accommodation bed capacity divided by the comune's resident population (comuni.json, most recently published year — one year newer than this metric's own 2024 capacity figures, a real vintage mismatch, same as the peak-visitor-multiplier layer). Reads as: this comune has about this many tourist beds for every resident. The installed-capacity companion to peak-visitor-multiplier's realized-occupancy figure.
  • Hotel share of tourist accommodation (2024)ISTAT — tourist accommodation capacity, extracted 2026-09-29 — Beds in hotels and similar establishments (all star ratings plus residenze turistico alberghiere) as a share of the comune's total registered tourist-accommodation bed capacity, 2024. 0 means every registered bed is non-hotel (campsites, holiday rentals, agritourism, hostels, B&Bs, mountain huts, other); 1 means the comune's entire registered capacity is hotel beds. Answers 'what kind of tourist accommodation exists here', a different question from the total-capacity and beds-per-resident layers' 'how much'. Undefined (excluded, not zeroed) for a comune with zero total beds - there is no capacity to take a share of. One category of the non-hotel residual, 'alloggi in affitto' (holiday rentals), changes definition from 2025 onward to include informal private rentals for the first time (confirmed live in the source file's own footnote) - this metric's 2024 reference year predates that change, so it does not need to account for it, but a future re-run at a later reference year would need to treat 2024-and-earlier and 2025-and-later as two different definitions of 'non-hotel', not one continuous series.
  • Average annual days above 30C (2015-2024)Copernicus Climate Data Store (ERA5-Land), extracted 2026-10-03 — Mean number of days per year with a daily maximum 2m temperature of 30C or more, averaged across 2015-2024 and across every ERA5-Land grid cell inside each NUTS 2 region's own boundary. Same ten-baseline-year window and CDS cost-cap reasoning as the comune-grain layer of the same name — see scripts/etl/era5.py's own docstring.
  • Average July daily maximum temperature (2015-2024)Copernicus Climate Data Store (ERA5-Land), extracted 2026-10-03 — Mean of July's daily maximum 2m temperature, averaged across 2015-2024 and across every ERA5-Land grid cell inside each NUTS 2 region's own boundary. Fixed calendar month (July), same reasoning as the comune-grain layer of the same name.
  • Average January daily minimum temperature (2015-2024)Copernicus Climate Data Store (ERA5-Land), extracted 2026-10-03 — Mean of January's daily minimum 2m temperature, averaged across 2015-2024 and across every ERA5-Land grid cell inside each NUTS 2 region's own boundary. Fixed calendar month (January), same reasoning as the comune-grain layer of the same name.
  • Population, by NUTS 3 region (2023)Eurostat, extracted 2026-10-03 — Total resident population per NUTS 3 region (province-equivalent), Eurostat's own demo_r_pjanaggr3 dataset, 2023 — the newest year whose only gap is the UK (absent since 2020; its last real value predates this file's vintage), not a further reporting-lag gap on top of that. Albania is present for every one of its 12 NUTS 3 units. Boundaries: github.com/eurostat/Nuts2json, 2021 typology.
  • Life expectancy at birth, by NUTS 2 region (2023)Eurostat, extracted 2026-10-03 — Life expectancy at birth (age Y_LT1, both sexes) per NUTS 2 region (roughly region-equivalent), Eurostat's own demo_r_mlifexp dataset, 2023 — chosen for the best numeric coverage of any year in 2019-2024 after 2019 itself, which is seven years stale. Boundaries: github.com/eurostat/Nuts2json, 2021 typology.
  • GDP per capita, by NUTS 3 region (2023)Eurostat, extracted 2026-10-03 — GDP per inhabitant in current-price euros (not purchasing-power-adjusted — a PPS-per-capita figure would rank differently, since a euro buys more in Albania than in Ireland), per NUTS 3 region (province-equivalent), Eurostat's own nama_10r_3gdp dataset, 2023, the newest year with Italy (2024 has none; year reviewed 2026-10-03). Boundaries: github.com/eurostat/Nuts2json, 2021 typology. A handful of regions (Ireland's IE053 and IE061, small German districts) are genuine multinational-tax-accounting outliers, not local prosperity — the map's color scale excludes them from setting its range without excluding them from the map (see components/EuropeMapExplorer.tsx's computeDomain()).
  • Unemployment rate, by NUTS 2 region (2025)Eurostat, extracted 2026-10-03 — Unemployment rate (ages 15-74, both sexes, all education levels) per NUTS 2 region (roughly region-equivalent), Eurostat's own lfst_r_lfu3rt dataset, 2025 — the newest year available, unlike this map's other layers: unemployment's only coverage gap (the UK, plus three small perennially-unreported regions) opened in 2020 and hasn't widened since, so there's no recency/coverage tradeoff to weigh here. Boundaries: github.com/eurostat/Nuts2json, 2021 typology. A handful of regions with genuinely extreme unemployment (Spain's Ceuta and Melilla, both above 24%) sit far enough above the rest of Europe's distribution that the map's color scale saturates them at its darkest step rather than let two outliers compress everyone else's real variation — their exact figures still show on click.
  • At-risk-of-poverty rate, by NUTS 2 region (2024)Eurostat, extracted 2026-10-03 — Share of population with disposable income below 60% of the national median, per NUTS 2 region (roughly region-equivalent), Eurostat's own ilc_li41 dataset (2024) — the specific NUTS 2 member of the ilc_* family this map's build spec flagged as needing a series picked first; ilc_li02 is the related national-only cross-tab, not used here. Coverage for this dataset rises then falls over time; the year was last reviewed on 2026-10-03, when 2024 replaced 2022 (2025 has fewer regions). Boundaries: github.com/eurostat/Nuts2json, 2021 typology.
  • Housing cost overburden rate, by NUTS 2 region (2024)Eurostat, extracted 2026-10-03 — Share of population living in a household where total housing costs exceed 40% of disposable income, per NUTS 2 region (roughly region-equivalent), Eurostat's own ilc_lvho07_r dataset (2024) — found by searching Eurostat's own dataset catalog for "housing cost overburden", not by guessing at ilc_lvho07* code variants (several guesses 404'd). This dataset's own series only starts in 2021; the year was last reviewed on 2026-10-03, when 2024 replaced 2022 (2025 has fewer regions). Boundaries: github.com/eurostat/Nuts2json, 2021 typology.
  • Intentional homicide rate, by NUTS 3 region (2023)OECD, extracted 2026-10-03 — Intentional homicides per 100,000 population, per NUTS 3 region (province-equivalent), OECD's own Regional Statistics database (DSD_REG_SOC@DF_SAFETY, MEASURE=HOMIC), 2023 — the newest year with complete coverage for this map's focus countries before a later reporting-lag drop. Boundaries: github.com/eurostat/Nuts2json, 2021 typology, reused from scripts/etl/eurostat.py rather than re-fetched — OECD's own REF_AREA codes are the same NUTS codes Eurostat uses for EU/EFTA countries (confirmed: all 107 Italian NUTS 3 codes match exactly).
  • Active physicians per 1,000 population, by NUTS 2 region (2023)OECD, extracted 2026-10-03 — Active physicians per 1,000 population, per NUTS 2 region (region-equivalent), OECD's own Regional Statistics database (DSD_REG_HEALTH@DF_CARE, MEASURE=DOC, UNIT_MEASURE=10P3HB), 2023 — the newest year with stable coverage across Italy and this map's other 'Italy vs elsewhere' focus countries (Spain, France, Portugal, Greece) before Italy drops out entirely in 2024. Boundaries: github.com/eurostat/Nuts2json, 2021 typology, reused from scripts/etl/eurostat.py rather than re-fetched — confirmed again for this dataflow: all 21 Italian NUTS 2 codes match exactly. A capital-region concentration is visible in the shipped values (Athens, Prague and Bucharest's regions are the top three) — physicians typically register at the hospital or clinic they practise at, which clusters in capitals, regardless of where their patients actually live; a known feature of this kind of registration data, not a data error.
  • Vehicle theft rate, by NUTS 3 region (2023)OECD, extracted 2026-10-03 — Vehicle thefts per 100,000 population, per NUTS 3 region (province-equivalent), OECD's own Regional Statistics database (DSD_REG_SOC@DF_SAFETY, MEASURE=VEH_THEFT — the same dataflow as intentional homicide rate, a second real measure from its shared table), 2023 — the newest year before a 2024 reporting-lag drop. A genuinely long-tailed rate, the same shape as homicide: this map's existing IQR-fence color scale (computeDomain(), applied to every non-'count' unit) handles it without new code.
  • Foreign-born population share, by NUTS 2 region (2019)OECD, extracted 2026-10-03 — Foreign-born population as a share of the working-age (15-64) population, per NUTS 2 region, OECD's Regional Statistics database (DSD_REG_MIGRANT@DF_MIGR_STOCK, MEASURE=POP, ORIGIN=FB, UNIT_MEASURE=PT_POP_SUB), 2019 — the newest year before the series stops entirely in 2020. Distinct from every Italy-map citizenship/residency layer here: those count foreign CITIZENS registered in Italy specifically; this counts people born abroad, OECD-wide, the survey-based definition rather than a population-registry one.
  • Old-age dependency ratio, by NUTS 3 region (2022)OECD, extracted 2026-10-03 — People aged 65+ as a percentage of the working-age (15-64) population, per NUTS 3 region (province-equivalent), OECD's Regional Statistics database (DSD_REG_DEMO@DF_DEPEND, MEASURE=DEPEND_RATIO, AGE=Y_GE65, UNIT_MEASURE=PT_POP_Y15T64), 2022 — the newest year before a 2023 coverage drop, and the finest grain of any layer in this batch (NUTS 3, matching homicide and vehicle theft rather than the NUTS 2 layers). A structurally different signal from every existing age layer: the Italy map's median-age and indice-di-vecchiaia layers describe a comune's age profile directly; this describes the working-age population's support burden, the figure that actually predicts strain on local services.
  • Rooms per person, by NUTS 2 region (2021)OECD, extracted 2026-10-03 — Average number of rooms per person in the housing stock, per NUTS 2 region, OECD's Regional Statistics database (DSD_REG_SOC@DF_HOUSING, MEASURE=ROOMS, UNIT_MEASURE=RO_PS), 2021 — the newest year before a real coverage drop (not gradual reporting lag). A housing-space signal distinct from every OMI price layer on the Italy map and from Eurostat's cost-based housing-overburden layer here: this is about physical space per resident, not price.
  • Disposable household income per capita, by NUTS 2 region (2021)OECD, extracted 2026-10-03 — Net disposable household income per capita, purchasing-power-parity-adjusted US dollars, per NUTS 2 region, OECD's Regional Statistics database (DSD_REG_ECO@DF_INC, MEASURE=B6N, PRICES=V, UNIT_MEASURE=USD_PPP_PS), 2021 — the newest year before a real coverage drop. Deliberately not GDP per capita: GDP is production-based and can be skewed by corporate activity concentrated in a region (this map's own GDP layer documents Ireland's and Luxembourg's tax-accounting outliers for exactly this reason); disposable income is what households actually have after taxes and transfers, the more relevant figure for 'what does a euro/dollar of income here actually buy a resident.'
  • Tertiary education attainment, by NUTS 2 region (2024)OECD, extracted 2026-10-03 — Share of the population aged 25-64 whose highest completed education is tertiary (ISCED 2011 levels 5-8), per NUTS 2 region, OECD's Regional Statistics database (DSD_REG_EDU@DF_ATTAIN, MEASURE=NEAC_SHARE_EA, STATISTICAL_OPERATION=MEAN), 2024 — stable coverage 2022-2024, the newest year in that window.
  • 7% pensioner regime — qualifying comuniExpat Living Italy — rule applied to ISTAT population, extracted 2026-10-03 — Comuni admitted by the 7% pensioner regime. Routes covered: Anywhere in eight southern regions (2,424 comuni); The 2016–17 Central Italy seismic crater (133 comuni); Comuni affected by the 6 April 2009 L'Aquila earthquake (56 comuni). The population threshold is 30,000 residents. Derived by applying the rule to the resident population in this site's comune spine — not a hand-maintained list — so a comune crossing the threshold leaves on the next run. Shaded by population. Personal eligibility depends on criteria no map can check.
  • 7% pensioner regime — population share by provinceExpat Living Italy — rule applied to ISTAT population, extracted 2026-10-03 — Share of each province's ISTAT resident population living in a comune that qualifies for the 7% pensioner regime (see the regime-7-percent-pensioners layer for which comuni and by which route). Computed by summing the population of qualifying comuni within each province and dividing by the province's total population, from this site's comune spine — not a second measurement, a rollup of the comune-grain layer to the grain BES Salute publishes at, so the two can sit on the same page. A province with no qualifying comuni shows a real 0%, not a missing value.
  • Foreign-born share of the working-age population, by NUTS 2 region (2025)Eurostat, extracted 2026-10-15 — Share of the population aged 15-64 in private households who were born abroad (Eurostat c_birth=FOR, which combines other-EU and non-EU birthplaces) divided by the same population in total (c_birth=TOTAL), per NUTS 2 region, Eurostat's lfst_r_lfsd2pwc, 2025. It comes from the EU Labour Force Survey — a sample survey, not a register — so the figures carry sampling error. The 15 regions Eurostat flags as low reliability are left out rather than shown as clean numbers. Birthplace, not citizenship: it includes foreign-born people who hold the local citizenship, unlike this site's ISTAT foreign-resident layers. Do not compare with the OECD foreign-born layer (2019): different survey weighting, so a joined series would invent a trend. Boundaries: github.com/eurostat/Nuts2json, 2021 typology. Every region of ES, FR carries Eurostat's "definition differs" flag for this dataset, so its shares are not strictly like-for-like with the other countries'; they are shown, not hidden, because both are on this site's comparison shortlist.
  • Seismic hazard class, by comune (2025)Dipartimento della Protezione Civile — seismic classification, extracted 2026-10-15 — The regulatory seismic zone of each comune from the Dipartimento della Protezione Civile's national table, updated to 31 May 2025, restated as a HAZARD CLASS: class 4 is the official zona 1 (highest hazard), class 3 is zona 2, class 2 is zona 3 and class 1 is zona 4 (lowest). The numbering is turned around only so that a bigger number is a higher hazard, as on every other map layer; the official zone number is shown on each place's page. Each Region (and the autonomous Provinces of Trento and Bolzano) classifies its own comuni by its own act, so the table is a mosaic of those acts. Regional sub-zones (Lazio 2A/2B/3A/3B, Basilicata 1a-3b, Piemonte 3S) are counted in their national zone. This is a legal classification used for planning and for the control of building works — not a forecast of earthquakes and not an assessment of any building. Since the 2018 building code (NTC 2018) the design load of a new building comes from site-specific hazard, not from the zone. Before buying, have the specific building checked by a qualified engineer. Credit: Fonte: Dipartimento della Protezione Civile-Presidenza del Consiglio dei Ministri (CC BY 4.0).
  • Fibre to the home (FTTH) availability, by comune (Q3 2026)AGCOM — Broadband Map (fixed network), extracted 2026-10-16 — The share of a comune's locations where fibre to the home (FTTH) is available, from AGCOM's Broadband Map of the fixed network, edition Q3 2026 (network data as of 5 October 2026). AGCOM maps the fixed network on a grid of 20 m by 20 m cells, and a cell exists only where the network reaches a building; each cell records the best technology available there. This layer counts the cells whose best technology is FTTH and divides by all of the comune's cells. It is a share of LOCATIONS, not of households or people: an apartment block and a farmhouse each count once. A building with no fixed line at all (served only by fixed wireless, mobile or satellite) has no cell and is left out of both counts. 'Available' means the network reaches the location, not that anyone there subscribes. Cells on a comune's border are counted in both comuni. Higher is better. Credit: BroadbandMap di Agcom - Autorità per le garanzie nelle comunicazioni è distribuito con Licenza Creative Commons Attribuzione 4.0 Internazionale (CC BY 4.0), https://geo3.agcom.it/opendata.
  • Drive time to the nearest hospital with inpatient beds, by comune (minutes)Ministero della Salute — hospital beds (roads: OpenStreetMap contributors), extracted 2026-10-22 — Minutes by road from the main town of the comune to the nearest HOSPITAL WITH INPATIENT BEDS: a site the Ministero della Salute's 2023 bed census (Posti letto per stabilimento ospedaliero e disciplina) lists with ordinary or paying inpatient beds in at least one acute (ACUTI) discipline. That is not necessarily a hospital with an emergency department; the emergency-department layer, from OpenStreetMap, is shown beside it. Public hospitals and private accredited clinics are both in the Ministry list; a clinic can be a single specialty. Measured by road from the main town of the comune: the OpenStreetMap place point (city, town or village) named like the comune, or like its first-named part when it is named for several places, nearest the comune's geographic center when there are several. 287 comuni have no such point and are measured from the geographic center of the comune instead (flagged in data/distance/nearest-comune-2026.json). Free-flow speeds, no traffic, no stops, no ferries, and no unpaved roads, over OpenStreetMap roads (Geofabrik extract of 20 October 2026, routed with Valhalla). It is an approximation: the point is not your address, and a winter closure or a queue changes a real trip. A village reachable only by cable car or a track has no figure. Lower is closer. Credit: Dati Ministero della Salute (Open Data portal, dati.salute.gov.it); site positions and roads © OpenStreetMap contributors (ODbL), and this derived file is shared under the same license.
  • Drive time to the nearest airport with passenger traffic, by comune (minutes)ENAC — airport traffic (positions: OurAirports; roads: OpenStreetMap contributors), extracted 2026-10-22 — Minutes by road from the main town of the comune to the nearest AIRPORT where ENAC recorded at least 4,000 passengers in 2025 (Dati di traffico 2025, table APT 1, scheduled and charter, arrivals plus departures); this leaves out two airports that carried almost none (Taranto-Grottaglie, Brescia-Montichiari). Each airport's passenger count is in data/distance/destinations.json. It says nothing about flights, routes or schedules. Measured by road from the main town of the comune: the OpenStreetMap place point (city, town or village) named like the comune, or like its first-named part when it is named for several places, nearest the comune's geographic center when there are several. 287 comuni have no such point and are measured from the geographic center of the comune instead (flagged in data/distance/nearest-comune-2026.json). Free-flow speeds, no traffic, no stops, no ferries, and no unpaved roads, over OpenStreetMap roads (Geofabrik extract of 20 October 2026, routed with Valhalla). It is an approximation: the point is not your address, and a winter closure or a queue changes a real trip. A village reachable only by cable car or a track has no figure. Lower is closer. Credit: ENAC, Dati di traffico 2025; airport positions from OurAirports (public domain); roads © OpenStreetMap contributors (ODbL), and this derived file is shared under the same license.
  • Drive time to the nearest supermarket (OpenStreetMap), by comune (minutes)OpenStreetMap contributors — supermarkets (roads: OpenStreetMap contributors), extracted 2026-10-27 — Minutes by road from the main town of the comune to the nearest SUPERMARKET as OpenStreetMap volunteers have mapped it (shop=supermarket). There is no official national list of supermarkets, so this is volunteer mapping: a store that is missing from the map is missing here, and a town can look farther from food shopping than it is. Small grocers and corner shops (shop=convenience) are not counted: in Italy that tag covers newsagents and minimarkets as well as the village grocery and is used unevenly, so mixing it in would make 'supermarket' mean very different things in different regions. A village with a local alimentari but no supermarket therefore shows a longer time than its real food shopping. Supermarkets per 10,000 residents by region, to show where the mapping is thin, are in data/distance/destinations.json. Measured by road from the main town of the comune: the OpenStreetMap place point (city, town or village) named like the comune, or like its first-named part when it is named for several places, nearest the comune's geographic center when there are several. 287 comuni have no such point and are measured from the geographic center of the comune instead (flagged in data/distance/nearest-comune-2026.json). Free-flow speeds, no traffic, no stops, no ferries, and no unpaved roads, over OpenStreetMap roads (Geofabrik extract of 22 October 2026, routed with Valhalla). It is an approximation: the point is not your address, and a winter closure or a queue changes a real trip. A village reachable only by cable car or a track has no figure. Lower is closer. Credit: © OpenStreetMap contributors (ODbL); this derived file is shared under the same license.
  • Drive time to the nearest pharmacy, by comune (minutes)Ministero della Salute — pharmacies (roads: OpenStreetMap contributors), extracted 2026-10-27 — Minutes by road from the main town of the comune to the nearest PHARMACY in the Ministero della Salute's open register of pharmacies (Open Data Farmacie), keeping the rows that have no end date, which are open today. Ordinary pharmacies and branch pharmacies (succursali) count; dispensari, the small outposts with limited hours, and seasonal dispensari do not. It says nothing about opening hours, night or Sunday duty (turni), or whether a given pharmacy has what you need. Measured by road from the main town of the comune: the OpenStreetMap place point (city, town or village) named like the comune, or like its first-named part when it is named for several places, nearest the comune's geographic center when there are several. 287 comuni have no such point and are measured from the geographic center of the comune instead (flagged in data/distance/nearest-comune-2026.json). Free-flow speeds, no traffic, no stops, no ferries, and no unpaved roads, over OpenStreetMap roads (Geofabrik extract of 22 October 2026, routed with Valhalla). It is an approximation: the point is not your address, and a winter closure or a queue changes a real trip. A village reachable only by cable car or a track has no figure. Lower is closer. Credit: Dati Ministero della Salute (Open Data portal, dati.salute.gov.it, IODL 2.0); pharmacy positions are the Ministry's where it gives a usable point, otherwise from OpenStreetMap, © OpenStreetMap contributors (ODbL); roads © OpenStreetMap contributors, and this derived file is shared under the same license.
  • Drive time to the nearest railway station with passenger service (OpenStreetMap), by comune (minutes)OpenStreetMap contributors — railway stations with passenger service, extracted 2026-10-27 — Minutes by road from the main town of the comune to the nearest RAILWAY STATION WITH PASSENGER SERVICE, from OpenStreetMap (railway=station or halt). RFI publishes no national open list of its stations, so this is volunteer mapping. Left out: metro, light-rail, tram, funicular and monorail stations, stop positions, features tagged disused or abandoned, train=no or passenger=no, freight, and heritage or tourist railways. A station here has a platform and is mapped as one; the layer does not know whether trains still stop there, how often, or where they go. Measured by road from the main town of the comune: the OpenStreetMap place point (city, town or village) named like the comune, or like its first-named part when it is named for several places, nearest the comune's geographic center when there are several. 287 comuni have no such point and are measured from the geographic center of the comune instead (flagged in data/distance/nearest-comune-2026.json). Free-flow speeds, no traffic, no stops, no ferries, and no unpaved roads, over OpenStreetMap roads (Geofabrik extract of 22 October 2026, routed with Valhalla). It is an approximation: the point is not your address, and a winter closure or a queue changes a real trip. A village reachable only by cable car or a track has no figure. Lower is closer. Credit: © OpenStreetMap contributors (ODbL); this derived file is shared under the same license.
  • Drive time to the nearest emergency department, by comune (minutes)Ministero della Salute — hospital emergency network 2025 (roads: OpenStreetMap contributors), extracted 2026-10-27 — Minutes by road from the main town of the comune to the nearest EMERGENCY DEPARTMENT: a hospital the Ministero della Salute lists in its emergency network (Elenco strutture della rete dell'emergenza ospedaliera, sites active at 31 December 2025) as DEA level II, DEA level I or Pronto Soccorso. A Pronto Soccorso is not the same as a DEA: a DEA (Dipartimento di Emergenza-Urgenza e Accettazione) of level I or II is a larger emergency department with more specialties on site, while a Pronto Soccorso takes the first-line emergencies and may send the most serious cases on. The nearest site's level, and whether it has a pediatric Pronto Soccorso, is kept in data/distance/destinations.json and shown on the comune page; the minutes are to the nearest of any of the three. The Ministry lists sites by hospital, not by service hours, so a seasonal or reduced-hours site counts like any other, and it is not a service guarantee: confirm with the local health authority (ASL/ULSS/ASST). Measured by road from the main town of the comune: the OpenStreetMap place point (city, town or village) named like the comune, or like its first-named part when it is named for several places, nearest the comune's geographic center when there are several. 285 comuni have no such point and are measured from the geographic center of the comune instead (flagged in data/distance/nearest-comune-2026.json). Free-flow speeds, no traffic, no stops, no ferries, and no unpaved roads, over OpenStreetMap roads (Geofabrik extract of 25 October 2026, routed with Valhalla). It is an approximation: the point is not your address, and a winter closure or a queue changes a real trip. A village reachable only by cable car or a track has no figure. Lower is closer. Credit: Dati Ministero della Salute (Elenco strutture della rete dell'emergenza ospedaliera, sites active at 31 December 2025); site positions and roads © OpenStreetMap contributors (ODbL), and this derived file is shared under the same license.
  • Drive time to the nearest DEA (level I or II) emergency department, by comune (minutes)Ministero della Salute — hospital emergency network 2025 (roads: OpenStreetMap contributors), extracted 2026-10-27 — Minutes by road from the main town of the comune to the nearest DEA: a hospital the Ministero della Salute lists in its emergency network (Elenco strutture della rete dell'emergenza ospedaliera, sites active at 31 December 2025) as DEA level II or DEA level I. A Pronto Soccorso does not count here (the companion layer, nearest emergency department, counts it). A DEA (Dipartimento di Emergenza-Urgenza e Accettazione) is a larger emergency department with more specialties on site; level II adds the most complex care (for example neurosurgery, cardiac surgery, major trauma). The minutes are to the nearest of either level; the site's level is kept in data/distance/destinations.json and shown on the comune page. The Ministry lists sites by hospital, not by service hours, so a seasonal or reduced-hours site counts like any other, and it is not a service guarantee: confirm with the local health authority (ASL/ULSS/ASST). Measured by road from the main town of the comune: the OpenStreetMap place point (city, town or village) named like the comune, or like its first-named part when it is named for several places, nearest the comune's geographic center when there are several. 285 comuni have no such point and are measured from the geographic center of the comune instead (flagged in data/distance/nearest-comune-2026.json). Free-flow speeds, no traffic, no stops, no ferries, and no unpaved roads, over OpenStreetMap roads (Geofabrik extract of 25 October 2026, routed with Valhalla). It is an approximation: the point is not your address, and a winter closure or a queue changes a real trip. A village reachable only by cable car or a track has no figure. Lower is closer. Credit: Dati Ministero della Salute (Elenco strutture della rete dell'emergenza ospedaliera, sites active at 31 December 2025); site positions and roads © OpenStreetMap contributors (ODbL), and this derived file is shared under the same license.

Datasets held

All the published files below are also mirrored, with licences and a changelog, in a public repository on GitHub, refreshed weekly from this site. The site stays the source of truth.

  • 7% pensioner regime (2019) — count, 2,535 comuni. download JSON · CSV
  • Active physicians per 1,000 population, by NUTS 2 region (2023) (2023) — per_1000, 198 NUTS 2 regions. download JSON · CSV
  • Air quality: PM10 by province (2024) (2024) — ug_m3, 89 province. download JSON · CSV
  • Air quality: PM2.5 by province (2024) (2024) — ug_m3, 85 province. download JSON · CSV
  • At-risk-of-poverty rate, by NUTS 2 region (2024) (2024) — percent, 255 NUTS 2 regions. download JSON · CSV
  • Average annual days above 30C (2015-2024) (2024) — days_per_year, 7,892 comuni. download JSON · CSV
  • Average annual days above 30C (2015-2024) (2024) — days_per_year, 335 NUTS 2 regions. download JSON · CSV
  • Average annual days with measurable rain (2015-2024) (2024) — days_per_year, 7,892 comuni. download JSON · CSV
  • Average annual rainfall (2015-2024) (2024) — mm_per_year, 7,892 comuni. download JSON · CSV
  • Average January daily minimum temperature (2015-2024) (2024) — celsius, 7,892 comuni. download JSON · CSV
  • Average January daily minimum temperature (2015-2024) (2024) — celsius, 335 NUTS 2 regions. download JSON · CSV
  • Average July daily maximum temperature (2015-2024) (2024) — celsius, 7,892 comuni. download JSON · CSV
  • Average July daily maximum temperature (2015-2024) (2024) — celsius, 335 NUTS 2 regions. download JSON · CSV
  • Change in foreign share (2019–2025) (2025) — pct_point_change, 7,829 comuni. download JSON · CSV
  • Citizenship acquisitions (2024) (2024) — count, 100 province. download JSON · CSV
  • Detached house purchase price by comune (2025H2) (2025) — eur_per_m2, 6,333 comuni. download JSON · CSV
  • Disposable household income per capita, by NUTS 2 region (2021) (2021) — usd_ppp_per_capita, 205 NUTS 2 regions. download JSON · CSV
  • Drive time to the nearest airport with passenger traffic, by comune (minutes) (2026) — minutes_by_road, 7,868 comuni. download JSON · CSV
  • Drive time to the nearest DEA (level I or II) emergency department, by comune (minutes) (2026) — minutes_by_road, 7,859 comuni. download JSON · CSV
  • Drive time to the nearest emergency department, by comune (minutes) (2026) — minutes_by_road, 7,878 comuni. download JSON · CSV
  • Drive time to the nearest hospital with inpatient beds, by comune (minutes) (2026) — minutes_by_road, 7,878 comuni. download JSON · CSV
  • Drive time to the nearest pharmacy, by comune (minutes) (2026) — minutes_by_road, 7,890 comuni. download JSON · CSV
  • Drive time to the nearest railway station with passenger service (OpenStreetMap), by comune (minutes) (2026) — minutes_by_road, 7,859 comuni. download JSON · CSV
  • Drive time to the nearest supermarket (OpenStreetMap), by comune (minutes) (2026) — minutes_by_road, 7,887 comuni. download JSON · CSV
  • Fibre to the home (FTTH) availability, by comune (Q3 2026) (2026) — percent, 7,881 comuni. download JSON · CSV
  • Foreign residents by citizenship (2025) — count, 7,848 comuni. download JSON · CSV
  • Foreign residents, all citizenships (2025) — count, 7,874 comuni. download JSON · CSV
  • Foreign-born population share, by NUTS 2 region (2019) (2019) — percent, 176 NUTS 2 regions. download JSON · CSV
  • Foreign-born share of the working-age population, by NUTS 2 region (2025) (2025) — percent, 258 NUTS 2 regions. download JSON · CSV
  • GDP per capita, by NUTS 3 region (2023) (2023) — eur_per_capita, 1,244 NUTS 3 regions. download JSON · CSV
  • Healthcare quality: community & district care by region (2024) (2024) — points, 19 regions. download JSON · CSV
  • Healthcare quality: hospital care by region (2024) (2024) — points, 19 regions. download JSON · CSV
  • Healthcare quality: prevention by region (2024) (2024) — points, 19 regions. download JSON · CSV
  • Home burglary rate by province (2024) (2024) — per_100k, 106 province. download JSON · CSV
  • Hotel share of tourist accommodation (2024) (2024) — share_0_1, 6,676 comuni. download JSON · CSV
  • House vs apartment price by comune (2025H2) (2025) — multiple, 6,064 comuni. download JSON · CSV
  • Housing cost overburden rate, by NUTS 2 region (2024) (2024) — percent, 212 NUTS 2 regions. download JSON · CSV
  • Indice di vecchiaia (2019) (2019) — index, 7,892 comuni. download JSON · CSV
  • Intentional homicide rate, by NUTS 3 region (2023) (2023) — per_100k, 1,242 NUTS 3 regions. download JSON · CSV
  • Life expectancy at birth, by NUTS 2 region (2023) (2023) — years, 284 NUTS 2 regions. download JSON · CSV
  • Median age (2019) (2019) — years, 7,893 comuni. download JSON · CSV
  • Median age and indice di vecchiaia (2019) (2019) — years_and_ratio, 7,893 comuni. download JSON · CSV
  • New foreign registrations from abroad (2025) — count, 7,894 comuni. download JSON · CSV
  • Old-age dependency ratio, by NUTS 3 region (2022) (2022) — percent, 1,403 NUTS 3 regions. download JSON · CSV
  • Peak-month visitors per resident (2024) (2024) — ratio_to_population, 2,402 comuni. download JSON · CSV
  • Population change (2019–2025) (2025) — pct_change, 7,893 comuni. download JSON · CSV
  • Population living in a comune eligible for the 7% pensioner regime (2019) — percent, 110 province. download JSON · CSV
  • Population, by NUTS 3 region (2023) (2023) — count, 1,347 NUTS 3 regions. download JSON · CSV
  • Premium for refurbished housing by comune (2025H2) (2025) — multiple, 2,131 comuni. download JSON · CSV
  • Property purchase price by comune (2025H2) (2025) — eur_per_m2, 7,596 comuni. download JSON · CSV
  • Property purchase price by province (2025H2) (2025) — eur_per_m2, 110 province. download JSON · CSV
  • Property rent by comune (2025H2) (2025) — eur_per_m2_month, 7,099 comuni. download JSON · CSV
  • Property rent by province (2025H2) (2025) — eur_per_m2_month, 110 province. download JSON · CSV
  • Reported crime rate by province (2024) (2024) — per_100k, 106 province. download JSON · CSV
  • Residents by country-of-birth group (2024) — count, 7,894 comuni. download JSON · CSV
  • Rooms per person, by NUTS 2 region (2021) (2021) — rooms_per_person, 208 NUTS 2 regions. download JSON · CSV
  • Seismic hazard class, by comune (2025) (2025) — hazard class, 1 lowest to 4 highest, 7,891 comuni. download JSON · CSV
  • Tertiary education attainment, by NUTS 2 region (2024) (2024) — percent, 211 NUTS 2 regions. download JSON · CSV
  • Tourism seasonality index (2024) (2024) — index_0_1, 2,402 comuni. download JSON · CSV
  • Tourist accommodation bed capacity (2024) (2024) — beds, 7,513 comuni. download JSON · CSV
  • Tourist beds per resident (2024) (2024) — beds_per_resident, 7,513 comuni. download JSON · CSV
  • Unemployment rate, by NUTS 2 region (2025) (2025) — percent, 280 NUTS 2 regions. download JSON · CSV
  • Vehicle theft rate, by NUTS 3 region (2023) (2023) — per_100k, 1,259 NUTS 3 regions. download JSON · CSV
  • Well-being (BES) (2024) — percentile, 106 province. download JSON · CSV
  • Years of rent to equal the purchase price by comune (2025H2) (2025) — years, 7,099 comuni. download JSON · CSV
  • Years of rent to equal the purchase price by province (2025H2) (2025) — years, 110 province. download JSON · CSV
  • comuni.json — the comune spine. centroids GeoJSON.
  • BES (Benessere Equo e Sostenibile) territorial well-being — a curated 15-indicator subset, 107 province. indicators.json, provinces.json, values.json.
  • OMI residential prices — purchase and rent €/m², population-weighted to province, 106 of 107 provinces. provinces.json.

How current each dataset is

Two different questions, and the answers often disagree. Describes is the period the data covers — the one that decides whether a number is any use to you. Last checked is when we went and got it. A dataset fetched this month can describe 2018, and one of ours does.

DatasetDescribesLast checkedStatus
Foreign-born population share, by NUTS 2 region (2019)
OECD
20192026-10-03Stale
Indice di vecchiaia (2019)
ISTAT
20192026-10-13Frozen upstream
Median age (2019)
ISTAT
20192026-10-13Frozen upstream
Median age and indice di vecchiaia (2019)
ISTAT
20192026-10-13Frozen upstream
Disposable household income per capita, by NUTS 2 region (2021)
OECD
20212026-10-03Stale
Rooms per person, by NUTS 2 region (2021)
OECD
20212026-10-03Stale
Old-age dependency ratio, by NUTS 3 region (2022)
OECD
20222026-10-03Stale
Active physicians per 1,000 population, by NUTS 2 region (2023)
OECD
20232026-10-03Stale
GDP per capita, by NUTS 3 region (2023)
Eurostat
20232026-10-03Stale
Intentional homicide rate, by NUTS 3 region (2023)
OECD
20232026-10-03Stale
Life expectancy at birth, by NUTS 2 region (2023)
Eurostat
20232026-10-03Stale
Population, by NUTS 3 region (2023)
Eurostat
20232026-10-03Stale
Vehicle theft rate, by NUTS 3 region (2023)
OECD
20232026-10-03Stale
Air quality: PM10 by province (2024)
EEA
20242026-09-25Ageing
Air quality: PM2.5 by province (2024)
EEA
20242026-09-25Ageing
At-risk-of-poverty rate, by NUTS 2 region (2024)
Eurostat
20242026-10-03Ageing
Average annual days above 30C (2015-2024)
Copernicus Climate Data Store (ERA5-Land)
20242026-09-22Ageing
Average annual days above 30C (2015-2024)
Copernicus Climate Data Store (ERA5-Land)
20242026-10-03Ageing
Average annual days with measurable rain (2015-2024)
Copernicus Climate Data Store (ERA5-Land)
20242026-09-28Ageing
Average annual rainfall (2015-2024)
Copernicus Climate Data Store (ERA5-Land)
20242026-09-28Ageing
Average January daily minimum temperature (2015-2024)
Copernicus Climate Data Store (ERA5-Land)
20242026-09-22Ageing
Average January daily minimum temperature (2015-2024)
Copernicus Climate Data Store (ERA5-Land)
20242026-10-03Ageing
Average July daily maximum temperature (2015-2024)
Copernicus Climate Data Store (ERA5-Land)
20242026-09-22Ageing
Average July daily maximum temperature (2015-2024)
Copernicus Climate Data Store (ERA5-Land)
20242026-10-03Ageing
Citizenship acquisitions (2024)
ISTAT
20242026-10-13Ageing
Healthcare quality: community & district care by region (2024)
Ministero della Salute
20242026-09-25Ageing
Healthcare quality: hospital care by region (2024)
Ministero della Salute
20242026-09-25Ageing
Healthcare quality: prevention by region (2024)
Ministero della Salute
20242026-09-25Ageing
Home burglary rate, by province (2024)
ISTAT — crime and public safety
20242026-09-25Ageing
Hotel share of tourist accommodation (2024)
ISTAT — tourist accommodation capacity
20242026-09-29Ageing
Housing cost overburden rate, by NUTS 2 region (2024)
Eurostat
20242026-10-03Ageing
Peak-month visitors per resident (2024)
ISTAT — tourist accommodation flow
20242026-09-28Ageing
Reported crime rate, by province (2024)
ISTAT — crime and public safety
20242026-09-25Ageing
Residents by country-of-birth group
ISTAT
20242026-10-13Ageing
Tertiary education attainment, by NUTS 2 region (2024)
OECD
20242026-10-03Ageing
Tourism seasonality index (2024)
ISTAT — tourist accommodation flow
20242026-09-28Ageing
Tourist accommodation bed capacity (2024)
ISTAT — tourist accommodation capacity
20242026-09-29Ageing
Tourist beds per resident (2024)
ISTAT — tourist accommodation capacity
20242026-09-29Ageing
Well-being (BES) — map layer
ISTAT
20242026-08-19Ageing
BES (Benessere Equo e Sostenibile) dei territori
ISTAT
20252026-08-09Current
Change in foreign share (2019–2025)
ISTAT
20252026-10-13Current
Detached house purchase price by comune (2025H2)
Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI)
2025 H22026-09-12Current
Foreign residents by citizenship
ISTAT
20252026-10-13Current
Foreign residents, all citizenships
ISTAT
20252026-10-13Current
Foreign-born share of the working-age population, by NUTS 2 region (2025)
Eurostat
20252026-10-15Current
House vs apartment price by comune (2025H2)
Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI)
2025 H22026-09-12Current
IMU rate on a luxury (cat. A/1, A/8, A/9) primary residence
MEF — Dipartimento delle Finanze, Portale del Federalismo Fiscale
20252026-09-14Current
IMU rate on non-primary, non-category-D buildings (altri fabbricati)
MEF — Dipartimento delle Finanze, Portale del Federalismo Fiscale
20252026-09-14Current
Municipal IRPEF surcharge (addizionale comunale)
MEF — Dipartimento delle Finanze
20252026-09-14Ageing
New foreign registrations from abroad
ISTAT
20252026-10-13Current
Population change (2019–2025)
ISTAT
20252026-10-13Current
Premium for refurbished housing by comune (2025H2)
Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI)
2025 H22026-09-12Current
Property purchase price by comune (2025H2)
Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI)
2025 H22026-09-12Current
Property purchase price by province (2025H2)
Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI)
2025 H22026-09-12Current
Property rent by comune (2025H2)
Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI)
2025 H22026-09-12Current
Property rent by province (2025H2)
Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI)
2025 H22026-09-12Current
Residential property prices (OMI, 2025H2)
Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI)
2025 H22026-09-12Current
Seismic hazard class, by comune (2025)
Dipartimento della Protezione Civile — seismic classification
20252026-10-15Current
Unemployment rate, by NUTS 2 region (2025)
Eurostat
20252026-10-03Current
Years of rent to equal the purchase price by comune (2025H2)
Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI)
2025 H22026-09-12Current
Years of rent to equal the purchase price by province (2025H2)
Agenzia delle Entrate — Osservatorio del Mercato Immobiliare (OMI)
2025 H22026-09-12Current
7% pensioner regime — population share by province
Expat Living Italy — rule applied to ISTAT population
checked 2026-08-232026-10-03Current
7% pensioner regime — qualifying comuni
Expat Living Italy — rule applied to ISTAT population
checked 2026-08-232026-10-03Current
Drive time to the nearest airport with passenger traffic, by comune (minutes)
ENAC — airport traffic (positions: OurAirports; roads: OpenStreetMap contributors)
20262026-10-22Current
Drive time to the nearest DEA (level I or II) emergency department, by comune (minutes)
Ministero della Salute — hospital emergency network 2025 (roads: OpenStreetMap contributors)
20262026-10-27Current
Drive time to the nearest emergency department, by comune (minutes)
Ministero della Salute — hospital emergency network 2025 (roads: OpenStreetMap contributors)
20262026-10-27Current
Drive time to the nearest hospital with inpatient beds, by comune (minutes)
Ministero della Salute — hospital beds (roads: OpenStreetMap contributors)
20262026-10-22Current
Drive time to the nearest pharmacy, by comune (minutes)
Ministero della Salute — pharmacies (roads: OpenStreetMap contributors)
20262026-10-27Current
Drive time to the nearest railway station with passenger service (OpenStreetMap), by comune (minutes)
OpenStreetMap contributors — railway stations with passenger service
20262026-10-27Current
Drive time to the nearest supermarket (OpenStreetMap), by comune (minutes)
OpenStreetMap contributors — supermarkets (roads: OpenStreetMap contributors)
20262026-10-27Current
Fibre to the home (FTTH) availability, by comune (Q3 2026)
AGCOM — Broadband Map (fixed network)
20262026-10-16Current
National IRPEF brackets (2026)
Legge di Bilancio 2026 (L. 199/2025), amending TUIR art. 11
20262026-08-24Current
Regional IRPEF surcharge (addizionale regionale)
MEF — Dipartimento delle Finanze
20262026-09-14Current
Why some of these can’t be refreshed
  • 2019 — ISTAT's intercensal reconstruction — a one-off historical release, with no comune-level successor

Method & caveats

Population floor

Per-capita shares are meaningless in very small comuni — four foreign residents in a village of sixty is not a finding. We apply a default population floor of 1,000 residents to rankings, and the map lets you move it with a slider to see how the picture changes.

Citizenship vs. country of birth

ISTAT publishes residents by citizenship at comune level broken down by specific nationality — that’s the map and the per-nationality tables on this site. It does not publish comune-level population by specific country of birth: that cut is only available in three broad groups (Italy / other EU / non-EU), almost certainly statistical disclosure control — a comune-by-200-country cross-tab would produce disclosive near-zero cells for most small comuni. We show that broad-group breakdown on every comune page, but it isn’t comparable per-nationality to the citizenship figures: a comune’s number of Americans by citizenship can’t be checked against its number of people born in the United States, because the latter isn’t published.

Comune-code reconciliation

Comune codes change over time as comuni merge (fusioni). ISTAT does not publish a flat, per-comune successor mapping for these mergers, so a merged comune’s historical values simply won’t join to a current comune id — the year in question is quietly absent from that comune’s trend rather than shown as a wrong number.

Slugs

Each comune has a stable URL slug, persisted across rebuilds so links from the newsletter and elsewhere never break.

BES: a curated subset, and percentile ranks

ISTAT’s BesT publishes 67 territorial well-being indicators; the BES comparison tool shows a curated 15 of them, picked for relevance to someone weighing where to live rather than comprehensive coverage. Its percentile ranks are polarity-aware: a higher percentile always means “better”, whether the underlying indicator’s own direction is higher- is-better (e.g. life expectancy) or lower-is-better (e.g. hospital waiting times) — so ranks are comparable across indicators without having to remember each one’s polarity.

OMI: two grains, and sixteen towns with no price

The cost side of the cost vs. quality of life tool comes from Agenzia delle Entrate’s OMI, for “Abitazioni civili” in normal condition. It is published twice a year and about nine months in arrears: the file describing the second half of 2025 was issued in September 2026. Agenzia Entrate’s bulk download needs a Fisconline/Entratel login, so this is the one dataset here that can’t refresh itself on a schedule — it is fetched by hand, and the freshness panel above shows how far behind it currently is.

Prices exist at two grains and they are different measurements, kept separate rather than blended: the comune figure is an unweighted mean across that comune’s own OMI micro-zones, and the province figure is a population-weighted mean across the comuni OMI covers in it (not the capoluogo alone). A comune OMI didn’t survey is absent from both, never filled in with a zero or a provincial average.

A third figure is derived rather than published: dividing the purchase price by twelve months’ rent gives how many years of rent equal the purchase price, which is the buy-or-rent comparison neither price answers alone. It is not a yield or a payback period — it ignores purchase taxes, IMU, maintenance, financing and the months a property sits empty, all of which push the real number up. It exists for 7,091 comuni, the ones with both a purchase and a rent figure; the rest are absent from it rather than estimated.

Sixteen comuni are absent for a different reason: OMI records a price of zero for every zone in them, meaning there is no market to survey. Fifteen are in the belt destroyed by the 2016 Central Italy earthquake — Amatrice, Accumoli, Arquata del Tronto, Norcia, Cascia, Preci among them — and the sixteenth is Gibellina, destroyed in the 1968 Belice earthquake. Reading those zeros as prices would list the most devastated towns in Italy as its cheapest, so they are excluded and named here instead.

← Back to Data