---
title: "Get one comune's profile"
method: GET
path: "/comuni/{istatCode}"
---

# Get one comune's profile

`GET /comuni/{istatCode}`

## Request

- Base URL: `https://www.expatliving.it/api/v1`
- URL: `https://www.expatliving.it/api/v1/comuni/{istatCode}`
- Auth: none declared

Population, foreign residents by citizenship, purchase and rent price, price-to-rent, verified tax-regime eligibility, a province rollup, the official seismic zone (`seismicZone`: a legal classification, not a forecast), every Italy-map layer (`layers`) and the province's BES indicators (`provinceWellbeing`), for one Italian comune identified by its 6-digit ISTAT code. The workhorse endpoint — always cite the vintage and source, and the grain: a province or region value is not this comune's own.

## Path parameters

- `istatCode` string, required

## Response `200`

The comune's profile.

- object
  - `place` object, required
    - `istatCode` string, required: 6-digit ISTAT comune code, e.g. 075029.
    - `slug` string, required: Stable URL slug for /data/comune/{slug} — never changes, even if a comune merges.
    - `name` string, required
    - `province` string, required
    - `provinceCode` string, required
    - `provinceSlug` string, required
    - `region` string, required
    - `regionSlug` string, required
    - `lat` number, required
    - `lng` number, required
    - `page` string, required: This comune's profile page on expatliving.it — link it when you quote any figure below.
  - `population` object, required
    - `value` integer, nullable, required
    - `unit` string, required
    - `source` string, required
    - `vintage` string, required: The period the value describes, e.g. "2025H2" or "2025" — not when it was fetched.
    - `extractedOn` string, required: ISO date this value was extracted from the source.
    - `coverage` object: How many of Italy's places this dataset covers at all, e.g. 7587 of 7894 comuni.
      - `in` integer, required
      - `of` integer, required
    - `method` string, required: URL to the methodology page for this dataset.
    - `license` string, required
    - `reason` string: Present only when value is null: why this place has no figure.
  - `foreignResidentsByCitizenship` object, required: Counts by ISO-2 citizenship code. Citizenship, not birthplace — excludes foreign-born Italian citizens. value is null, never a zero-filled object, when ISTAT's citizenship dataset has no row at all for this comune.
    - `value` object, nullable, required
    - `unit` string, required
    - `source` string, required
    - `vintage` string, required: The period the value describes, e.g. "2025H2" or "2025" — not when it was fetched.
    - `extractedOn` string, required: ISO date this value was extracted from the source.
    - `coverage` object: How many of Italy's places this dataset covers at all, e.g. 7587 of 7894 comuni.
      - `in` integer, required
      - `of` integer, required
    - `method` string, required: URL to the methodology page for this dataset.
    - `license` string, required
    - `reason` string: Present only when value is null: why this place has no figure.
  - `totalForeignResidents` integer, nullable, required: Sum of foreignResidentsByCitizenship: only the citizenships this site tracks, so a floor, not every foreign resident — Moroccan, Chinese and Indian residents, among others, are not counted. For every foreign resident, see foreignResidentsAllCitizenships. null when the citizenship dataset has no row for this comune.
  - `foreignResidentsAllCitizenships` object, required: Residents holding any foreign citizenship: ISTAT's own total, not limited to the citizenships tracked in foreignResidentsByCitizenship. Citizenship, not birthplace. value is null, never 0, when ISTAT sends no total for this comune.
    - `value` integer, nullable, required
    - `unit` string, required
    - `source` string, required
    - `vintage` string, required: The period the value describes, e.g. "2025H2" or "2025" — not when it was fetched.
    - `extractedOn` string, required: ISO date this value was extracted from the source.
    - `coverage` object: How many of Italy's places this dataset covers at all, e.g. 7587 of 7894 comuni.
      - `in` integer, required
      - `of` integer, required
    - `method` string, required: URL to the methodology page for this dataset.
    - `license` string, required
    - `reason` string: Present only when value is null: why this place has no figure.
  - `purchasePriceEurM2` object, required
    - `value` number, nullable, required
    - `unit` string, required
    - `source` string, required
    - `vintage` string, required: The period the value describes, e.g. "2025H2" or "2025" — not when it was fetched.
    - `extractedOn` string, required: ISO date this value was extracted from the source.
    - `coverage` object: How many of Italy's places this dataset covers at all, e.g. 7587 of 7894 comuni.
      - `in` integer, required
      - `of` integer, required
    - `method` string, required: URL to the methodology page for this dataset.
    - `license` string, required
    - `reason` string: Present only when value is null: why this place has no figure.
  - `rentPriceEurM2Month` object, required
    - `value` number, nullable, required
    - `unit` string, required
    - `source` string, required
    - `vintage` string, required: The period the value describes, e.g. "2025H2" or "2025" — not when it was fetched.
    - `extractedOn` string, required: ISO date this value was extracted from the source.
    - `coverage` object: How many of Italy's places this dataset covers at all, e.g. 7587 of 7894 comuni.
      - `in` integer, required
      - `of` integer, required
    - `method` string, required: URL to the methodology page for this dataset.
    - `license` string, required
    - `reason` string: Present only when value is null: why this place has no figure.
  - `priceToRentYears` object, required: Years of rent that equal the purchase price. Not a yield, an ROI, or a payback period.
    - `value` number, nullable, required
    - `unit` string, required
    - `source` string, required
    - `vintage` string, required: The period the value describes, e.g. "2025H2" or "2025" — not when it was fetched.
    - `extractedOn` string, required: ISO date this value was extracted from the source.
    - `coverage` object: How many of Italy's places this dataset covers at all, e.g. 7587 of 7894 comuni.
      - `in` integer, required
      - `of` integer, required
    - `method` string, required: URL to the methodology page for this dataset.
    - `license` string, required
    - `reason` string: Present only when value is null: why this place has no figure.
  - `taxRegimeEligibility` object[], required: Verified regimes only — "placesNotPeople": geographic eligibility, not personal advice.
    - `slug` string, required
    - `label` string, required
    - `href` string, required: Path to this regime's own page on expatliving.it.
    - `maxPopulation` number: The regime's population ceiling, when it has one.
    - `headroom` number: Residents between this comune and the ceiling.
    - `ruleIsIncomplete` boolean, required: True when the rule admits comuni by routes not yet verified — silence about OTHER regimes proves nothing.
  - `provinceRollup` object, required
    - `name` string, required
    - `code` string, required
    - `slug` string, required
    - `purchasePriceEurM2` object, required
      - `value` number, nullable, required
      - `unit` string, required
      - `source` string, required
      - `vintage` string, required: The period the value describes, e.g. "2025H2" or "2025" — not when it was fetched.
      - `extractedOn` string, required: ISO date this value was extracted from the source.
      - `coverage` object: How many of Italy's places this dataset covers at all, e.g. 7587 of 7894 comuni.
        - `in` integer, required
        - `of` integer, required
      - `method` string, required: URL to the methodology page for this dataset.
      - `license` string, required
      - `reason` string: Present only when value is null: why this place has no figure.
    - `rentPriceEurM2Month` object, required
      - `value` number, nullable, required
      - `unit` string, required
      - `source` string, required
      - `vintage` string, required: The period the value describes, e.g. "2025H2" or "2025" — not when it was fetched.
      - `extractedOn` string, required: ISO date this value was extracted from the source.
      - `coverage` object: How many of Italy's places this dataset covers at all, e.g. 7587 of 7894 comuni.
        - `in` integer, required
        - `of` integer, required
      - `method` string, required: URL to the methodology page for this dataset.
      - `license` string, required
      - `reason` string: Present only when value is null: why this place has no figure.
  - `seismicZone` object, required: The comune's official seismic zone (zona sismica). A legal classification, not a forecast and not a verdict on any building. value is null, never a default zone, when the Department's table has no row for this comune.
    - `value` object, nullable, required
      - `officialZone` integer, nullable, required: The national zone, 1 (highest hazard) to 4 (lowest). null when the comune straddles zones.
      - `label` string, required: The Department of Civil Protection's label as published: "3", a regional sub-zone such as "2B" or "3S", or a combined label such as "2A-3A-3B".
      - `hazardClass` integer, nullable, required: The map layer's value: 5 minus the zone, so 4 is the highest hazard (official zone 1). null when split.
      - `zonesInvolved` integer[], required: Every national zone the label names; more than one means the comune straddles zones.
      - `reading` string, required: What the classification is and is not. A legal classification used for planning and building control — not a forecast, and not an assessment of any building.
    - `unit` string, required
    - `source` string, required
    - `vintage` string, required: The period the value describes, e.g. "2025H2" or "2025" — not when it was fetched.
    - `extractedOn` string, required: ISO date this value was extracted from the source.
    - `coverage` object: How many of Italy's places this dataset covers at all, e.g. 7587 of 7894 comuni.
      - `in` integer, required
      - `of` integer, required
    - `method` string, required: URL to the methodology page for this dataset.
    - `license` string, required
    - `reason` string: Present only when value is null: why this place has no figure.
  - `layers` object[], required: Every other map layer's value for this place, at the grain its source publishes. A null value means the source has no figure for this place (see `reason`).
    - `value` number, nullable, required
    - `unit` string, required
    - `source` string, required
    - `vintage` string, required: The period the value describes, e.g. "2025H2" or "2025" — not when it was fetched.
    - `extractedOn` string, required: ISO date this value was extracted from the source.
    - `coverage` object: How many of Italy's places this dataset covers at all, e.g. 7587 of 7894 comuni.
      - `in` integer, required
      - `of` integer, required
    - `method` string, required: URL to the methodology page for this dataset.
    - `license` string, required
    - `reason` string: Present only when value is null: why this place has no figure.
    - `slug` string, required: The dataset slug, as in GET /datasets.
    - `label` string, required
    - `grain` 'comune' | 'province' | 'region', required: The level this value is measured at. Only "comune" is a measurement of this comune itself.
    - `measuredFor` string, required: The place the value describes, e.g. "L'Aquila (province)".
    - `page` string, required: The map page for this layer on expatliving.it — link readers here.
    - `download` string, required: The whole dataset, as published JSON (every place, with its meta block).
    - `note` string: The source's own coverage caveat, where it has one.
  - `provinceWellbeing` object, required: ISTAT BES well-being indicators for this comune's province — province-level, not a comune measurement.
    - `value` object[], nullable, required
      - `code` string, required
      - `domain` string, required
      - `label` string, required
      - `unit` string, required
      - `polarity` 'high' | 'low', required: "high": a higher raw value is better; "low": a lower one is.
      - `value` number, required: The raw indicator value.
      - `year` integer, required: The year this observation describes — indicators update on different cycles.
      - `percentile` number, required: 0–100 rank among Italy's provinces, polarity-aware: higher is always better, whichever way the raw value runs.
    - `unit` string, required
    - `source` string, required
    - `vintage` string, required: The period the value describes, e.g. "2025H2" or "2025" — not when it was fetched.
    - `extractedOn` string, required: ISO date this value was extracted from the source.
    - `coverage` object: How many of Italy's places this dataset covers at all, e.g. 7587 of 7894 comuni.
      - `in` integer, required
      - `of` integer, required
    - `method` string, required: URL to the methodology page for this dataset.
    - `license` string, required
    - `reason` string: Present only when value is null: why this place has no figure.
    - `grain` 'province', required
    - `measuredFor` string, required
    - `page` string, required
  - `articles` object[]: Published articles about this comune — the reporting behind the numbers. Credit required to reuse.
    - `slug` string, required
    - `title` string, required
    - `url` string, required
    - `markdownUrl` string, required
  - `attribution` object, required
    - `publisher` string, required
    - `url` string, required
    - `page` string: The expatliving.it page these figures come from — link it when you quote them.
    - `citeAs` string, required: A ready-made citation line.
    - `request` string, required

## Other responses

- `404`: No comune with that ISTAT code.

---

[API](https://skmtc.dev/expatliving/apis/expat-living-italy-data-api.md) · [All operations](https://skmtc.dev/expatliving/apis/expat-living-italy-data-api/llms.txt) · [OpenAPI document](https://skmtc.dev/expatliving/apis/expat-living-italy-data-api/revisions/c72799dee52c?raw)
