POST /api/bodenwertFür Entwickler
Ein Bodenrichtwert bezieht sich immer auf eine bestimmte bauliche Dichte — die wertrelevante Geschossflächenzahl (GFZ). Weicht die tatsächliche oder zulässige GFZ eines Grundstücks davon ab, ist der Wert nicht direkt übertragbar. Dieser Endpunkt nimmt den Bodenrichtwert, die Referenz-GFZ und die tatsächliche GFZ entgegen und berechnet daraus den tatsächlichen Bodenrichtwert (dichtekorrigiert, €/m²). Gibst du zusätzlich die Grundstücksfläche an, kommt der Bodenwert (Gesamtwert des Grundstücks, €) gleich mit.
Es ist eine reine Berechnung: kein Adress-Lookup, kein Datenabruf — und der Aufruf zählt nicht gegen dein Monatskontingent.
Request
POST https://api.bodenrichtwert.ai/api/bodenwert
Authorization: Bearer brw_pat_...
Content-Type: application/json
{
"brw": 450,
"gfz_referenz": 0.8,
"gfz_tatsaechlich": 1.2
}
Body-Felder
| Name | Pflicht | Typ | Beschreibung |
|---|---|---|---|
brw | ja | number | Amtlicher Bodenrichtwert in Euro pro Quadratmeter (>= 0) |
gfz_referenz | ja | number | Wertrelevante GFZ, auf die sich der Bodenrichtwert bezieht (> 0) |
gfz_tatsaechlich | ja | number | Tatsächliche bzw. zulässige GFZ des Grundstücks (> 0) |
flaeche | nein | number | Grundstücksfläche in m². Wenn gesetzt, wird zusätzlich der Bodenwert (Gesamtwert) zurückgegeben |
Zahlen können als JSON-Number (0.8) oder als String mit Punkt oder Komma ("0,8") übergeben werden.
Rechenmodell
Der Endpunkt nutzt die amtliche Standardformel für Umrechnungskoeffizienten — den Fallback der Gutachterausschüsse, wenn keine zonenspezifische Umrechnungstabelle vorliegt (u. a. ErbStH zu § 179 BewG):
K(GFZ) = 0,6 · √GFZ + 0,2 · GFZ + 0,2 (normiert: K(1,0) = 1,0)
BRW_tatsaechlich = BRW × K(gfz_tatsaechlich) / K(gfz_referenz)
Bodenwert = BRW_tatsaechlich × flaeche (nur mit flaeche)
Die Funktion ist nicht-linear: mit steigender Dichte wächst der Wert unterproportional (abnehmender Grenzwertzuwachs).
Response (200 OK)
Ohne flaeche liefert der Endpunkt den tatsächlichen Bodenrichtwert (€/m²):
{
"brw_input_euro_pro_m2": 450,
"gfz_referenz": 0.8,
"gfz_tatsaechlich": 1.2,
"koeffizient_referenz": 0.8967,
"koeffizient_tatsaechlich": 1.0973,
"faktor": 1.2237,
"bodenrichtwert_tatsaechlich_euro_pro_m2": 550.68,
"modell": "amtliche-standardformel",
"formel": "K(GFZ) = 0,6·√GFZ + 0,2·GFZ + 0,2 · BRW_neu = BRW × K(GFZ_ist) / K(GFZ_ref)",
"disclaimer": "Orientierende Umrechnung nach der Standardformel für Umrechnungskoeffizienten (0,6·√GFZ + 0,2·GFZ + 0,2; u. a. ErbStH zu § 179 BewG). Ersetzt NICHT die zonenspezifische amtliche Umrechnungstabelle des zuständigen Gutachterausschusses. Gutachterlicher Orientierungswert — kein Verkehrswert, kein Kaufpreis, keine Rechtsberatung."
}
Mit "flaeche": 500 im Body enthält die Antwort zusätzlich grundstuecksflaeche_m2 und bodenwert_euro (tatsächlicher Bodenrichtwert × Fläche).
Response-Felder
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
brw_input_euro_pro_m2 | number | ja | Der übergebene amtliche Bodenrichtwert |
gfz_referenz | number | ja | Referenz-GFZ (Eingabe) |
gfz_tatsaechlich | number | ja | Tatsächliche GFZ (Eingabe) |
koeffizient_referenz | number | ja | K(gfz_referenz) |
koeffizient_tatsaechlich | number | ja | K(gfz_tatsaechlich) |
faktor | number | ja | Umrechnungsfaktor K(ist) / K(ref) |
bodenrichtwert_tatsaechlich_euro_pro_m2 | number | ja | Tatsächlicher Bodenrichtwert für die angegebene GFZ (€/m²) |
grundstuecksflaeche_m2 | number | optional | Nur wenn flaeche übergeben wurde |
bodenwert_euro | number | optional | Bodenwert (Gesamtwert) = tatsächlicher Bodenrichtwert × flaeche, nur wenn flaeche übergeben wurde |
modell | string | ja | Verwendetes Modell, aktuell amtliche-standardformel |
formel | string | ja | Lesbare Formelbeschreibung |
hinweis | string | optional | Extrapolations-Hinweis, wenn eine GFZ außerhalb des üblichen Bereichs (0,1–3,0) liegt |
disclaimer | string | ja | Pflicht-Hinweis: orientierende Berechnung, kein Verkehrswert |
Woher kommt die Referenz-GFZ?
Bei einer Adressabfrage über GET /api/bodenrichtwert liefert das Feld wertrel_geschossflaechenzahl genau diese Referenz-GFZ. Nicht jeder Gutachterausschuss veröffentlicht sie maschinenlesbar:
| Kennzahl in der Antwort | Beispiel-Bundesländer |
|---|---|
wertrel_geschossflaechenzahl (WGFZ) | Berlin, Hessen, Baden-Württemberg, Hamburg |
geschossflaechenzahl (GFZ) | Brandenburg |
nur vollgeschosszahl (Vollgeschosse) | Nordrhein-Westfalen |
| keine Dichtekennzahl | u. a. Niedersachsen, Rheinland-Pfalz, Thüringen |
gfz_referenz übergeben. Vollgeschosse sind nicht dasselbe wie eine GFZ — die Formel ist ausschließlich für die GFZ definiert.Fehler
Alle Fehler folgen demselben Format: { "error": "<code>", "message": "<Beschreibung>", "status": <HTTP-Status> }.
| Status | Code | Bedeutung |
|---|---|---|
400 | invalid_json | Der Request-Body ist kein gültiges JSON |
400 | invalid_body | Der Request-Body ist kein JSON-Objekt |
400 | missing_parameter | Ein Pflichtfeld (brw, gfz_referenz, gfz_tatsaechlich) fehlt im Body |
400 | invalid_brw | brw ist keine Zahl oder < 0 |
400 | invalid_gfz_referenz | gfz_referenz ist keine Zahl oder <= 0 |
400 | invalid_gfz_tatsaechlich | gfz_tatsaechlich ist keine Zahl oder <= 0 |
400 | invalid_flaeche | flaeche ist gesetzt, aber keine Zahl oder <= 0 |
401 | missing_token | Authorization: Bearer <token>-Header fehlt |
401 | invalid_token | Token ungültig oder abgelaufen |
429 | rate_limit_exceeded | Zu viele Requests pro Minute (120/min IP-Limit) — Retry-After-Header beachten |
500 | internal_server_error | Unerwarteter Fehler |
Auch als MCP-Tool
Dieselbe Berechnung steht im MCP-Server als Tool calculate_bodenwert bereit (Parameter brw, gfz_referenz, gfz_tatsaechlich, optional flaeche) — praktisch, um in ChatGPT oder Claude direkt vom abgefragten Wert zum tatsächlichen Bodenrichtwert und Bodenwert zu kommen.