{
  "snapshot_id": "approved-static-bb6d69cd3c074ae2",
  "schema_version": "immigrationdb-city-resource-v2",
  "generated_at": "2026-08-04",
  "canonical_path": "/cities/fr/montpellier/",
  "mcp_uri": "immigrationdb://city/fr/montpellier",
  "editorial_copy": {
    "status": "reviewed",
    "reviewed_at": "2026-07-29",
    "copy_depth": "city_standard",
    "blocks": {
      "intro": "Montpellier is a city in France. The city covered 57 km² in 2026. Population density was 5,399.1 people per km² in 2022. The unemployment rate was 18.3% at the end of 2022. Montpellier had a population of 304,694 in June 2026. Average high temperatures were 12°C in January and 29.5°C in July.",
      "climate_lead": "Monthly precipitation was 56.2 mm in January and 17.1 mm in July. Annual PM2.5 was 9.7 µg/m³ in 2024.",
      "immigration_lead": "The foreign population count was 43,484 in 2021."
    },
    "used_claim_count": 8,
    "uses_supplemental_cd": false
  },
  "city": {
    "entity_id": "city:fr:insee5:34172",
    "name": "Montpellier",
    "country_code": "FR",
    "public_slug": "montpellier",
    "canonical_path": "/cities/fr/montpellier/",
    "mcp_uri": "immigrationdb://city/fr/montpellier",
    "page_state": "published",
    "useful_blocks": [
      "climate_air",
      "work_income",
      "cost_living"
    ],
    "useful_fact_count": 22,
    "city_tags": [],
    "profile_scores": {
      "remote": {
        "point": 51,
        "low": 38,
        "high": 64,
        "factors": {
          "legal_path": 88,
          "cost_pressure": 57,
          "housing": 31,
          "work": 56,
          "family": 31,
          "education": 45,
          "healthcare": 45,
          "safety": 45,
          "air": 33,
          "bureaucracy": 45
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null,
          "basis": null
        }
      },
      "skilled_employee": {
        "point": 53,
        "low": 40,
        "high": 66,
        "factors": {
          "legal_path": 88,
          "cost_pressure": 57,
          "housing": 31,
          "work": 56,
          "family": 31,
          "education": 45,
          "healthcare": 45,
          "safety": 45,
          "air": 33,
          "bureaucracy": 45
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null,
          "basis": null
        }
      },
      "family": {
        "point": 43,
        "low": 30,
        "high": 56,
        "factors": {
          "legal_path": 88,
          "cost_pressure": 57,
          "housing": 31,
          "work": 56,
          "family": 31,
          "education": 45,
          "healthcare": 45,
          "safety": 45,
          "air": 33,
          "bureaucracy": 45
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null,
          "basis": null
        }
      },
      "student": {
        "point": 52,
        "low": 39,
        "high": 65,
        "factors": {
          "legal_path": 88,
          "cost_pressure": 57,
          "housing": 31,
          "work": 56,
          "family": 31,
          "education": 45,
          "healthcare": 45,
          "safety": 45,
          "air": 33,
          "bureaucracy": 45
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null,
          "basis": null
        }
      },
      "retirement": {
        "point": 48,
        "low": 35,
        "high": 61,
        "factors": {
          "legal_path": 88,
          "cost_pressure": 57,
          "housing": 31,
          "work": 56,
          "family": 31,
          "education": 45,
          "healthcare": 45,
          "safety": 45,
          "air": 33,
          "bureaucracy": 45
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null,
          "basis": null
        }
      }
    },
    "facts_by_block": {
      "identity": [
        {
          "metric_id": "city_area_km2",
          "block_id": "identity",
          "value": 57,
          "unit": "km2",
          "geographic_scope": "place",
          "observed_at": "2026-06-30",
          "verified_at": "2026-06-30",
          "comparison_eligible": true,
          "source_id": "fr_montpellier_stats",
          "source_url": "https://www.insee.fr/fr/statistiques/2012713",
          "source_title": "Montpellier stats source",
          "source_authority": "Montpellier stats source",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "foreign_population_total",
          "block_id": "identity",
          "value": 43484,
          "unit": "people",
          "geographic_scope": "city",
          "observed_at": "2021",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "insee_rp2021_nat1_foreign_population_total",
          "source_url": "https://www.insee.fr/fr/statistiques/fichier/8202752/TD_NAT1_2021_csv.zip",
          "source_title": "Nationalité en 2021 — Base des tableaux détaillés — NAT1",
          "source_authority": "INSEE",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "population_density_per_km2",
          "block_id": "identity",
          "value": 5399.103376,
          "unit": "people/km2",
          "geographic_scope": "place",
          "observed_at": "2022-01-01",
          "verified_at": "2026-07-14",
          "comparison_eligible": true,
          "source_id": "fr_insee_comparator_2026",
          "source_url": "https://www.insee.fr/fr/statistiques/fichier/2521169/base_cc_comparateur_csv.zip",
          "source_title": "A-ccepted source for city area and derived population density",
          "source_authority": "fr_insee_comparator_2026",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "population_total",
          "block_id": "identity",
          "value": 310240,
          "unit": "persons",
          "geographic_scope": "municipality",
          "observed_at": "2025-01-01",
          "verified_at": "2026-07-14",
          "comparison_eligible": true,
          "source_id": "denom_fr_d3ad8424d312",
          "source_url": "https://www.insee.fr/fr/statistiques/fichier/8680726/ensemble.zip",
          "source_title": "France official denominator source",
          "source_authority": "France",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "cost_living": [
        {
          "metric_id": "col_fitness_club_eur_month",
          "block_id": "cost_living",
          "value": 28.8606570278583,
          "unit": "EUR/month",
          "geographic_scope": "city",
          "observed_at": "2022-12-31",
          "verified_at": "2026-07-27",
          "comparison_eligible": false,
          "source_id": "source-984e57b0a7d7",
          "source_url": "https://www.kaggle.com/datasets/mvieira101/global-cost-of-living",
          "source_title": "Global Cost of Living — Kaggle snapshot v2",
          "source_authority": "Kaggle dataset by Miguel Piedade; values scraped from Numbeo",
          "source_type": "independent",
          "source_badge": "Independent source",
          "source_quality": "supplemental"
        },
        {
          "metric_id": "col_internet_60mbps_eur_month",
          "block_id": "cost_living",
          "value": 34.829222224719,
          "unit": "EUR/month",
          "geographic_scope": "city",
          "observed_at": "2022-12-31",
          "verified_at": "2026-07-27",
          "comparison_eligible": false,
          "source_id": "source-984e57b0a7d7",
          "source_url": "https://www.kaggle.com/datasets/mvieira101/global-cost-of-living",
          "source_title": "Global Cost of Living — Kaggle snapshot v2",
          "source_authority": "Kaggle dataset by Miguel Piedade; values scraped from Numbeo",
          "source_type": "independent",
          "source_badge": "Independent source",
          "source_quality": "supplemental"
        },
        {
          "metric_id": "col_kindergarten_private_eur_month",
          "block_id": "cost_living",
          "value": 605.384390529058,
          "unit": "EUR/month",
          "geographic_scope": "city",
          "observed_at": "2022-12-31",
          "verified_at": "2026-07-27",
          "comparison_eligible": false,
          "source_id": "source-984e57b0a7d7",
          "source_url": "https://www.kaggle.com/datasets/mvieira101/global-cost-of-living",
          "source_title": "Global Cost of Living — Kaggle snapshot v2",
          "source_authority": "Kaggle dataset by Miguel Piedade; values scraped from Numbeo",
          "source_type": "independent",
          "source_badge": "Independent source",
          "source_quality": "supplemental"
        },
        {
          "metric_id": "col_meal_inexpensive_restaurant_eur",
          "block_id": "cost_living",
          "value": 12.938187214714,
          "unit": "EUR",
          "geographic_scope": "city",
          "observed_at": "2022-12-31",
          "verified_at": "2026-07-27",
          "comparison_eligible": false,
          "source_id": "source-984e57b0a7d7",
          "source_url": "https://www.kaggle.com/datasets/mvieira101/global-cost-of-living",
          "source_title": "Global Cost of Living — Kaggle snapshot v2",
          "source_authority": "Kaggle dataset by Miguel Piedade; values scraped from Numbeo",
          "source_type": "independent",
          "source_badge": "Independent source",
          "source_quality": "supplemental"
        },
        {
          "metric_id": "col_mobile_plan_10gb_eur_month",
          "block_id": "cost_living",
          "value": 16.75,
          "unit": "EUR/month",
          "geographic_scope": "city",
          "observed_at": "2026-07-31",
          "verified_at": "2026-07-27",
          "comparison_eligible": false,
          "source_id": "source-0a2cb812acb6",
          "source_url": "https://www.numbeo.com/cost-of-living/in/Montpellier",
          "source_title": "Cost of Living in Montpellier. Jul 2026. Prices in Montpellier",
          "source_authority": "Numbeo",
          "source_type": "commercial",
          "source_badge": "Commercial source",
          "source_quality": "supplemental"
        },
        {
          "metric_id": "col_transport_monthly_pass_eur",
          "block_id": "cost_living",
          "value": 29.8522699165772,
          "unit": "EUR/month",
          "geographic_scope": "city",
          "observed_at": "2022-12-31",
          "verified_at": "2026-07-27",
          "comparison_eligible": false,
          "source_id": "source-984e57b0a7d7",
          "source_url": "https://www.kaggle.com/datasets/mvieira101/global-cost-of-living",
          "source_title": "Global Cost of Living — Kaggle snapshot v2",
          "source_authority": "Kaggle dataset by Miguel Piedade; values scraped from Numbeo",
          "source_type": "independent",
          "source_badge": "Independent source",
          "source_quality": "supplemental"
        },
        {
          "metric_id": "col_utilities_basic_85m2_eur_month",
          "block_id": "cost_living",
          "value": 136.804802914121,
          "unit": "EUR/month",
          "geographic_scope": "city",
          "observed_at": "2022-12-31",
          "verified_at": "2026-07-27",
          "comparison_eligible": false,
          "source_id": "source-984e57b0a7d7",
          "source_url": "https://www.kaggle.com/datasets/mvieira101/global-cost-of-living",
          "source_title": "Global Cost of Living — Kaggle snapshot v2",
          "source_authority": "Kaggle dataset by Miguel Piedade; values scraped from Numbeo",
          "source_type": "independent",
          "source_badge": "Independent source",
          "source_quality": "supplemental"
        }
      ],
      "work_income": [
        {
          "metric_id": "broadband_gigabit_availability_percent",
          "block_id": "work_income",
          "value": 93.1,
          "unit": "percent",
          "geographic_scope": "city",
          "observed_at": "2026-03-31",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "arcep_ma_connexion_internet_commune_debit_2026_t1",
          "source_url": "https://data.arcep.fr/fixe/maconnexioninternet/statistiques/2026_T1/commune/commune_debit.csv",
          "source_title": "Independent ARCEP municipal count of premises eligible for the >=1 Gbit/s fixed advertised-speed class, divided by the ARCEP type=all municipal premises denominator. This is availability/eligibility, not adoption, measured speed, FTTH-only coverage or mobile coverage.",
          "source_authority": "ARCEP (Autorité de régulation des communications électroniques, des postes et de la distribution de la presse)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "unemployment_total_percent",
          "block_id": "work_income",
          "value": 18.335634,
          "unit": "percent",
          "geographic_scope": "city",
          "observed_at": "2022-12-31",
          "verified_at": "2026-07-26",
          "comparison_eligible": true,
          "source_id": "source-47126777a8de",
          "source_url": "https://www.insee.fr/fr/statistiques/fichier/8581605/TD_ACT1_2022_csv.zip",
          "source_title": "INSEE RP2022 ACT1 — population active by type of activity, commune",
          "source_authority": "Institut national de la statistique et des études économiques (INSEE)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "climate_air": [
        {
          "metric_id": "air_quality_no2_annual_ug_m3",
          "block_id": "climate_air",
          "value": 21.41776259654144,
          "unit": "ug/m3",
          "geographic_scope": "city",
          "observed_at": "2024",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "eea_aq_ereporting_fr_2024",
          "source_url": "https://air.discomap.eea.europa.eu/arcgis/rest/services/AirQuality/AirQualityDownloadServiceEUMonitoringStations/MapServer",
          "source_title": "2024 validated hourly NO2 station observations transformed to the exact INSEE commune centre by deterministic nearest-station selection and equal-weight aggregation.",
          "source_authority": "EEA Air Quality e-Reporting / France reporting via LCSQA",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "air_quality_no2_current_ug_m3",
          "block_id": "climate_air",
          "value": 25.325000000000003,
          "unit": "ug/m3",
          "geographic_scope": "city",
          "observed_at": "2026-07-15",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "lcsqa_geodair_e2_20260715",
          "source_url": "https://files.data.gouv.fr/ineris/lcsqa/concentrations-de-polluants-atmospheriques-reglementes/temps-reel/2026/FR_E2_2026-07-15.csv",
          "source_title": "Latest valid NO2 hourly station observation on the official LCSQA E2 current-day extract, mapped to the exact INSEE centre through an exact normalized station-name crosswalk to EEA station metadata.",
          "source_authority": "LCSQA / INERIS / AASQA France",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "air_quality_pm10_annual_ug_m3",
          "block_id": "climate_air",
          "value": 18.401446560771493,
          "unit": "ug/m3",
          "geographic_scope": "city",
          "observed_at": "2024",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "eea_aq_ereporting_fr_2024",
          "source_url": "https://air.discomap.eea.europa.eu/arcgis/rest/services/AirQuality/AirQualityDownloadServiceEUMonitoringStations/MapServer",
          "source_title": "2024 validated hourly NO2 station observations transformed to the exact INSEE commune centre by deterministic nearest-station selection and equal-weight aggregation.",
          "source_authority": "EEA Air Quality e-Reporting / France reporting via LCSQA",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "air_quality_pm25_annual_ug_m3",
          "block_id": "climate_air",
          "value": 9.69824528344845,
          "unit": "ug/m3",
          "geographic_scope": "city",
          "observed_at": "2024",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "eea_aq_ereporting_fr_2024",
          "source_url": "https://air.discomap.eea.europa.eu/arcgis/rest/services/AirQuality/AirQualityDownloadServiceEUMonitoringStations/MapServer",
          "source_title": "2024 validated hourly NO2 station observations transformed to the exact INSEE commune centre by deterministic nearest-station selection and equal-weight aggregation.",
          "source_authority": "EEA Air Quality e-Reporting / France reporting via LCSQA",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "climate_monthly_high_c",
          "block_id": "climate_air",
          "value": [
            12,
            13.1,
            16.4,
            18.7,
            22.6,
            26.9,
            29.5,
            29.3,
            25.2,
            20.7,
            15.7,
            12.5
          ],
          "unit": "°C",
          "geographic_scope": "city",
          "observed_at": "2020-12-31",
          "verified_at": "2026-07-27",
          "comparison_eligible": true,
          "source_id": "source-0a9fdf30ee4b",
          "source_url": "https://meteofrance.com/climat/normales/france/occitanie/MONTPELLIER-AEROPORT",
          "source_title": "Météo-France climate normal — mean monthly maximum air temperature, MONTPELLIER-AEROPORT, 1991-2020",
          "source_authority": "Météo-France",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "climate_monthly_low_c",
          "block_id": "climate_air",
          "value": [
            3.3,
            3.5,
            6.4,
            9.2,
            12.9,
            16.7,
            19.3,
            19,
            15.2,
            12.2,
            7.4,
            4.1
          ],
          "unit": "°C",
          "geographic_scope": "city",
          "observed_at": "2020-12-31",
          "verified_at": "2026-07-27",
          "comparison_eligible": true,
          "source_id": "source-4f9be30f929c",
          "source_url": "https://meteofrance.com/climat/normales/france/occitanie/MONTPELLIER-AEROPORT",
          "source_title": "Météo-France climate normal — mean monthly minimum air temperature, MONTPELLIER-AEROPORT, 1991-2020",
          "source_authority": "Météo-France",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "climate_monthly_mean_c",
          "block_id": "climate_air",
          "value": [
            7.6,
            8.3,
            11.4,
            13.9,
            17.8,
            21.8,
            24.4,
            24.1,
            20.2,
            16.4,
            11.6,
            8.3
          ],
          "unit": "°C",
          "geographic_scope": "nearest_station",
          "observed_at": "1991-12-31",
          "verified_at": "2026-07-31",
          "comparison_eligible": true,
          "source_id": "task-631-round2-2026-07-31:source:e9c99e930b140a78dcda507e4e50bedd",
          "source_url": "https://www.ncei.noaa.gov/data/oceans/archive/arc0216/0253808/1.1/data/0-data/Region-6-WMO-Normals-9120/France/CSV/MONTPELLIER_AEROPORT_07643.csv",
          "source_title": "WMO Climatological Normals 1991-2020 — station MONTPELLIER-AEROPORT",
          "source_authority": "World Meteorological Organization / NOAA NCEI",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "climate_monthly_precip_mm",
          "block_id": "climate_air",
          "value": [
            56.2,
            39.2,
            41.5,
            55.8,
            44,
            32.9,
            17.1,
            35.9,
            86.7,
            94.7,
            78.1,
            57.1
          ],
          "unit": "mm",
          "geographic_scope": "city",
          "observed_at": "2020-12-31",
          "verified_at": "2026-07-27",
          "comparison_eligible": true,
          "source_id": "source-ab1ea5b82434",
          "source_url": "https://meteofrance.com/climat/normales/france/occitanie/MONTPELLIER-AEROPORT",
          "source_title": "Météo-France climate normal — mean monthly precipitation, MONTPELLIER-AEROPORT, 1991-2020",
          "source_authority": "Météo-France",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "climate_monthly_sunshine_h",
          "block_id": "climate_air",
          "value": [
            145.567,
            170.067,
            218.833,
            228.6,
            271.367,
            315.683,
            344.8,
            305.067,
            246.617,
            175.483,
            145.733,
            137.4
          ],
          "unit": "hours",
          "geographic_scope": "city",
          "observed_at": "2020-12-31",
          "verified_at": "2026-07-27",
          "comparison_eligible": true,
          "source_id": "source-a70e369d1114",
          "source_url": "https://meteofrance.com/climat/normales/france/occitanie/MONTPELLIER-AEROPORT",
          "source_title": "Météo-France climate normal — mean monthly sunshine duration, MONTPELLIER-AEROPORT, 1991-2020",
          "source_authority": "Météo-France",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ]
    }
  }
}
