European city data methodology on this page explains every source, raw snapshot, build step, geography rule and quality check behind the published figures.
Methodology last updated 2026-08-27 · dataset build 2026-08-26 · 701 cities · 50 indicators.
Cities of Europe is a source-literal comparison of European cities and functional urban areas built on official statistics. We report exactly what the source publishes — an indicator label, a value, a unit, a reference year and a geography type — and attach that provenance to every figure on every page.
It is a faithful presentation layer over public data, not a model. We do not estimate values for cities the source does not cover, and we do not blend indicators into composite scores.
Every number on the site comes from one of these source families. Registered sources are documented but not yet built into published data.
| Source | Authority | Vintage | Update cadence | Link |
|---|---|---|---|---|
| Eurostat — City statistics (Urban Audit) Live |
Eurostat (Statistical Office of the European Union) | Reference year 2022 (perception survey 2023) | Weekly checks; indicators revised on Eurostat's schedule | official ↗ |
| Eurostat GISCO — Urban Audit 2024 geography Live |
Eurostat GISCO | Urban Audit 2024 statistical units | Annual / on GISCO release | official ↗ |
| Eurostat GISCO — Country boundaries (CNTR_RG) Live |
Eurostat GISCO | 2024 country geometry, 1:20M generalization | Annual / on GISCO release | official ↗ |
| Eurostat — Regional statistics (NUTS) Live |
Eurostat | Latest non-null year per region (GDP to 2024; life expectancy 2024) | Weekly checks; revised on Eurostat's schedule | official ↗ |
| Eurostat — Purchasing power parities Live |
Eurostat | 2024 price level index, GDP, EU27_2020=100 | Weekly checks; annual values revised on Eurostat's schedule | official ↗ |
| EEA — Monthly AQ statistics in European cities Live |
European Environment Agency | 2024 annualized from monthly city averages | Monthly checks; public annual metrics use completed years | official ↗ |
| Copernicus ERA5-Land monthly means Live |
Copernicus Climate Data Store / ECMWF | 1991–2020 climate normals | Monthly product; normals revised per decade | official ↗ |
| Copernicus Urban Atlas 2018 Registered |
Copernicus Land Monitoring Service | 2018 Urban Atlas product catalogue | Multi-year product; catalogue checked on update cycles | official ↗ |
| OECD — Functional urban areas Registered |
OECD | Registered reference source | Irregular; manual review before metric publication | official ↗ |
Eurostat's City statistics (the Urban Audit programme) collect comparable indicators for European cities and their functional urban areas from national statistical institutes. Reporting is voluntary for many indicators, so coverage varies by indicator and country. We retrieve the figures directly from Eurostat's JSON-stat dissemination API and never re-key them by hand.
Eurostat regional and PPP values, EEA city-air-quality areas and Copernicus climate grid cells are useful context, but they are not all city-proper measurements. The pipeline keeps the source-native grain in value_grain and the source geography in value_geo_code, then labels the figure accordingly on the page.
European city statistics exist at several distinct geographies. We keep them separate and always label which one a figure uses:
The geography spine also carries a NUTS3 region code for every city. We use it to attach regional context — GDP per inhabitant (NUTS3) and life expectancy at birth (NUTS2) from Eurostat regional statistics. These are regional values for the area the city sits in, shown in their own section, labelled with the NUTS code, and never presented as a city-measured figure. Population density and the 65-and-over share are derived from Eurostat population and GISCO area at the city's own grain.
Each city page shows a small country outline with a pulsing marker at the city. The outline is the official Eurostat GISCO country geometry (CNTR_RG, 1:20M generalization, 2024), and the marker reuses the GISCO Urban Audit label point for that city. Both use the same per-country cosine-corrected equirectangular transform. Two staggered rings make the point easier to find; browsers that request reduced motion show only the fixed marker. This is a generalized locator graphic, not a boundary or sovereignty claim. Overseas and non-contiguous territories are cropped so the inset shows the home landmass, and the marker is a labelled city point, not a precise address.
We follow the same discipline as our sibling data projects: raw snapshots are evidence, processed files are deterministic build products, and this methodology defines what the site may claim.
Each city page compares a metric only with records from the same reference year and the same geography grain. It shows rank, percentile, reporting median and denominator. City and greater-city values never share a comparison set. Ranks are never an unqualified “Nth largest”; the page states how many comparable records reported the field. The narrative summary is generated deterministically from the same values (no AI writing, a banned-phrase check fails the build). The 12-month climate chart uses the ERA5-Land monthly 1991–2020 normals.
The full dataset and the indexable city-page set are separate. The initial release selects exactly 150 profiles through a checked-in publishing cohort. Selection rewards source-family depth, metric coverage, complete climate data, population, capital status, geography confidence and country diversity. Other profiles remain reachable through the explorer and tools but carry noindex,follow and stay out of the sitemap. A source refresh cannot silently add indexable profiles.
Dedicated population and climate pages render their complete source tables in HTML, then add filtering, sorting, pagination and CSV export in the browser. Filter combinations do not become separate indexable pages. Saved random-city draws use the clean tool page as canonical and carry noindex,follow.
Missing values stay missing. We never fill a city from a country or regional average unless the rendered label explicitly says the value is country- or region-grain context.
Reporting is voluntary, so we publish how many cities actually report each indicator rather than implying complete coverage. Counts below are from the current build.
| Indicator | Code | Unit | Module | Cities reporting |
|---|---|---|---|---|
| Population on 1 January, total | DE1001V | persons | Population & demographics | 589 |
| Population density (population divided by GISCO area) | DERIVED_DENSITY | persons per km2 | Population & demographics | 544 |
| Share of population aged 65 and over | DERIVED_SHARE65 | percent | Population & demographics | 546 |
| Mean annual air temperature (1991-2020 normal) | CLIM_TAVG | °C | Climate (ERA5-Land normals) | 601 |
| Mean January air temperature (1991-2020 normal) | CLIM_TJAN | °C | Climate (ERA5-Land normals) | 601 |
| Mean July air temperature (1991-2020 normal) | CLIM_TJUL | °C | Climate (ERA5-Land normals) | 601 |
| Mean annual precipitation (1991-2020 normal) | CLIM_PRECIP | mm per year | Climate (ERA5-Land normals) | 601 |
| Mean surface solar radiation downwards (1991-2020 normal) | CLIM_SOLAR | W per m2 | Climate (ERA5-Land normals) | 601 |
| Annual mean NO2 concentration from EEA monthly city averages | EEA_NO2_ANNUAL_MEAN | µg/m3 | Air quality (EEA annualized) | 329 |
| Annual mean O3 concentration from EEA monthly city averages | EEA_O3_ANNUAL_MEAN | µg/m3 | Air quality (EEA annualized) | 281 |
| Annual mean PM2.5 concentration from EEA monthly city averages | EEA_PM25_ANNUAL_MEAN | µg/m3 | Air quality (EEA annualized) | 298 |
| Average annual rent for housing per m2 | SA1049V | EUR per m2 per year | Housing & living costs | 196 |
| Average price for buying a house | SA1050V | EUR | Housing & living costs | 288 |
| Average price for buying an apartment | SA1051V | EUR | Housing & living costs | 305 |
| Average price for buying a house per m2 | SA1052V | EUR per m2 | Housing & living costs | 279 |
| Average price for buying an apartment per m2 | SA1053V | EUR per m2 | Housing & living costs | 278 |
| Unemployment rate | EC1020I | percent | Employment | 416 |
| Total employment/jobs (workplace based) | EC2020V | jobs | Employment | 552 |
| Share of students in higher education in the total population | TE1026I | students per 1000 residents | Education | 443 |
| Crude birth rate | SA2007I | births per 1000 residents | Births & deaths | 520 |
| Crude death rate | SA2029I | deaths per 1000 residents | Births & deaths | 556 |
| Number of registered cars per 1000 population | TT1057I | cars per 1000 population | Transport costs | 384 |
| People killed in road accidents per 10000 population | TT1060I | deaths per 10000 population | Transport costs | 498 |
| Length of bicycle network (dedicated cycle paths and lanes) | TT1079V | km | Transport costs | 349 |
| Cost of a combined monthly ticket for 5-10 km in the central zone | TT1080V | EUR | Transport costs | 93 |
| Cost of a taxi ride of 5 km to the centre at daytime | TT1081V | EUR | Transport costs | 156 |
| Country price level index for GDP | PPP_GDP_PLI_EU27_2020 | EU27_2020=100 | Country price context (PPP) | 637 |
| Total nights spent in tourist accommodation establishments | CR2001V | nights | Tourism | 174 |
| Nights spent in tourist accommodation establishments by residents | CR2010V | nights | Tourism | 97 |
| Nights spent in tourist accommodation establishments by non-residents | CR2011V | nights | Tourism | 97 |
| Number of cinema seats per 1000 residents | CR1003I | seats per 1000 residents | Culture | 388 |
| Cinema attendance per year | CR1005V | visits per year | Culture | 363 |
| Number of museum visitors per year | CR1007V | visits per year | Culture | 325 |
| Number of public libraries (all distribution points) | CR1010V | libraries | Culture | 549 |
| Share strongly agreeing it is easy to find good housing at a reasonable price | PS2032V | percent | Resident perception survey | 80 |
| Share somewhat agreeing it is easy to find good housing at a reasonable price | PS2033V | percent | Resident perception survey | 80 |
| Share very satisfied with the quality of the air in the city | PS3260V | percent | Resident perception survey | 80 |
| Share rather satisfied with the quality of the air in the city | PS3261V | percent | Resident perception survey | 80 |
| Share very satisfied with the noise level in the city | PS3270V | percent | Resident perception survey | 80 |
| Share rather satisfied with the noise level in the city | PS3271V | percent | Resident perception survey | 80 |
| Share very satisfied with cleanliness in the city | PS3280V | percent | Resident perception survey | 80 |
| Share rather satisfied with cleanliness in the city | PS3281V | percent | Resident perception survey | 80 |
| Share strongly agreeing they are satisfied to live in this city | PS3360V | percent | Resident perception survey | 80 |
| Share somewhat agreeing they are satisfied to live in this city | PS3361V | percent | Resident perception survey | 80 |
| Share strongly agreeing they feel safe walking alone at night in the city | PS3514V | percent | Resident perception survey | 80 |
| Share somewhat agreeing they feel safe walking alone at night in the city | PS3515V | percent | Resident perception survey | 80 |
| Share strongly agreeing public transport is affordable | PS3547V | percent | Resident perception survey | 80 |
| Share somewhat agreeing public transport is affordable | PS3548V | percent | Resident perception survey | 80 |
| Regional GDP per inhabitant | REG_GDP_HAB | EUR per inhabitant | Regional context (NUTS) | 627 |
| Life expectancy at birth, both sexes | REG_LIFEEXP | years | Regional context (NUTS) | 637 |
Every published field is source-literal: either a verbatim official indicator, a documented grain-preserving attachment, or a documented derivation from named official inputs. We do not impute missing values or blend fields into composite scores. Each field carries a guardrail describing what it may not be used to claim.
| Field | Recipe | Guardrail |
|---|---|---|
| Population on 1 January, total DE1001V |
Copied verbatim from Eurostat urb_cpop1; no transformation beyond unit grouping for display. | Label the page as Eurostat city or greater-city population for the stated year. |
| Population density (population divided by GISCO area) DERIVED_DENSITY |
Derived from Eurostat inputs (see guardrail); no external data added. | Derived from Eurostat population and GISCO Urban Audit area; same grain as the population figure. |
| Share of population aged 65 and over DERIVED_SHARE65 |
Derived from Eurostat inputs (see guardrail); no external data added. | Derived from Eurostat city age bands; share of the reported total population. |
| Mean annual air temperature (1991-2020 normal) CLIM_TAVG |
Copied verbatim from Eurostat era5_land_monthly; no transformation beyond unit grouping for display. | ERA5-Land reanalysis at the city centroid grid cell; not station weather or a forecast. |
| Mean January air temperature (1991-2020 normal) CLIM_TJAN |
Copied verbatim from Eurostat era5_land_monthly; no transformation beyond unit grouping for display. | ERA5-Land reanalysis at the city centroid grid cell; not station weather or a forecast. |
| Mean July air temperature (1991-2020 normal) CLIM_TJUL |
Copied verbatim from Eurostat era5_land_monthly; no transformation beyond unit grouping for display. | ERA5-Land reanalysis at the city centroid grid cell; not station weather or a forecast. |
| Mean annual precipitation (1991-2020 normal) CLIM_PRECIP |
Copied verbatim from Eurostat era5_land_monthly; no transformation beyond unit grouping for display. | ERA5-Land reanalysis total precipitation at the city centroid grid cell; not station weather. |
| Mean surface solar radiation downwards (1991-2020 normal) CLIM_SOLAR |
Copied verbatim from Eurostat era5_land_monthly; no transformation beyond unit grouping for display. | ERA5-Land mean surface solar radiation; this is irradiance, NOT sunshine hours. |
| Annual mean NO2 concentration from EEA monthly city averages EEA_NO2_ANNUAL_MEAN |
European Environment Agency monthly city air-quality table; monthly rows below the coverage threshold are excluded, then a days-weighted annual mean is computed. | Days-weighted annual mean from EEA monthly city averages after coverage filtering; not a forecast or station-only value. |
| Annual mean O3 concentration from EEA monthly city averages EEA_O3_ANNUAL_MEAN |
European Environment Agency monthly city air-quality table; monthly rows below the coverage threshold are excluded, then a days-weighted annual mean is computed. | Days-weighted annual mean from EEA monthly city averages after coverage filtering; not a forecast or station-only value. |
| Annual mean PM2.5 concentration from EEA monthly city averages EEA_PM25_ANNUAL_MEAN |
European Environment Agency monthly city air-quality table; monthly rows below the coverage threshold are excluded, then a days-weighted annual mean is computed. | Days-weighted annual mean from EEA monthly city averages after coverage filtering; not a forecast or station-only value. |
| Average annual rent for housing per m2 SA1049V |
Copied verbatim from Eurostat urb_clivcon; no transformation beyond unit grouping for display. | This is a reported Eurostat city field, not a full housing-cost basket. |
| Average price for buying a house SA1050V |
Copied verbatim from Eurostat urb_clivcon; no transformation beyond unit grouping for display. | Coverage is voluntary and city-level availability must be shown. |
| Average price for buying an apartment SA1051V |
Copied verbatim from Eurostat urb_clivcon; no transformation beyond unit grouping for display. | Coverage is voluntary and city-level availability must be shown. |
| Average price for buying a house per m2 SA1052V |
Copied verbatim from Eurostat urb_clivcon; no transformation beyond unit grouping for display. | Coverage is voluntary and city-level availability must be shown. |
| Average price for buying an apartment per m2 SA1053V |
Copied verbatim from Eurostat urb_clivcon; no transformation beyond unit grouping for display. | Coverage is voluntary and city-level availability must be shown. |
| Unemployment rate EC1020I |
Copied verbatim from Eurostat urb_clma; no transformation beyond unit grouping for display. | Eurostat city or greater-city unemployment rate for the stated year; national definitions and observation flags still apply. |
| Total employment/jobs (workplace based) EC2020V |
Copied verbatim from Eurostat urb_clma; no transformation beyond unit grouping for display. | Workplace-based jobs reported for the Eurostat city or greater-city geography; not employed residents or job openings. |
| Share of students in higher education in the total population TE1026I |
Copied verbatim from Eurostat urb_ceduc; no transformation beyond unit grouping for display. | Students in ISCED levels 5-8 per 1000 residents; not the share of residents with a university degree. |
| Crude birth rate SA2007I |
Copied verbatim from Eurostat urb_cfermor; no transformation beyond unit grouping for display. | Annual live births per 1000 residents for the reported Eurostat geography; not a fertility rate. |
| Crude death rate SA2029I |
Copied verbatim from Eurostat urb_cfermor; no transformation beyond unit grouping for display. | Annual deaths per 1000 residents for the reported Eurostat geography; age structure strongly affects comparisons. |
| Number of registered cars per 1000 population TT1057I |
Copied verbatim from Eurostat urb_ctran; no transformation beyond unit grouping for display. | Registered cars per resident, not congestion, traffic speed or household car access. |
| People killed in road accidents per 10000 population TT1060I |
Copied verbatim from Eurostat urb_ctran; no transformation beyond unit grouping for display. | Small annual rates can be volatile; do not present as a full traffic-safety score. |
| Length of bicycle network (dedicated cycle paths and lanes) TT1079V |
Copied verbatim from Eurostat urb_ctran; no transformation beyond unit grouping for display. | Reported Eurostat infrastructure length; not a cycling-mode-share or safety measure. |
| Cost of a combined monthly ticket for 5-10 km in the central zone TT1080V |
Copied verbatim from Eurostat urb_ctran; no transformation beyond unit grouping for display. | This is a transport-cost input, not a full cost-of-living index. |
| Cost of a taxi ride of 5 km to the centre at daytime TT1081V |
Copied verbatim from Eurostat urb_ctran; no transformation beyond unit grouping for display. | This is a transport-cost input, not a full cost-of-living index. |
| Country price level index for GDP PPP_GDP_PLI_EU27_2020 |
Eurostat PPP table prc_ppp_ind, attached by GISCO country code and labelled as country-grain context. | Country-grain price-level context; not a city cost-of-living basket or local price survey. |
| Total nights spent in tourist accommodation establishments CR2001V |
Copied verbatim from Eurostat urb_ctour; no transformation beyond unit grouping for display. | Accommodation nights are not total visitors or day trips. |
| Nights spent in tourist accommodation establishments by residents CR2010V |
Copied verbatim from Eurostat urb_ctour; no transformation beyond unit grouping for display. | Accommodation nights are not total visitors or day trips. |
| Nights spent in tourist accommodation establishments by non-residents CR2011V |
Copied verbatim from Eurostat urb_ctour; no transformation beyond unit grouping for display. | Accommodation nights are not total visitors or day trips. |
| Number of cinema seats per 1000 residents CR1003I |
Copied verbatim from Eurostat urb_ctour; no transformation beyond unit grouping for display. | Cinema-seat capacity per resident; not annual attendance or a culture score. |
| Cinema attendance per year CR1005V |
Copied verbatim from Eurostat urb_ctour; no transformation beyond unit grouping for display. | Culture attendance count where reported; not a full cultural-offer index. |
| Number of museum visitors per year CR1007V |
Copied verbatim from Eurostat urb_ctour; no transformation beyond unit grouping for display. | Museum visitor count where reported; not a count of museums or all cultural visits. |
| Number of public libraries (all distribution points) CR1010V |
Copied verbatim from Eurostat urb_ctour; no transformation beyond unit grouping for display. | Library distribution points where reported; not library visits or service quality. |
| Share strongly agreeing it is easy to find good housing at a reasonable price PS2032V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not measured rent or purchase price. |
| Share somewhat agreeing it is easy to find good housing at a reasonable price PS2033V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not measured rent or purchase price. |
| Share very satisfied with the quality of the air in the city PS3260V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not measured pollutant concentration. |
| Share rather satisfied with the quality of the air in the city PS3261V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not measured pollutant concentration. |
| Share very satisfied with the noise level in the city PS3270V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not measured noise exposure. |
| Share rather satisfied with the noise level in the city PS3271V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not measured noise exposure. |
| Share very satisfied with cleanliness in the city PS3280V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not a measured street-cleaning or litter index. |
| Share rather satisfied with cleanliness in the city PS3281V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not a measured street-cleaning or litter index. |
| Share strongly agreeing they are satisfied to live in this city PS3360V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not an objective best-city ranking. |
| Share somewhat agreeing they are satisfied to live in this city PS3361V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not an objective best-city ranking. |
| Share strongly agreeing they feel safe walking alone at night in the city PS3514V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not a crime rate. |
| Share somewhat agreeing they feel safe walking alone at night in the city PS3515V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not a crime rate. |
| Share strongly agreeing public transport is affordable PS3547V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not measured fare affordability. |
| Share somewhat agreeing public transport is affordable PS3548V |
Copied verbatim from Eurostat urb_percep; no transformation beyond unit grouping for display. | Survey perception, not measured fare affordability. |
| Regional GDP per inhabitant REG_GDP_HAB |
Eurostat regional table nama_10r_3gdp, latest non-null year per region, attached to the city's NUTS area. Not a city-measured value. | NUTS3 regional value, not a city figure; the city lies within this region. |
| Life expectancy at birth, both sexes REG_LIFEEXP |
Eurostat regional table demo_r_mlifexp, latest non-null year per region, attached to the city's NUTS area. Not a city-measured value. | NUTS2 regional value at birth, both sexes; not a city-specific figure. |
Where Eurostat marks an observation with a status flag, we preserve it next to the value and explain it on the page.
| Flag | Meaning |
|---|---|
| b | break in time series |
| d | definition differs |
| e | estimated |
| p | provisional |
| u | low reliability |
To keep every page defensible, the project forbids these claims regardless of demand:
Current limits. Population, housing, employment, education, demography, transport, tourism and culture indicators are reference year 2022; the perception survey is 2023; EEA air-quality values are annualized from 2024 monthly city averages. Many indicators are reported by only a subset of cities (see Coverage).
Live now. Eurostat city employment, education and basic demographic indicators; regional GDP and life expectancy joined by NUTS; PPP country price-level context; derived population density and 65-and-over share; ERA5-Land climate normals; and EEA PM2.5, NO2 and O3 annualized city-air values. Registered but gated. OECD functional urban areas and Copernicus Urban Atlas are documented and fetchable, but they do not emit city metric rows until crosswalk or geospatial-overlay validators pass.
Climate (ERA5-Land, 1991–2020). Mean annual, January and July air temperature, mean annual precipitation, and mean surface solar radiation are taken from the Copernicus ERA5-Land monthly-means reanalysis, averaged over 1991–2020 and assigned to each city's nearest 0.1° grid cell by its GISCO centroid. These are reanalysis values for that grid cell — not station observations, not forecasts, and not current weather. Solar is mean surface solar radiation (irradiance), not sunshine hours. 10 m wind is captured in the dataset but not shown on pages, because monthly-mean components yield only a mean-vector speed that understates true wind speed.
This methodology page is kept in step with the source registry and the data pipeline; when a source, field or vintage changes, this page changes in the same update.