{
  "snapshot_id": "approved-static-a9a42ad2e4efba6d",
  "schema_version": "immigrationdb-city-resource-v2",
  "generated_at": "2026-07-18",
  "canonical_path": "/cities/dk/copenhagen/",
  "mcp_uri": "immigrationdb://city/dk/copenhagen",
  "city": {
    "entity_id": "city:dk:slug:copenhagen",
    "name": "Copenhagen",
    "country_code": "DK",
    "public_slug": "copenhagen",
    "canonical_path": "/cities/dk/copenhagen/",
    "mcp_uri": "immigrationdb://city/dk/copenhagen",
    "page_state": "published",
    "useful_blocks": [
      "mobility_admin",
      "safety",
      "work_income",
      "cost_living"
    ],
    "useful_fact_count": 16,
    "city_tags": [
      "capital",
      "million_plus",
      "student_hub",
      "migration_hub",
      "digital_nomad_hub",
      "economic_hub"
    ],
    "profile_scores": {
      "remote": {
        "point": 63,
        "low": 49,
        "high": 77,
        "factors": {
          "legal_path": 88,
          "cost_pressure": 79,
          "housing": 39,
          "work": 80,
          "family": 51,
          "education": 39,
          "healthcare": 39,
          "safety": 32,
          "air": 39,
          "bureaucracy": 39
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null
        }
      },
      "digital_nomad": {
        "point": 59,
        "low": 45,
        "high": 73,
        "factors": {
          "legal_path": 54,
          "cost_pressure": 79,
          "housing": 39,
          "work": 80,
          "family": 51,
          "education": 39,
          "healthcare": 39,
          "safety": 32,
          "air": 39,
          "bureaucracy": 39
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null
        }
      },
      "family": {
        "point": 44,
        "low": 30,
        "high": 58,
        "factors": {
          "legal_path": 54,
          "cost_pressure": 79,
          "housing": 39,
          "work": 80,
          "family": 51,
          "education": 39,
          "healthcare": 39,
          "safety": 32,
          "air": 39,
          "bureaucracy": 39
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null
        }
      },
      "student": {
        "point": 51,
        "low": 37,
        "high": 65,
        "factors": {
          "legal_path": 54,
          "cost_pressure": 79,
          "housing": 39,
          "work": 80,
          "family": 51,
          "education": 39,
          "healthcare": 39,
          "safety": 32,
          "air": 39,
          "bureaucracy": 39
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null
        }
      },
      "retirement": {
        "point": 48,
        "low": 34,
        "high": 62,
        "factors": {
          "legal_path": 88,
          "cost_pressure": 79,
          "housing": 39,
          "work": 80,
          "family": 51,
          "education": 39,
          "healthcare": 39,
          "safety": 32,
          "air": 39,
          "bureaucracy": 39
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null
        }
      }
    },
    "facts_by_block": {
      "cost_living": [
        {
          "metric_id": "english_portal_url",
          "block_id": "cost_living",
          "value": "https://www.nyidanmark.dk/",
          "unit": "url",
          "geographic_scope": "city",
          "observed_at": "2026-06-09",
          "verified_at": "2026-06-10T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "nyidanmark",
          "source_url": "https://www.nyidanmark.dk/en",
          "source_title": "nyidanmark.dk — Danish immigration portal (English)",
          "source_authority": "nyidanmark.dk",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "g05_foreign_born_share_pct",
          "block_id": "cost_living",
          "value": 23.21,
          "unit": "percent",
          "geographic_scope": "city",
          "observed_at": null,
          "verified_at": "2026-07-18",
          "comparison_eligible": true,
          "source_id": "source-49cfb3b01d18",
          "source_url": "https://api.statbank.dk/v1/data/FOLK1C/CSV?valuePresentation=CodeAndValue&timeOrder=Ascending&OMR%C3%85DE=101%2C084&K%C3%98N=TOT&ALDER=IALT&HERKOMST=TOT%2C4%2C3&IELAND=0000&Tid=2026K2",
          "source_title": "DK official material for g05_foreign_born_share_pct",
          "source_authority": "Statistics Denmark and official Danish public authorities",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "migration_background_share_percent",
          "block_id": "cost_living",
          "value": 29.1,
          "unit": "percent",
          "geographic_scope": "city",
          "observed_at": null,
          "verified_at": "2026-07-18",
          "comparison_eligible": true,
          "source_id": "source-49cfb3b01d18",
          "source_url": "https://api.statbank.dk/v1/data/FOLK1C/CSV?valuePresentation=CodeAndValue&timeOrder=Ascending&OMR%C3%85DE=101%2C084&K%C3%98N=TOT&ALDER=IALT&HERKOMST=TOT%2C4%2C3&IELAND=0000&Tid=2026K2",
          "source_title": "DK official material for g05_foreign_born_share_pct",
          "source_authority": "Statistics Denmark and official Danish public authorities",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "identity": [
        {
          "metric_id": "car_density_per_1000",
          "block_id": "identity",
          "value": 235,
          "unit": "cars/1000 residents",
          "geographic_scope": "city",
          "observed_at": "2026-01-01",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "dst_bil54_2026m01__dst_folk1a_2026k1",
          "source_url": "https://api.statbank.dk/v1/data",
          "source_title": "Derived stock density from DST BIL54 passenger-car stock and DST FOLK1A population. BIL54 is stock of passenger cars, not registrations, trips or ownership-only subset.",
          "source_authority": "Danmarks Statistik (DST)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "city_area_km2",
          "block_id": "identity",
          "value": 90.9,
          "unit": "km2",
          "geographic_scope": "city",
          "observed_at": "2026-01-01",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "dst_are207_2026",
          "source_url": "https://api.statbank.dk/v1/data",
          "source_title": "DST ARE207 Area 1 January; area based on the SDFE land register. Registered area is used; some lakes are excluded according to the table footnote.",
          "source_authority": "Danmarks Statistik (DST)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "foreign_population_share_percent",
          "block_id": "identity",
          "value": 20.7,
          "unit": "percent",
          "geographic_scope": "city",
          "observed_at": null,
          "verified_at": "2026-07-18",
          "comparison_eligible": true,
          "source_id": "source-b566acf62b32",
          "source_url": "https://api.statbank.dk/v1/data/FOLK1D/CSV?valuePresentation=CodeAndValue&timeOrder=Ascending&OMR%C3%85DE=101%2C084&K%C3%98N=TOT&ALDER=IALT&STATSB=TOT%2CUDLAND&Tid=2026K2",
          "source_title": "DK official material for foreign_population_share_percent",
          "source_authority": "Statistics Denmark and official Danish public authorities",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "foreign_population_total",
          "block_id": "identity",
          "value": 136901,
          "unit": "people",
          "geographic_scope": "city",
          "observed_at": "2026-01-01",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "dst_folk1d_2026k1_foreign_citizens",
          "source_url": "https://api.statbank.dk/v1/data",
          "source_title": "DST FOLK1D: population at the first day of the quarter, total sex, total age, STATSB=UDLAND (Foreign citizen). This is citizenship, not foreign-born or foreign-origin population.",
          "source_authority": "Danmarks Statistik (DST)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "population_density_per_km2",
          "block_id": "identity",
          "value": 7390,
          "unit": "people/km2",
          "geographic_scope": "city",
          "observed_at": "2026-01-01",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "dst_folk1a_2026k1__dst_are207_2026",
          "source_url": "https://api.statbank.dk/v1/data",
          "source_title": "Derived municipality density from DST population and ARE207 registered municipal area.",
          "source_authority": "Danmarks Statistik (DST)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "population_total",
          "block_id": "identity",
          "value": 660000,
          "unit": "people",
          "geographic_scope": "place",
          "observed_at": "2024-01-01",
          "verified_at": "2026-07-14",
          "comparison_eligible": true,
          "source_id": "Danmarks Statistik",
          "source_url": "https://www.dst.dk/da/TilSalg/data-til-forskning/generelt-om-data/dokumentation-af-data/hoejkvalitetsvariable/folketal/kom",
          "source_title": "DST KOM kommunekode source register; exact municipality row keyed by kommunekode.",
          "source_authority": "Danmarks Statistik",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "mobility_admin": [
        {
          "metric_id": "nearest_airport_destinations_count",
          "block_id": "mobility_admin",
          "value": 121,
          "unit": "count",
          "geographic_scope": "city",
          "observed_at": "2026-06-13",
          "verified_at": "2026-06-13",
          "comparison_eligible": true,
          "source_id": "openflights_routes_dat",
          "source_url": "https://raw.githubusercontent.com/jpatokal/openflights/master/data/routes.dat",
          "source_title": "OpenFlights — routes.dat — nearest_airport_destinations_count",
          "source_authority": "OpenFlights — routes.dat",
          "source_quality": "verified"
        },
        {
          "metric_id": "nearest_airport_iata",
          "block_id": "mobility_admin",
          "value": "CPH",
          "unit": "code",
          "geographic_scope": "city",
          "observed_at": "2026-06-13",
          "verified_at": "2026-06-13",
          "comparison_eligible": true,
          "source_id": "ourairports_airports_csv",
          "source_url": "https://davidmegginson.github.io/ourairports-data/airports.csv",
          "source_title": "OurAirports — airports.csv — nearest_airport_iata",
          "source_authority": "OurAirports — airports.csv",
          "source_quality": "verified"
        },
        {
          "metric_id": "nearest_airport_km",
          "block_id": "mobility_admin",
          "value": 8.5,
          "unit": "km",
          "geographic_scope": "city",
          "observed_at": "2026-06-13",
          "verified_at": "2026-06-13",
          "comparison_eligible": true,
          "source_id": "ourairports_airports_csv",
          "source_url": "https://davidmegginson.github.io/ourairports-data/airports.csv",
          "source_title": "OurAirports — airports.csv — nearest_airport_iata",
          "source_authority": "OurAirports — airports.csv",
          "source_quality": "verified"
        }
      ],
      "safety": [
        {
          "metric_id": "crime_incidents_per_100k",
          "block_id": "safety",
          "value": 9141,
          "unit": "incidents/100k residents",
          "geographic_scope": "city",
          "observed_at": null,
          "verified_at": "2026-07-18",
          "comparison_eligible": true,
          "source_id": "source-b5148139981a",
          "source_url": "https://api.statbank.dk/v1/data/STRAF11/CSV?valuePresentation=CodeAndValue&timeOrder=Ascending&OMR%C3%85DE=101&OVERTR%C3%86D=1&Tid=2025K1%2C2025K2%2C2025K3%2C2025K4",
          "source_title": "DK official material for crime_incidents_per_100k",
          "source_authority": "Statistics Denmark and official Danish public authorities",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "work_income": [
        {
          "metric_id": "broadband_gigabit_availability_percent",
          "block_id": "work_income",
          "value": 99.76,
          "unit": "percent",
          "geographic_scope": "city",
          "observed_at": null,
          "verified_at": "2026-07-18",
          "comparison_eligible": true,
          "source_id": "source-0d9b66e3c83f",
          "source_url": "https://digst.dk/media/55pkrfuo/2026_baggrundsdata_kommuner.xlsx",
          "source_title": "DK official material for broadband_gigabit_availability_percent",
          "source_authority": "Statistics Denmark and official Danish public authorities",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "disposable_income_per_capita_eur",
          "block_id": "work_income",
          "value": 39662,
          "unit": "EUR/year",
          "geographic_scope": "city",
          "observed_at": null,
          "verified_at": "2026-07-18",
          "comparison_eligible": true,
          "source_id": "source-5bec7028258f",
          "source_url": "https://api.statbank.dk/v1/data/INDKP106/CSV?valuePresentation=CodeAndValue&timeOrder=Ascending&OMR%C3%85DE=101&ENHED=118&KOEN=MOK&ALDER1=00&INDKINTB=000&Tid=2024",
          "source_title": "DK official material for disposable_income_per_capita_eur",
          "source_authority": "Statistics Denmark and official Danish public authorities",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "unemployment_total_percent",
          "block_id": "work_income",
          "value": 3.5,
          "unit": "percent",
          "geographic_scope": "city",
          "observed_at": null,
          "verified_at": "2026-07-18",
          "comparison_eligible": true,
          "source_id": "source-2b8a14ea62f5",
          "source_url": "https://api.statbank.dk/v1/data/AUP02/CSV?valuePresentation=CodeAndValue&timeOrder=Ascending&OMR%C3%85DE=101&ALDER=TOT&K%C3%98N=TOT&Tid=2025M11",
          "source_title": "DK official material for unemployment_total_percent",
          "source_authority": "Statistics Denmark and official Danish public authorities",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ]
    }
  }
}
