{
  "schemaVersion": 4,
  "study": {
    "slug": "wesel-2016-2026",
    "route": "/recherche/bodenrichtwert-entwicklung/nordrhein-westfalen/wesel-2016-2026",
    "districtCode": "05170",
    "districtName": "Kreis Wesel",
    "stateCode": "NW",
    "stateName": "Nordrhein-Westfalen",
    "dataStand": "2026-10-09",
    "evidenceTier": "B"
  },
  "primary": {
    "startYear": 2016,
    "endYear": 2026,
    "startEffectiveDate": "2016-01-01",
    "endEffectiveDate": "2026-01-01",
    "startEligible": 592,
    "endEligible": 726,
    "identifierPairs": 330,
    "startMedianEurM2": 192.5,
    "endMedianEurM2": 250,
    "medianDifferenceEurM2": 57.5,
    "medianDifferencePct": 29.8701,
    "municipalities": [
      {
        "municipalityCode": "05170004",
        "municipalityName": "Alpen",
        "startZoneCount": 26,
        "endZoneCount": 29,
        "startMedianEurM2": 90,
        "endMedianEurM2": 115,
        "nominalPct": 27.7778,
        "realPct": -2.6059
      },
      {
        "municipalityCode": "05170008",
        "municipalityName": "Dinslaken, Stadt",
        "startZoneCount": 119,
        "endZoneCount": 151,
        "startMedianEurM2": 215,
        "endMedianEurM2": 250,
        "nominalPct": 16.2791,
        "realPct": -11.3704
      },
      {
        "municipalityCode": "05170012",
        "municipalityName": "Hamminkeln, Stadt",
        "startZoneCount": 17,
        "endZoneCount": 26,
        "startMedianEurM2": 135,
        "endMedianEurM2": 160,
        "nominalPct": 18.5185,
        "realPct": -9.6634
      },
      {
        "municipalityCode": "05170016",
        "municipalityName": "Hünxe",
        "startZoneCount": 20,
        "endZoneCount": 26,
        "startMedianEurM2": 160,
        "endMedianEurM2": 167.5,
        "nominalPct": 4.6875,
        "realPct": -20.2056
      },
      {
        "municipalityCode": "05170020",
        "municipalityName": "Kamp-Lintfort, Stadt",
        "startZoneCount": 21,
        "endZoneCount": 28,
        "startMedianEurM2": 170,
        "endMedianEurM2": 222.5,
        "nominalPct": 30.8824,
        "realPct": -0.2395
      },
      {
        "municipalityCode": "05170024",
        "municipalityName": "Moers, Stadt",
        "startZoneCount": 256,
        "endZoneCount": 271,
        "startMedianEurM2": 210,
        "endMedianEurM2": 330,
        "nominalPct": 57.1429,
        "realPct": 19.7766
      },
      {
        "municipalityCode": "05170028",
        "municipalityName": "Neukirchen-Vluyn, Stadt",
        "startZoneCount": 25,
        "endZoneCount": 35,
        "startMedianEurM2": 170,
        "endMedianEurM2": 270,
        "nominalPct": 58.8235,
        "realPct": 21.0577
      },
      {
        "municipalityCode": "05170032",
        "municipalityName": "Rheinberg, Stadt",
        "startZoneCount": 22,
        "endZoneCount": 29,
        "startMedianEurM2": 165,
        "endMedianEurM2": 195,
        "nominalPct": 18.1818,
        "realPct": -9.92
      },
      {
        "municipalityCode": "05170036",
        "municipalityName": "Schermbeck",
        "startZoneCount": 11,
        "endZoneCount": 18,
        "startMedianEurM2": 205,
        "endMedianEurM2": 217.5,
        "nominalPct": 6.0976,
        "realPct": -19.1308
      },
      {
        "municipalityCode": "05170040",
        "municipalityName": "Sonsbeck",
        "startZoneCount": 6,
        "endZoneCount": 10,
        "startMedianEurM2": 140,
        "endMedianEurM2": 175,
        "nominalPct": 25,
        "realPct": -4.7231
      },
      {
        "municipalityCode": "05170044",
        "municipalityName": "Voerde (Niederrhein), Stadt",
        "startZoneCount": 24,
        "endZoneCount": 32,
        "startMedianEurM2": 150,
        "endMedianEurM2": 177.5,
        "nominalPct": 18.3333,
        "realPct": -9.8046
      },
      {
        "municipalityCode": "05170048",
        "municipalityName": "Wesel, Stadt",
        "startZoneCount": 31,
        "endZoneCount": 48,
        "startMedianEurM2": 165,
        "endMedianEurM2": 175,
        "nominalPct": 6.0606,
        "realPct": -19.159
      },
      {
        "municipalityCode": "05170052",
        "municipalityName": "Xanten, Stadt",
        "startZoneCount": 14,
        "endZoneCount": 23,
        "startMedianEurM2": 162.5,
        "endMedianEurM2": 190,
        "nominalPct": 16.9231,
        "realPct": -10.8795
      }
    ],
    "municipalityTotalStart": 13,
    "municipalityTotalEnd": 13,
    "qualifyingMunicipalities": 13,
    "municipalityCoverageStartPct": 100,
    "municipalityCoverageEndPct": 100,
    "nominalPct": 18.3333,
    "realPct": -9.8046,
    "inflationPct": 31.1966
  },
  "inventories": [
    {
      "year": 2016,
      "effectiveDate": "2016-01-01",
      "zoneCount": 592,
      "medianEurM2": 192.5,
      "realMedianEurM2": 192.5,
      "coveragePct": 81.5427,
      "distribution": {
        "min": 70,
        "p10": 120,
        "p25": 160,
        "median": 192.5,
        "p75": 225,
        "p90": 260,
        "max": 380
      }
    },
    {
      "year": 2017,
      "effectiveDate": "2017-01-01",
      "zoneCount": 598,
      "medianEurM2": 195,
      "realMedianEurM2": 191.92,
      "coveragePct": 82.3691,
      "distribution": {
        "min": 70,
        "p10": 120,
        "p25": 160,
        "median": 195,
        "p75": 225,
        "p90": 260,
        "max": 380
      }
    },
    {
      "year": 2018,
      "effectiveDate": "2018-01-01",
      "zoneCount": 608,
      "medianEurM2": 200,
      "realMedianEurM2": 194.19,
      "coveragePct": 83.7466,
      "distribution": {
        "min": 70,
        "p10": 120,
        "p25": 160,
        "median": 200,
        "p75": 230,
        "p90": 270,
        "max": 400
      }
    },
    {
      "year": 2019,
      "effectiveDate": "2019-01-01",
      "zoneCount": 612,
      "medianEurM2": 205,
      "realMedianEurM2": 196.4,
      "coveragePct": 84.2975,
      "distribution": {
        "min": 70,
        "p10": 120,
        "p25": 165,
        "median": 205,
        "p75": 240,
        "p90": 290,
        "max": 480
      }
    },
    {
      "year": 2020,
      "effectiveDate": "2020-01-01",
      "zoneCount": 613,
      "medianEurM2": 215,
      "realMedianEurM2": 201.64,
      "coveragePct": 84.4353,
      "distribution": {
        "min": 70,
        "p10": 125,
        "p25": 170,
        "median": 215,
        "p75": 250,
        "p90": 310,
        "max": 510
      }
    },
    {
      "year": 2021,
      "effectiveDate": "2021-01-01",
      "zoneCount": 620,
      "medianEurM2": 225,
      "realMedianEurM2": 208.51,
      "coveragePct": 85.3994,
      "distribution": {
        "min": 70,
        "p10": 125,
        "p25": 170,
        "median": 225,
        "p75": 270,
        "p90": 331,
        "max": 540
      }
    },
    {
      "year": 2022,
      "effectiveDate": "2022-01-01",
      "zoneCount": 710,
      "medianEurM2": 240,
      "realMedianEurM2": 213.54,
      "coveragePct": 97.7961,
      "distribution": {
        "min": 45,
        "p10": 119.5,
        "p25": 170,
        "median": 240,
        "p75": 300,
        "p90": 351,
        "max": 570
      }
    },
    {
      "year": 2023,
      "effectiveDate": "2023-01-01",
      "zoneCount": 725,
      "medianEurM2": 245,
      "realMedianEurM2": 200.63,
      "coveragePct": 99.8623,
      "distribution": {
        "min": 45,
        "p10": 112,
        "p25": 175,
        "median": 245,
        "p75": 300,
        "p90": 350,
        "max": 570
      }
    },
    {
      "year": 2024,
      "effectiveDate": "2024-01-01",
      "zoneCount": 725,
      "medianEurM2": 245,
      "realMedianEurM2": 195,
      "coveragePct": 99.8623,
      "distribution": {
        "min": 45,
        "p10": 120,
        "p25": 180,
        "median": 245,
        "p75": 300,
        "p90": 350,
        "max": 570
      }
    },
    {
      "year": 2025,
      "effectiveDate": "2025-01-01",
      "zoneCount": 725,
      "medianEurM2": 250,
      "realMedianEurM2": 194.51,
      "coveragePct": 99.8623,
      "distribution": {
        "min": 45,
        "p10": 120,
        "p25": 180,
        "median": 250,
        "p75": 310,
        "p90": 360,
        "max": 580
      }
    },
    {
      "year": 2026,
      "effectiveDate": "2026-01-01",
      "zoneCount": 726,
      "medianEurM2": 250,
      "realMedianEurM2": 190.55,
      "coveragePct": 100,
      "distribution": {
        "min": 45,
        "p10": 122.5,
        "p25": 180,
        "median": 250,
        "p75": 320,
        "p90": 370,
        "max": 590
      }
    }
  ],
  "gates": {
    "minimumMunicipalities": 5,
    "minimumZonesPerMunicipality": 5,
    "minimumMunicipalityCoveragePct": 80
  },
  "provenance": {
    "sourceAttribution": {
      "publisher": "Der Obere Gutachterausschuss für Grundstückswerte im Land Nordrhein-Westfalen",
      "sourceUrl": "https://open.nrw/dataset/0d478e49-0365-4a31-a4d7-09a5c3e73e35",
      "shortName": "BORIS NRW",
      "portalName": "Open.NRW",
      "licenseName": "Datenlizenz Deutschland – Zero – Version 2.0",
      "licenseUrl": "https://www.govdata.de/dl-de/zero-2-0",
      "attribution": "Bodenrichtwertinformationssystem Nordrhein-Westfalen (BORIS NRW)"
    },
    "inflation": {
      "series": "Verbraucherpreisindex für Deutschland, Gesamtindex, Januarwerte, Basis 2020 = 100",
      "sourceUrl": "https://www.destatis.de/DE/Themen/Wirtschaft/Preise/Verbraucherpreisindex/Publikationen/Downloads-Verbraucherpreise/statistischer-bericht-verbraucherpreisindex-lange-reihen-5611103.xlsx?__blob=publicationFile&v=29",
      "sourceSha256": "8c728e44fa400d762009fa34507a34e1fee3947641d2579484d7d040763b11f4"
    },
    "sourceSnapshot": {
      "path": "/recherche/bodenrichtwert-entwicklung/nordrhein-westfalen/wesel-2016-2026/eingangsdaten-kreis-wesel-2016-2026.json",
      "sha256": "34c124576c51bdd8a097fc4f0c1241d0dae8ca9d6c7152c10e166ce5b5384ea9",
      "contents": "Eingefrorene Recheneingaben: geeignete Wohnzonen beider Stichtage mit amtlicher Zonenkennung, Gemeinde, Wert und Stichtag."
    },
    "databaseTable": "public.bodenrichtwerte_de",
    "sourceRetrievedDate": "2026-10-09"
  },
  "checks": {
    "expectedTier": true,
    "expectedStartZones": true,
    "expectedEndZones": true,
    "expectedIdentifierPairs": true,
    "expectedMunicipalities": true,
    "expectedQualifyingMunicipalities": true,
    "sourceDistrictMatches": true,
    "endpointsHavePositiveValues": true,
    "allVintagesHaveInflation": true,
    "inventoriesOrdered": true,
    "tierBGatesHold": true,
    "tierCGateFailureRecorded": true
  }
}
