{
  "snapshot_id": "approved-static-813898688226d1e4",
  "schema_version": "immigrationdb-city-resource-v2",
  "generated_at": "2026-07-16",
  "canonical_path": "/cities/se/ulricehamn/",
  "mcp_uri": "immigrationdb://city/se/ulricehamn",
  "city": {
    "entity_id": "city:se:wikidata:Q382808",
    "name": "Ulricehamn",
    "country_code": "SE",
    "public_slug": "ulricehamn",
    "canonical_path": "/cities/se/ulricehamn/",
    "mcp_uri": "immigrationdb://city/se/ulricehamn",
    "page_state": "published",
    "useful_blocks": [
      "demographics",
      "mobility_admin",
      "climate_air",
      "work_income",
      "cost_living",
      "healthcare",
      "housing",
      "family_education"
    ],
    "useful_fact_count": 21,
    "city_tags": [],
    "profile_scores": {
      "remote": {
        "point": 68,
        "low": 55,
        "high": 81,
        "factors": {
          "legal_path": 88,
          "cost_pressure": 70,
          "housing": 49,
          "work": 72,
          "family": 75,
          "education": 85,
          "healthcare": 85,
          "safety": 40,
          "air": 81,
          "bureaucracy": 40
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null
        }
      },
      "digital_nomad": {
        "point": 63,
        "low": 50,
        "high": 76,
        "factors": {
          "legal_path": 54,
          "cost_pressure": 70,
          "housing": 49,
          "work": 72,
          "family": 75,
          "education": 85,
          "healthcare": 85,
          "safety": 40,
          "air": 81,
          "bureaucracy": 40
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null
        }
      },
      "family": {
        "point": 68,
        "low": 55,
        "high": 81,
        "factors": {
          "legal_path": 88,
          "cost_pressure": 70,
          "housing": 49,
          "work": 72,
          "family": 75,
          "education": 85,
          "healthcare": 85,
          "safety": 40,
          "air": 81,
          "bureaucracy": 40
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null
        }
      },
      "student": {
        "point": 69,
        "low": 56,
        "high": 82,
        "factors": {
          "legal_path": 88,
          "cost_pressure": 70,
          "housing": 49,
          "work": 72,
          "family": 75,
          "education": 85,
          "healthcare": 85,
          "safety": 40,
          "air": 81,
          "bureaucracy": 40
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null
        }
      },
      "retirement": {
        "point": 68,
        "low": 55,
        "high": 81,
        "factors": {
          "legal_path": 88,
          "cost_pressure": 70,
          "housing": 49,
          "work": 72,
          "family": 75,
          "education": 85,
          "healthcare": 85,
          "safety": 40,
          "air": 81,
          "bureaucracy": 40
        },
        "housing_budget": {
          "status": "unavailable",
          "currency": null,
          "fx_date": null,
          "normalized_monthly_eur": null,
          "source_id": null
        }
      }
    },
    "facts_by_block": {
      "climate_air": [
        {
          "metric_id": "air_quality_no2_annual_ug_m3",
          "block_id": "climate_air",
          "value": 2.7216522844805233,
          "unit": "ug/m3",
          "geographic_scope": "city",
          "observed_at": null,
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "smhi_natmodluft_2023:7d35ae5dfcb6",
          "source_url": "https://natmodluft.smhi.se/api/receptorsByMunicipality?municipality_name=Ulricehamn",
          "source_title": "Official SMHI 2023 national model values are derived from exact-kommun receptor/grid features.",
          "source_authority": "SMHI",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "air_quality_pm10_annual_ug_m3",
          "block_id": "climate_air",
          "value": 8.5156540663346,
          "unit": "ug/m3",
          "geographic_scope": "city",
          "observed_at": null,
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "smhi_natmodluft_2023:7d35ae5dfcb6",
          "source_url": "https://natmodluft.smhi.se/api/receptorsByMunicipality?municipality_name=Ulricehamn",
          "source_title": "Official SMHI 2023 national model values are derived from exact-kommun receptor/grid features.",
          "source_authority": "SMHI",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "air_quality_pm25_annual_ug_m3",
          "block_id": "climate_air",
          "value": 5.593357758245606,
          "unit": "ug/m3",
          "geographic_scope": "city",
          "observed_at": null,
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "smhi_natmodluft_2023:7d35ae5dfcb6",
          "source_url": "https://natmodluft.smhi.se/api/receptorsByMunicipality?municipality_name=Ulricehamn",
          "source_title": "Official SMHI 2023 national model values are derived from exact-kommun receptor/grid features.",
          "source_authority": "SMHI",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "climate_avg_temp_jan_c",
          "block_id": "climate_air",
          "value": -0.5,
          "unit": null,
          "geographic_scope": "city",
          "observed_at": "2026-06-12",
          "verified_at": "2026-06-12T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "smhi_climate_normal_1991_2020",
          "source_url": "https://immigrationdb.com/methodology/",
          "source_title": "smhi_climate_normal_1991_2020",
          "source_authority": "smhi_climate_normal_1991_2020",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "cost_living": [
        {
          "metric_id": "municipal_tax_rate_percent",
          "block_id": "cost_living",
          "value": 21.2,
          "unit": null,
          "geographic_scope": "city",
          "observed_at": "2026-06-12",
          "verified_at": "2026-06-12T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "skatteverket_kommunalskatt_2026",
          "source_url": "https://immigrationdb.com/methodology/",
          "source_title": "skatteverket_kommunalskatt_2026",
          "source_authority": "skatteverket_kommunalskatt_2026",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "demographics": [
        {
          "metric_id": "population_total",
          "block_id": "demographics",
          "value": 24954,
          "unit": "people",
          "geographic_scope": "city",
          "observed_at": "2024-12-31",
          "verified_at": "2026-06-12",
          "comparison_eligible": true,
          "source_id": "se_se_ulricehamn_stats",
          "source_url": "https://api.scb.se/OV0104/v1/doris/en/ssd/BE/BE0101/BE0101A/BefolkningCKM?kommun=1491",
          "source_title": "SCB Open Data API - BE0101A BefolkningCKM (Ulricehamn kommun)",
          "source_authority": "Ulricehamn, Sweden",
          "source_quality": "verified"
        }
      ],
      "family_education": [
        {
          "metric_id": "school_rating_avg",
          "block_id": "family_education",
          "value": 3.9,
          "unit": null,
          "geographic_scope": "city",
          "observed_at": "2026-06-12",
          "verified_at": "2026-06-12T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "skolverket_skolenhetsregistret_2025",
          "source_url": "https://immigrationdb.com/methodology/",
          "source_title": "skolverket_skolenhetsregistret_2025",
          "source_authority": "skolverket_skolenhetsregistret_2025",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "healthcare": [
        {
          "metric_id": "physicians_per_1000",
          "block_id": "healthcare",
          "value": 4,
          "unit": null,
          "geographic_scope": "city",
          "observed_at": "2026-06-12",
          "verified_at": "2026-06-12T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "socialstyrelsen_legitimerad_halso_2024",
          "source_url": "https://immigrationdb.com/methodology/",
          "source_title": "socialstyrelsen_legitimerad_halso_2024",
          "source_authority": "socialstyrelsen_legitimerad_halso_2024",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "housing": [
        {
          "metric_id": "rent_reference_eur_per_m2_month",
          "block_id": "housing",
          "value": 10.45,
          "unit": null,
          "geographic_scope": "city",
          "observed_at": "2026-06-12",
          "verified_at": "2026-06-12T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "scb_bo0501_hyresundersokning_2025",
          "source_url": "https://immigrationdb.com/methodology/",
          "source_title": "scb_bo0501_hyresundersokning_2025",
          "source_authority": "scb_bo0501_hyresundersokning_2025",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "identity": [
        {
          "metric_id": "car_density_per_1000",
          "block_id": "identity",
          "value": 588.402661,
          "unit": "cars/1000 residents",
          "geographic_scope": "city",
          "observed_at": "2025-12-31",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "scb_tk1001a_fordontrafik_2025",
          "source_url": "https://api.scb.se/OV0104/v1/doris/en/ssd/TK/TK1001/TK1001A/FordonTrafik",
          "source_title": "Official vehicles-in-use table: Fordonsslag=10 is passenger cars, stock at the last month of 2025; divided by official SCB population at 31 December 2025.",
          "source_authority": "Transport Analysis via Statistics Sweden (SCB PxWeb API)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "city_area_km2",
          "block_id": "identity",
          "value": 1050.4,
          "unit": "km2",
          "geographic_scope": "city",
          "observed_at": "2026-01-01",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "scb_be0101c_befarealtathetkon_2025",
          "source_url": "https://api.scb.se/OV0104/v1/doris/en/ssd/BE/BE0101/BE0101C/BefArealTathetKon",
          "source_title": "Official SCB population density per square kilometre at municipality grain. SCB states that it uses the population figure at 31 December with the following 1 January land-area figure.",
          "source_authority": "Statistics Sweden (SCB)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "foreign_population_total",
          "block_id": "identity",
          "value": 1317,
          "unit": "people",
          "geographic_scope": "city",
          "observed_at": "2025-12-31",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "scb_be0101f_utlmedbtotnkckm_2025",
          "source_url": "https://api.scb.se/OV0104/v1/doris/en/ssd/BE/BE0101/BE0101F/UtlmedbTotNKCKM",
          "source_title": "Official number of foreign citizens at municipality grain, all ages and all sexes, reference 31 December 2025.",
          "source_authority": "Statistics Sweden (SCB)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "population_density_per_km2",
          "block_id": "identity",
          "value": 23.8,
          "unit": "people/km2",
          "geographic_scope": "city",
          "observed_at": "2025-12-31",
          "verified_at": "2026-07-15",
          "comparison_eligible": true,
          "source_id": "scb_be0101c_befarealtathetkon_2025",
          "source_url": "https://api.scb.se/OV0104/v1/doris/en/ssd/BE/BE0101/BE0101C/BefArealTathetKon",
          "source_title": "Official SCB population density per square kilometre at municipality grain. SCB states that it uses the population figure at 31 December with the following 1 January land-area figure.",
          "source_authority": "Statistics Sweden (SCB)",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "mobility_admin": [
        {
          "metric_id": "immigration_processing_time_days",
          "block_id": "mobility_admin",
          "value": 90,
          "unit": null,
          "geographic_scope": "city",
          "observed_at": "2026-06-12",
          "verified_at": "2026-06-12T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "migrationsverket_handlaggningstider_q1_2026",
          "source_url": "https://immigrationdb.com/methodology/",
          "source_title": "migrationsverket_handlaggningstider_q1_2026",
          "source_authority": "migrationsverket_handlaggningstider_q1_2026",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "nearest_airport_destinations_count",
          "block_id": "mobility_admin",
          "value": 2,
          "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": "JKG",
          "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": 39.1,
          "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"
        },
        {
          "metric_id": "public_transport_score",
          "block_id": "mobility_admin",
          "value": 75,
          "unit": null,
          "geographic_scope": "city",
          "observed_at": "2026-06-12",
          "verified_at": "2026-06-12T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "trafikanalys_2025",
          "source_url": "https://immigrationdb.com/methodology/",
          "source_title": "trafikanalys_2025",
          "source_authority": "trafikanalys_2025",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ],
      "work_income": [
        {
          "metric_id": "fiber_coverage_pct",
          "block_id": "work_income",
          "value": 92.5,
          "unit": null,
          "geographic_scope": "city",
          "observed_at": "2026-06-12",
          "verified_at": "2026-06-12T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "pts_bredbandskartan_2025",
          "source_url": "https://immigrationdb.com/methodology/",
          "source_title": "pts_bredbandskartan_2025",
          "source_authority": "pts_bredbandskartan_2025",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "median_salary_eur_month",
          "block_id": "work_income",
          "value": 3480,
          "unit": null,
          "geographic_scope": "city",
          "observed_at": "2026-06-12",
          "verified_at": "2026-06-12T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "scb_slp_2024",
          "source_url": "https://immigrationdb.com/methodology/",
          "source_title": "scb_slp_2024",
          "source_authority": "scb_slp_2024",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        },
        {
          "metric_id": "unemployment_rate_percent",
          "block_id": "work_income",
          "value": 7.1,
          "unit": null,
          "geographic_scope": "city",
          "observed_at": "2026-06-12",
          "verified_at": "2026-06-12T00:00:00Z",
          "comparison_eligible": true,
          "source_id": "arbetsformedlingen_kommun_arbetsloshet_2025",
          "source_url": "https://immigrationdb.com/methodology/",
          "source_title": "arbetsformedlingen_kommun_arbetsloshet_2025",
          "source_authority": "arbetsformedlingen_kommun_arbetsloshet_2025",
          "source_type": "official",
          "source_badge": "Official source",
          "source_quality": "verified"
        }
      ]
    }
  }
}
