[{"data":1,"prerenderedAt":645},["ShallowReactive",2],{"blog-\u002Fblog\u002Fboris-d-programmatisch-nutzen":3,"blog-surround-\u002Fblog\u002Fboris-d-programmatisch-nutzen":634},{"id":4,"title":5,"authors":6,"body":10,"category":621,"date":622,"description":623,"draft":624,"extension":625,"image":626,"meta":627,"navigation":628,"path":629,"seo":630,"series":631,"stem":632,"updated":631,"__hash__":633},"blog\u002F3.blog\u002F7.boris-d-programmatisch-nutzen.md","BORIS-D programmatisch nutzen — der vollständige Leitfaden",[7],{"name":8,"to":9},"Sören Uhrbach","mailto:soeren@bodenrichtwert.ai",{"type":11,"value":12,"toc":609},"minimark",[13,25,28,64,69,77,97,101,104,109,112,116,131,135,162,165,169,183,189,199,205,209,214,243,251,492,495,531,560,564,585,589,592,605],[14,15,16,17,24],"p",{},"Du baust eine Immobilien-App, ein Bewertungstool oder einen internen Workflow — und der Kunde will Bodenrichtwerte. Die Daten sind öffentlich, das Portal heißt ",[18,19,23],"a",{"href":20,"rel":21},"https:\u002F\u002Fwww.bodenrichtwerte-boris.de",[22],"nofollow","BORIS-D",". Eine dokumentierte API gibt es nicht.",[14,26,27],{},"Dieser Leitfaden erklärt, wie der Datenfluss hinter BORIS-D tatsächlich funktioniert, welche Fallstricke eine Eigenintegration hat — rechtlich wie technisch — und wie der Weg über eine gepflegte API aussieht. Wer es eilig hat:",[29,30,35],"pre",{"className":31,"code":32,"language":33,"meta":34,"style":34},"language-bash shiki shiki-themes github-light","curl -H \"Authorization: Bearer brw_live_...\" \\\n  \"https:\u002F\u002Fapi.bodenrichtwert.ai\u002Fapi\u002Fbodenrichtwert?address=Platz%20der%20Menschenrechte%201%2C%2030159%20Hannover\"\n","bash","",[36,37,38,58],"code",{"__ignoreMap":34},[39,40,43,47,51,55],"span",{"class":41,"line":42},"line",1,[39,44,46],{"class":45},"s7eDp","curl",[39,48,50],{"class":49},"sYu0t"," -H",[39,52,54],{"class":53},"sYBdl"," \"Authorization: Bearer brw_live_...\"",[39,56,57],{"class":49}," \\\n",[39,59,61],{"class":41,"line":60},2,[39,62,63],{"class":53},"  \"https:\u002F\u002Fapi.bodenrichtwert.ai\u002Fapi\u002Fbodenrichtwert?address=Platz%20der%20Menschenrechte%201%2C%2030159%20Hannover\"\n",[65,66,68],"h2",{"id":67},"was-boris-d-ist-und-was-nicht","Was BORIS-D ist (und was nicht)",[14,70,71,72,76],{},"BORIS-D ist das länderübergreifende Portal der Gutachterausschüsse für Bodenrichtwerte — ein ",[73,74,75],"strong",{},"Karten-Frontend",", kein Datendienst. Es ist für Menschen gebaut, die zoomen und klicken. Es gibt:",[78,79,80,84,87,90],"ul",{},[81,82,83],"li",{},"keine öffentlich dokumentierte REST-API,",[81,85,86],{},"keine Versionierung und keine Stabilitätsgarantien für die internen Endpunkte,",[81,88,89],{},"keinen einheitlichen Datenstandard über alle Bundesländer (Feldnamen, Befüllung und Layer-Struktur variieren),",[81,91,92,93,96],{},"und ",[73,94,95],{},"keine Vollabdeckung",": Bayern führt mit BORIS Bayern ein eigenes Landesportal außerhalb des BORIS-D-Verbunds und ist darüber technisch nicht adressierbar; Schleswig-Holstein und Sachsen fehlt bislang die schriftliche Einwilligung der zuständigen Gutachterausschüsse zur Weiterverarbeitung der Daten.",[65,98,100],{"id":99},"der-datenfluss-in-drei-schritten","Der Datenfluss in drei Schritten",[14,102,103],{},"Wer eine Adresse in einen Bodenrichtwert übersetzen will, durchläuft konzeptionell drei Stationen:",[105,106,108],"h3",{"id":107},"_1-adress-vervollständigung-bkg-suggest","1. Adress-Vervollständigung (BKG Suggest)",[14,110,111],{},"Freitext-Eingaben („königsallee 1 düsseldorf\") müssen zu einer eindeutigen, amtlichen Adresse aufgelöst werden. Das übernimmt der Geokodierungsdienst des Bundesamts für Kartographie und Geodäsie (BKG).",[105,113,115],{"id":114},"_2-geocoding-nach-utm32-epsg25832","2. Geocoding nach UTM32 (EPSG:25832)",[14,117,118,119,122,123,126,127,130],{},"Die aufgelöste Adresse wird in Koordinaten übersetzt — aber nicht in das gewohnte WGS84 (",[36,120,121],{},"lat","\u002F",[36,124,125],{},"lon","), sondern in ",[73,128,129],{},"ETRS89\u002FUTM Zone 32N (EPSG:25832)",", das Koordinatensystem der deutschen Vermessungsverwaltungen. Wer hier WGS84-Koordinaten einsetzt, bekommt keine Fehlermeldung, sondern stillschweigend falsche Treffer — der Klassiker unter den Integrationsfehlern.",[105,132,134],{"id":133},"_3-flächenabfrage-arcgis-identify","3. Flächenabfrage (ArcGIS Identify)",[14,136,137,138,141,142,141,145,141,148,141,151,141,154,157,158,161],{},"Mit der UTM32-Koordinate fragst du den ArcGIS-Server des jeweiligen Landes-GIS, welche Bodenrichtwert-Zonen den Punkt überlappen. Die Antwort ist rohes ArcGIS-JSON: kryptische Feldkürzel (",[36,139,140],{},"BRW",", ",[36,143,144],{},"STAG",[36,146,147],{},"BRN",[36,149,150],{},"BZN",[36,152,153],{},"GFZ",[36,155,156],{},"WGF",", …), je nach Bundesland unterschiedlich befüllt, teils mit leeren Pflichtfeldern. Ein Punkt kann mehrere Zonen treffen — etwa eine Sonderbaufläche ",[73,159,160],{},"und"," eine flächendeckende Forst-Zone.",[14,163,164],{},"Für die Anzeige brauchst du die Koordinaten anschließend wieder in WGS84 — die UTM32→WGS84-Rückrechnung (Karney\u002FKrüger) gehört also auch noch in den Stack.",[65,166,168],{"id":167},"die-fallstricke-einer-eigenintegration","Die Fallstricke einer Eigenintegration",[14,170,171,174,175,178,179,182],{},[73,172,173],{},"Rechtlich — der wichtigste Punkt zuerst."," Die BORIS-D-Nutzungsbedingungen gestatten den Abruf nur über die Funktionen des Portals selbst. Die Daten stehen zwar unter der offenen Datenlizenz Deutschland (dl-de\u002Fby-2-0) mit Namensnennungspflicht, der ",[73,176,177],{},"automatisierte Zugriff auf das Portal ist davon aber nicht gedeckt",". Für ein Wochenend-Experiment mag das akademisch klingen; für ein Kundenprojekt ist es ein Risiko, das bei einer Eigenintegration allein bei dir liegt. ",[180,181],"brand-name",{}," stellt die Werte stattdessen normalisiert bereit, mit vollständiger Namensnennung nach dl-de\u002Fby-2-0 in jeder Antwort.",[14,184,185,188],{},[73,186,187],{},"Wartung."," Die internen Endpunkte können sich jederzeit ändern — ohne Changelog, ohne Deprecation-Fenster. Deine Integration bricht dann nicht in der Entwicklung, sondern im Betrieb beim Kunden. Realistischer Aufwand für einen robusten Eigenbau: 2–3 Tage initial, plus laufende Pflege bei jedem Upstream-Update.",[14,190,191,194,195,198],{},[73,192,193],{},"Normalisierung."," Alle Bundesländer liefern eigene Varianten. Felder wie ",[36,196,197],{},"gutachterausschuss"," sind in manchen Ländern schlicht leer, Nutzungsarten-Codes sind upstream teils irreführend belegt. Wer saubere, einheitliche Daten will, schreibt eine Normalisierungsschicht — und pflegt sie pro Bundesland.",[14,200,201,204],{},[73,202,203],{},"Abdeckung."," SH, SN und BY musst du selbst erkennen und sauber behandeln, sonst liefert deine App dort stillschweigend nichts — oder Falsches.",[65,206,208],{"id":207},"der-weg-über-die-api","Der Weg über die API",[14,210,211,213],{},[180,212],{}," kapselt genau diese Pipeline — Geocoding, Koordinatentransformation, Identify, Normalisierung, Caching — hinter einem einzigen Endpunkt:",[29,215,219],{"className":216,"code":217,"language":218,"meta":34,"style":34},"language-http shiki shiki-themes github-light","GET https:\u002F\u002Fapi.bodenrichtwert.ai\u002Fapi\u002Fbodenrichtwert?address=...&nutzungsart=W\nAuthorization: Bearer brw_live_...\n","http",[36,220,221,231],{"__ignoreMap":34},[39,222,223,227],{"class":41,"line":42},[39,224,226],{"class":225},"sD7c4","GET",[39,228,230],{"class":229},"sgsFI"," https:\u002F\u002Fapi.bodenrichtwert.ai\u002Fapi\u002Fbodenrichtwert?address=...&nutzungsart=W\n",[39,232,233,237,240],{"class":41,"line":60},[39,234,236],{"class":235},"shJU0","Authorization",[39,238,239],{"class":225},":",[39,241,242],{"class":53}," Bearer brw_live_...\n",[14,244,245,246,250],{},"Die Antwort ist normalisiertes JSON, einheitlich über alle verfügbaren Bundesländer (hier gekürzt — das vollständige Schema steht in der ",[18,247,249],{"href":248},"\u002Fdocs\u002Fentwickler-einstieg\u002Frest-api\u002Fbodenrichtwert","Endpoint-Referenz","):",[29,252,256],{"className":253,"code":254,"language":255,"meta":34,"style":34},"language-json shiki shiki-themes github-light","{\n  \"address_resolved\": \"Platz der Menschenrechte 1, 30159 Hannover - Mitte\",\n  \"coordinates\": { \"lat\": 52.368, \"lon\": 9.737 },\n  \"bodenrichtwerte\": [\n    {\n      \"nutzungsart\": \"Sonderbaufläche\",\n      \"code\": \"S\",\n      \"brw_euro_pro_m2\": 800,\n      \"stichtag\": \"2025-01-01\",\n      \"gemeinde\": \"Hannover\",\n      \"bodenrichtwertnummer\": \"04305204\",\n      \"zonenbezeichnung\": \"Regierungsviertel\"\n    }\n  ],\n  \"attribution\": {\n    \"text\": \"© Daten der Gutachterausschüsse für Grundstückswerte 2025, dl-de\u002Fby-2-0\",\n    \"license_url\": \"https:\u002F\u002Fwww.govdata.de\u002Fdl-de\u002Fby-2-0\",\n    \"year\": 2025\n  },\n  \"disclaimer\": \"Der Bodenrichtwert ist ein gutachterlicher Orientierungswert — kein Verkehrswert, kein Verkaufspreis, keine Rechtsberatung. Stichtag pro Eintrag beachten.\"\n}\n","json",[36,257,258,263,277,307,316,322,335,348,361,374,387,400,411,417,423,432,445,458,469,475,486],{"__ignoreMap":34},[39,259,260],{"class":41,"line":42},[39,261,262],{"class":229},"{\n",[39,264,265,268,271,274],{"class":41,"line":60},[39,266,267],{"class":49},"  \"address_resolved\"",[39,269,270],{"class":229},": ",[39,272,273],{"class":53},"\"Platz der Menschenrechte 1, 30159 Hannover - Mitte\"",[39,275,276],{"class":229},",\n",[39,278,280,283,286,289,291,294,296,299,301,304],{"class":41,"line":279},3,[39,281,282],{"class":49},"  \"coordinates\"",[39,284,285],{"class":229},": { ",[39,287,288],{"class":49},"\"lat\"",[39,290,270],{"class":229},[39,292,293],{"class":49},"52.368",[39,295,141],{"class":229},[39,297,298],{"class":49},"\"lon\"",[39,300,270],{"class":229},[39,302,303],{"class":49},"9.737",[39,305,306],{"class":229}," },\n",[39,308,310,313],{"class":41,"line":309},4,[39,311,312],{"class":49},"  \"bodenrichtwerte\"",[39,314,315],{"class":229},": [\n",[39,317,319],{"class":41,"line":318},5,[39,320,321],{"class":229},"    {\n",[39,323,325,328,330,333],{"class":41,"line":324},6,[39,326,327],{"class":49},"      \"nutzungsart\"",[39,329,270],{"class":229},[39,331,332],{"class":53},"\"Sonderbaufläche\"",[39,334,276],{"class":229},[39,336,338,341,343,346],{"class":41,"line":337},7,[39,339,340],{"class":49},"      \"code\"",[39,342,270],{"class":229},[39,344,345],{"class":53},"\"S\"",[39,347,276],{"class":229},[39,349,351,354,356,359],{"class":41,"line":350},8,[39,352,353],{"class":49},"      \"brw_euro_pro_m2\"",[39,355,270],{"class":229},[39,357,358],{"class":49},"800",[39,360,276],{"class":229},[39,362,364,367,369,372],{"class":41,"line":363},9,[39,365,366],{"class":49},"      \"stichtag\"",[39,368,270],{"class":229},[39,370,371],{"class":53},"\"2025-01-01\"",[39,373,276],{"class":229},[39,375,377,380,382,385],{"class":41,"line":376},10,[39,378,379],{"class":49},"      \"gemeinde\"",[39,381,270],{"class":229},[39,383,384],{"class":53},"\"Hannover\"",[39,386,276],{"class":229},[39,388,390,393,395,398],{"class":41,"line":389},11,[39,391,392],{"class":49},"      \"bodenrichtwertnummer\"",[39,394,270],{"class":229},[39,396,397],{"class":53},"\"04305204\"",[39,399,276],{"class":229},[39,401,403,406,408],{"class":41,"line":402},12,[39,404,405],{"class":49},"      \"zonenbezeichnung\"",[39,407,270],{"class":229},[39,409,410],{"class":53},"\"Regierungsviertel\"\n",[39,412,414],{"class":41,"line":413},13,[39,415,416],{"class":229},"    }\n",[39,418,420],{"class":41,"line":419},14,[39,421,422],{"class":229},"  ],\n",[39,424,426,429],{"class":41,"line":425},15,[39,427,428],{"class":49},"  \"attribution\"",[39,430,431],{"class":229},": {\n",[39,433,435,438,440,443],{"class":41,"line":434},16,[39,436,437],{"class":49},"    \"text\"",[39,439,270],{"class":229},[39,441,442],{"class":53},"\"© Daten der Gutachterausschüsse für Grundstückswerte 2025, dl-de\u002Fby-2-0\"",[39,444,276],{"class":229},[39,446,448,451,453,456],{"class":41,"line":447},17,[39,449,450],{"class":49},"    \"license_url\"",[39,452,270],{"class":229},[39,454,455],{"class":53},"\"https:\u002F\u002Fwww.govdata.de\u002Fdl-de\u002Fby-2-0\"",[39,457,276],{"class":229},[39,459,461,464,466],{"class":41,"line":460},18,[39,462,463],{"class":49},"    \"year\"",[39,465,270],{"class":229},[39,467,468],{"class":49},"2025\n",[39,470,472],{"class":41,"line":471},19,[39,473,474],{"class":229},"  },\n",[39,476,478,481,483],{"class":41,"line":477},20,[39,479,480],{"class":49},"  \"disclaimer\"",[39,482,270],{"class":229},[39,484,485],{"class":53},"\"Der Bodenrichtwert ist ein gutachterlicher Orientierungswert — kein Verkehrswert, kein Verkaufspreis, keine Rechtsberatung. Stichtag pro Eintrag beachten.\"\n",[39,487,489],{"class":41,"line":488},21,[39,490,491],{"class":229},"}\n",[14,493,494],{},"Drei Design-Entscheidungen, die im Projektalltag den Unterschied machen:",[78,496,497,507,517],{},[81,498,499,502,503,506],{},[73,500,501],{},"Attribution ist Teil der Response."," Die Namensnennung nach dl-de\u002Fby-2-0 ist Lizenzpflicht — du kannst das ",[36,504,505],{},"attribution","-Objekt direkt in dein UI durchreichen, statt sie zu vergessen.",[81,508,509,512,513,516],{},[73,510,511],{},"Mehrere Zonen pro Punkt sind ein Array,"," keine stillschweigend gewählte „beste\" Zone. Mit ",[36,514,515],{},"nutzungsart=W"," filterst du serverseitig auf Wohnbauflächen.",[81,518,519,525,526,530],{},[73,520,521,522],{},"SH\u002FSN\u002FBY antworten mit ",[36,523,524],{},"451 restricted_state"," — ein dokumentierter, stabiler Statuscode statt leerer Ergebnisse. Wie du ihn behandelst: ",[18,527,529],{"href":528},"\u002Fdocs\u002Fentwickler-einstieg\u002Ferror-451","Error-451-Guide",".",[14,532,533,534,141,537,141,540,141,543,546,547,550,551,555,556,559],{},"Die übrigen Fehlercodes (",[36,535,536],{},"400 missing_address",[36,538,539],{},"402 limit_reached",[36,541,542],{},"429 rate_limit_exceeded",[36,544,545],{},"500 processing_error",") sind ebenso ",[18,548,549],{"href":248},"dokumentiert",", die Spec gibt es als ",[18,552,554],{"href":553},"\u002Fdocs\u002Fentwickler-einstieg\u002Fopenapi","OpenAPI 3.1",". Antworten werden serverseitig 7 Tage zwischengespeichert; ob eine Antwort aus dem Cache kam, zeigt das Feld ",[36,557,558],{},"cache_hit"," in der JSON-Response — kein HTTP-Header. Die kurze TTL ist bewusst gewählt, damit Stichtags-Updates zeitnah durchschlagen.",[65,561,563],{"id":562},"alternative-mcp-statt-rest","Alternative: MCP statt REST",[14,565,566,567,571,572,575,576,580,581,530],{},"Landen die Bodenrichtwerte nicht in einer klassischen App, sondern direkt in Claude, einem Agenten-Framework oder einem internen Copiloten, ist die REST-Anbindung oben nicht der einzige Weg. Der ",[18,568,570],{"href":569},"\u002Fdocs\u002Fentwickler-einstieg\u002Fmcp-server","MCP-Server"," unter ",[36,573,574],{},"https:\u002F\u002Fmcp.bodenrichtwert.ai\u002Fmcp"," spricht Streamable HTTP mit OAuth-Discovery — Clients wie Claude Desktop verbinden sich ohne Konfigurationsdatei und ohne dass du das Werkzeug manuell definierst. Was das für KI-Agenten konkret ändert und wann sich MCP gegenüber REST lohnt: ",[18,577,579],{"href":578},"\u002Fblog\u002Fmcp-server-integrieren","MCP-Server-Leitfaden",". Für n8n, LangChain, Zapier\u002FMake und Python gibt es fertige ",[18,582,584],{"href":583},"\u002Fdocs\u002Fcookbooks","Cookbook-Rezepte",[65,586,588],{"id":587},"fazit","Fazit",[14,590,591],{},"Du kannst die BORIS-D-Pipeline selbst nachbauen — die drei Schritte oben sind das vollständige Rezept. Kalkuliere dafür 2–3 Tage Erstaufwand, eine Normalisierungsschicht pro Bundesland, laufende Wartung gegen einen undokumentierten Upstream und die ungeklärte Rechtslage des automatisierten Portal-Zugriffs.",[14,593,594,595,599,600,604],{},"Oder du nimmst den Endpunkt, der genau das als Produkt betreibt: ",[18,596,598],{"href":597},"\u002Flogin","Token generieren",", curl-Beispiel von oben einsetzen, erste Response in unter einer Minute — die ersten Abfragen sind im ",[18,601,603],{"href":602},"\u002Fpricing","14-Tage-Trial"," frei.",[606,607,608],"style",{},"html pre.shiki code .s7eDp, html code.shiki .s7eDp{--shiki-default:#6F42C1}html pre.shiki code .sYu0t, html code.shiki .sYu0t{--shiki-default:#005CC5}html pre.shiki code .sYBdl, html code.shiki .sYBdl{--shiki-default:#032F62}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sgsFI, html code.shiki .sgsFI{--shiki-default:#24292E}html pre.shiki code .sD7c4, html code.shiki .sD7c4{--shiki-default:#D73A49}html pre.shiki code .shJU0, html code.shiki .shJU0{--shiki-default:#22863A}",{"title":34,"searchDepth":279,"depth":279,"links":610},[611,612,617,618,619,620],{"id":67,"depth":60,"text":68},{"id":99,"depth":60,"text":100,"children":613},[614,615,616],{"id":107,"depth":279,"text":108},{"id":114,"depth":279,"text":115},{"id":133,"depth":279,"text":134},{"id":167,"depth":60,"text":168},{"id":207,"depth":60,"text":208},{"id":562,"depth":60,"text":563},{"id":587,"depth":60,"text":588},"Entwickler","2026-08-29","Wie der Datenfluss hinter deutschen Bodenrichtwerten wirklich funktioniert — BKG-Geocoding, ArcGIS-Identify, Koordinatensysteme — und was du bei einer eigenen Integration beachten musst.",false,"md","\u002Fblog\u002Fboris-d-programmatisch-nutzen.webp",{},true,"\u002Fblog\u002Fboris-d-programmatisch-nutzen",{"title":5,"description":623},null,"3.blog\u002F7.boris-d-programmatisch-nutzen","SlCTV0ItaO51cRfsH5G0c7zNgFsr1TieT_VSOcTWmeE",[635,640],{"title":636,"path":637,"stem":638,"description":639,"series":631,"children":-1},"Vorderland und Hinterland: Wenn dein Grundstück tiefer ist als die Zone","\u002Fblog\u002Fvorderland-hinterland-bodenwert","3.blog\u002F29.vorderland-hinterland-bodenwert","Nicht jedes Grundstück passt exakt auf die Zone, für die der Bodenrichtwert gilt — bei überdurchschnittlicher Tiefe zählen Vorderland und Hinterland unterschiedlich viel. Wie groß der Unterschied ausfällt, entscheidet der zuständige Gutachterausschuss — und wie weit dessen Vorgabe trägt, zeigt ein aktuelles Urteil des Bundesfinanzhofs.",{"title":641,"path":642,"stem":643,"description":644,"series":631,"children":-1},"Bodenrichtwert für deine Stadt finden — so geht's für so gut wie jede Adresse","\u002Fblog\u002Fbodenrichtwert-fuer-deine-stadt-finden","3.blog\u002F25.bodenrichtwert-fuer-deine-stadt-finden","Köln, Düsseldorf, Berlin, Hamburg oder ein Dorf in der Eifel — so findest du den amtlichen Bodenrichtwert für so gut wie jede deutsche Adresse, mit Stichtag und Quelle.",1787435676769]