Somantic API-Dokumentation
Zwei REST/GraphQL-Endpunkte für deutsche Immobiliendaten und sofortige Immobilienbewertungen. Authentifizierung über einen einzigen API-Schlüssel.
Einführung
Alle Endpunkte teilen sich die Basis-URL https://www.somantic.net/api. Anfragen und Antworten erfolgen im JSON-Format. Erstelle zunächst einen kostenlosen API-Schlüssel im Entwickler-Dashboard – auf der BASIC-Stufe ohne Kreditkarte.
| Produkt | Methode | Endpunkt |
|---|---|---|
| Immobiliendaten-API | POST | /graphql |
| Immobilienbewertungs-API | POST | /estimate |
Authentifizierung
Übergib deinen geheimen Schlüssel bei jeder Anfrage im X-API-Key-Header. Alternativ wird auch ein Bearer-Token im Authorization-Header akzeptiert. Schlüssel haben die Form som_live_… und werden nur einmal bei der Erstellung angezeigt – bewahre sie sicher auf und gib sie niemals im Client-Code preis.
X-API-Key: som_live_DEIN_SCHLUESSEL
# oder
Authorization: Bearer som_live_DEIN_SCHLUESSELKontingente & Limits
Jede API wird separat auf Monatsbasis abgerechnet. Die Nutzung wird zu Beginn jedes Kalendermonats zurückgesetzt und ist in deinem Dashboard sichtbar. Auf der kostenlosen FREE-Stufe gibt die API nach Erreichen des inkludierten Kontingents 429 Too Many Requests zurück, bis du upgradest. Bezahlte Stufen liefern weiterhin Anfragen aus und rechnen Mehrverbrauch pro Anfrage ab. Alle Preise netto zzgl. 19% MwSt.
| Stufe | Daten-API / Mon. | Bewertungs-API / Mon. | Mehrverbrauch | Anf. / Sek. |
|---|---|---|---|---|
| FREE (kostenlos) | 50 | 25 | — | 2 |
| STARTER | 400 | 400 | 0,0085 € / Anf. | 5 |
| GROWTH | 2.500 | 2.000 | 0,0055 / 0,007 € / Anf. | 15 |
| SCALE | 10.000 | 8.000 | 0,004 € / Anf. | 40 |
| BUSINESS | 30.000 | 25.000 | 0,003 € / Anf. | 80 |
Immobiliendaten-API (GraphQL)
Ein flexibler GraphQL-Endpunkt über aggregierte deutsche Inserate für Häuser und Wohnungen – von Immobilienscout24, Immowelt, Kleinanzeigen, Ohne Makler, Immobilien.de, Wohnung-Jetzt und weiteren Portalen. Jedes Inserat wird mit dem fairen Schätzwert unseres SOM-Modells (som_model_price), der Abweichung vom Markt (som_model_percentage) sowie Cashflow- und ROI-Kennzahlen angereichert. Frage all_appartments oder all_houses mit dem filters-Argument ab und wähle genau die Felder, die du brauchst. Praxisnahe Vorlagen findest du unter Beispielabfragen.
Unterstützte Plattformen
In Arbeit: meinstadt.de, regionalimmobilien, Sparkasse Immobilien.
Verfügbare Abfragen
| Abfrage | Liefert |
|---|---|
all_appartments | Paginierte Liste von Wohnungen (edges → node) |
all_houses | Paginierte Liste von Häusern (edges → node) |
total_appartments_count | Int: Gesamtanzahl passender Wohnungen |
total_houses_count | Int: Gesamtanzahl passender Häuser |
avg_appartments | Durchschnittswerte für Wohnungen (avg_price_per_square_meter, avg_rent_per_square_meter) |
avg_houses | Durchschnittswerte für Häuser (avg_price_per_square_meter, avg_rent_per_square_meter) |
Alle Abfragen akzeptieren die Argumente filters, page, per_page (max. 100), order_by (Feldname für aufsteigend, - davor für absteigend, z. B. "-uptime_date") sowie equity_percentage, interest und repayment zur Anpassung der Cashflow- und ROI-Berechnung. is_active wird automatisch auf true gesetzt, sofern nicht anders angegeben.
Beispielabfrage
{
all_appartments(
filters: { city: "München", price_lt: 600000, square_meter_gt: 50 }
per_page: 5
order_by: "roi"
) {
edges {
node {
immo_id
title
city
price
square_meter
rooms
price_per_square_meter
som_model_price # fairer Schätzwert unseres Modells
som_model_percentage # % über/unter Markt
roi
}
}
}
}Abfrage senden
curl https://www.somantic.net/api/graphql \
-H "X-API-Key: som_live_DEIN_SCHLUESSEL" \
-H "Content-Type: application/json" \
-d '{"query":"{ all_appartments(filters:{city:\"München\"}, per_page:5){ edges{ node{ immo_id title price som_model_price roi } } } }"}'Felder & Filter
Jedes Ergebnis wird als Relay-Verbindung zurückgegeben – die Objekte stehen unter edges → node. Wähle in der node-Auswahl beliebige der folgenden Felder; du erhältst ausschließlich die angefragten Felder zurück. avg_appartments und avg_houses liefern zusätzlich die aggregierten Felder avg_price_per_square_meter und avg_rent_per_square_meter.
Abfragbare Felder
Identifikation & Metadaten
| Feld | Typ | Beschreibung |
|---|---|---|
immo_id | String | Eindeutige ID des Inserats auf der Quellplattform |
title | String | Titel des Inserats |
description | String | Beschreibungstext des Inserats |
url | String | Link zum Original-Inserat |
spider | String | Quellplattform (z. B. immoscout, immowelt, kleinanzeigen, ohnemakler, immobiliende, wohnungjetzt) |
typ | String | Objektart: "wohnung" oder "haus" |
action | String | Vermarktungsart: "kaufen" oder "mieten" |
currency | String | Währung (i. d. R. EUR) |
date | DateTime | Zeitpunkt der letzten Aktualisierung des Datensatzes |
uptime_date | DateTime | Zeitpunkt, seit dem das Inserat online ist |
Standort
| Feld | Typ | Beschreibung |
|---|---|---|
street | String | Straße und Hausnummer (falls verfügbar) |
city | String | Stadt |
zipcode | Int | Postleitzahl |
state | String | Bundesland |
location | String | Normalisierter Standort-Slug (z. B. bl-bayern) |
lat | Float | Breitengrad |
lon | Float | Längengrad |
Preis & Finanzen
| Feld | Typ | Beschreibung |
|---|---|---|
price | Float | Kaufpreis (€) |
price_per_square_meter | Float | Kaufpreis pro m² (€) |
rent_price | Float | Kaltmiete (€) |
rent_per_square_meter | Float | Kaltmiete pro m² (€) |
warm_rent_price | Float | Warmmiete (€) |
extra_charges_price | Float | Nebenkosten (€) |
heat_price | Float | Heizkosten (€) |
parking_lot_price | Float | Stellplatzpreis (€) |
maintenance_price | Float | Hausgeld / Instandhaltung (€) |
cashflow | Float | Geschätzter monatlicher Cashflow bei Kauf – berechnet |
roi | Float | Geschätzte Rendite – berechnet |
price_changes | [PriceChangeHistory] | Historie der Preisänderungen: { date, price } |
most_recent_price_change | Float | Jüngster Preis aus der Änderungshistorie |
most_oldest_price_change | Float | Ältester Preis aus der Änderungshistorie |
price_has_changed | Boolean | Ob sich der Preis seit Erfassung geändert hat |
price_has_increased | Boolean | Ob der Preis zuletzt gestiegen ist |
price_below_market_value | Boolean | Liegt der Angebotspreis unter dem Modellwert |
SOM-Modellwerte
| Feld | Typ | Beschreibung |
|---|---|---|
som_model_price | Float | Fairer Kaufpreis-Schätzwert des SOM-Modells (€) |
som_model_rent | Float | Fairer Miet-Schätzwert des SOM-Modells (€) |
som_model_percentage | Float | Abweichung des Angebotspreises vom Modellwert (%); negativ = unter Markt |
Objekt & Größe
| Feld | Typ | Beschreibung |
|---|---|---|
square_meter | Float | Wohnfläche (m²) |
property_square_meter | Float | Grundstücksfläche (m²) – nur bei Häusern |
rooms | Float | Anzahl Zimmer |
bed_rooms | Int | Anzahl Schlafzimmer |
bath_rooms | Int | Anzahl Badezimmer |
year_of_construction | DateTime | Baujahr |
floor_number | String | Etage |
floor_numbers | Int | Anzahl Etagen im Gebäude |
type_category | String | Objektkategorie |
house_type | String | Haustyp |
move_in | String | Bezugsfrei ab |
parking_lot_count | Int | Anzahl Stellplätze |
parking_lot_type | String | Art des Stellplatzes |
more_rooms | String | Weitere Räume |
floor_type | String | Bodenbelag |
view_type | String | Ausblick |
windows_type | String | Fensterart |
security_technology | String | Sicherheitstechnik |
services | String | Services |
current_usage | String | Aktuelle Nutzung |
Ausstattung & Zustand
| Feld | Typ | Beschreibung |
|---|---|---|
has_balcony | Boolean | Balkon |
has_terrace | Boolean | Terrasse |
has_loggia | Boolean | Loggia |
has_garden | Boolean | Garten |
has_cellar | Boolean | Keller |
has_storage_room | Boolean | Abstellraum |
has_kitchen | Boolean | Einbauküche |
has_bathtub | Boolean | Badewanne |
has_window_in_bath | Boolean | Fenster im Bad |
has_shower | Boolean | Dusche |
has_parking_lot | Boolean | Stellplatz vorhanden |
has_elevator | Boolean | Aufzug |
has_caretaker | Boolean | Hausmeister |
has_cleaner | Boolean | Reinigungsdienst |
has_cable_connection | Boolean | Kabelanschluss |
has_dsl_connection | Boolean | DSL-Anschluss |
is_barrier_free | Boolean | Barrierefrei |
pets_allowed | Boolean | Haustiere erlaubt |
use_as_holiday_property | Boolean | Als Ferienimmobilie nutzbar |
is_new_building | Boolean | Neubau |
is_provisionfree | Boolean | Provisionsfrei |
is_rented | Boolean | Aktuell vermietet |
is_foreclosure | Boolean | Zwangsversteigerung |
is_erbbaurecht | Boolean | Erbbaurecht |
vacant | Boolean | Leerstehend / bezugsfrei |
renovation_needed | Boolean | Renovierungsbedarf |
is_active | Boolean | Inserat noch online |
Energie & Heizung
| Feld | Typ | Beschreibung |
|---|---|---|
energy_efficency_class | String | Energieeffizienzklasse (A+ … H) |
energy_consumption | String | Energieverbrauch (kWh/m²a) |
energy_source | String | Energieträger |
heating_type | String | Heizungsart |
energy_building_type | String | Gebäudetyp laut Energieausweis |
energy_type_document | String | Art des Energieausweises |
energy_document_year_of_construction | String | Baujahr laut Energieausweis |
energy_document_validity | String | Gültigkeit des Energieausweises |
energy_supply | String | Energieversorgung |
Beschreibungen & Medien
| Feld | Typ | Beschreibung |
|---|---|---|
location_description | String | Lagebeschreibung |
furnishing_description | String | Ausstattungsbeschreibung |
object_description | String | Objektbeschreibung |
other_description | String | Sonstige Hinweise |
keywords_description | String | Schlagworte |
seller_name | String | Name des Anbieters |
image_urls | [Images] | Bilder: { key, url, description } |
renovation_estimate | RenovationEstimate | KI-Renovierungsschätzung: { items { item, cost, description }, total_cost, summary } |
Filter
Übergib Filter als filters-Objekt. Numerische und Datumsfelder unterstützen die Suffixe _lt, _gt, _lte und _gte (kombiniere _gt und _lt für Bereiche). _in erwartet eine Liste, _exists einen Boolean und _contains eine case-insensitive Teilstring-Suche.
Identität, Plattform & Ort
| Filter | Typ | Beschreibung |
|---|---|---|
immo_id | String | Genau dieses Inserat |
immo_id_in | [String] | Inserat ist eines der angegebenen immo_id |
immo_id_all | [String] | Inserat enthält alle angegebenen immo_id |
spider | String | Quellplattform (immoscout, immowelt, kleinanzeigen, ohnemakler, immobiliende, wohnungjetzt, …) |
typ | String | "wohnung" oder "haus" |
action | String | "kaufen" oder "mieten" |
location | String | Standort-Slug (z. B. bl-bayern, hamburg) |
city | String | Exakter Stadtname (schnell, tokenbasiert) |
city_contains | String | Teilstring im Stadtnamen (case-insensitive) |
city_tokens_all | [String] | Stadt enthält alle angegebenen Tokens |
title_contains | String | Teilstring im Titel (case-insensitive) |
zipcode_in | [Int] | Postleitzahl ist eine der angegebenen |
zipcode_exists | Boolean | Nur Inserate mit / ohne Postleitzahl |
Preis, Größe & Finanzen
| Filter | Typ | Beschreibung |
|---|---|---|
price_lt / price_gt | Int | Kaufpreis kleiner / größer als |
price_per_square_meter_lt / _gt | Int | Kaufpreis pro m² kleiner / größer als |
rent_price_lt / rent_price_gt | Int | Kaltmiete kleiner / größer als |
rent_per_square_meter_lt / _gt | Int | Kaltmiete pro m² kleiner / größer als |
square_meter_lt / square_meter_gt | Int | Wohnfläche kleiner / größer als |
rooms_lt / _gt / _lte / _gte | Float | Zimmeranzahl kleiner / größer (oder gleich) als |
cashflow_lt / cashflow_gt | Int | Monatlicher Cashflow kleiner / größer als |
roi_lt / roi_gt | Float | Rendite kleiner / größer als |
Bewertung & SOM-Modell
| Filter | Typ | Beschreibung |
|---|---|---|
price_below_market_value | Boolean | Nur Objekte unter dem Modellwert |
som_model_percentage_lt / _gt | Float | Abweichung vom Modellwert kleiner / größer als (negativ = unter Markt) |
som_model_price_exists | Boolean | Nur Objekte mit Kaufpreis-Schätzwert |
som_model_rent_exists | Boolean | Nur Objekte mit Miet-Schätzwert |
price_has_changed | Boolean | Preis hat sich geändert |
price_has_increased | Boolean | Preis ist gestiegen |
Zustand, Energie, Datum & Geo
| Filter | Typ | Beschreibung |
|---|---|---|
is_active | Boolean | Inserat noch online (Standard: true) |
is_foreclosure | Boolean | Zwangsversteigerung |
is_erbbaurecht | Boolean | Erbbaurecht |
vacant | Boolean | Leerstehend / bezugsfrei |
renovation_needed | Boolean | Renovierungsbedarf |
energy_efficency_class_in | [String] | Energieeffizienzklasse ist eine der angegebenen |
year_of_construction_lt / _gt / _lte / _gte | DateTime | Baujahr vor / nach (oder gleich) |
year_of_construction_exists | Boolean | Nur Inserate mit Baujahr-Angabe |
uptime_date_lt / uptime_date_gt | DateTime | Online seit vor / nach |
date_lt / date_gt | DateTime | Zuletzt aktualisiert vor / nach |
lat_gt / lat_lt / lon_gt / lon_lt | Int | Geografische Eingrenzung (Bounding Box) |
lat_exists / lon_exists | Boolean | Nur Inserate mit Koordinaten |
Beispielabfragen
Sende jede dieser Abfragen per POST an https://www.somantic.net/api/graphql – im JSON-Body unter dem Schlüssel query und mit deinem X-API-Key-Header (siehe Abfrage senden).
Aktive Kaufwohnungen in Bayern (nur Kleinanzeigen)
Die 10 neuesten aktiven Eigentumswohnungen in Bayern von kleinanzeigen.de, sortiert nach Online-Datum.
{
all_appartments(
order_by: "-uptime_date"
per_page: 10
page: 1
filters: { is_active: true, action: "kaufen", location: "bl-bayern", spider: "kleinanzeigen" }
) {
edges {
node {
uptime_date
url
square_meter
price
}
}
}
}Nächste Seite (Pagination)
Zum Blättern einfach page erhöhen. per_page ist auf maximal 100 begrenzt.
{
all_appartments(
order_by: "-uptime_date"
per_page: 10
page: 2
filters: { is_active: true, action: "kaufen", location: "bl-bayern", spider: "kleinanzeigen" }
) {
edges { node { uptime_date url square_meter price } }
}
}Häuser zum Kauf in Baden-Württemberg (immowelt)
Die 20 teuersten aktiven Häuser in Baden-Württemberg von immowelt.de, absteigend nach Preis.
{
all_houses(
order_by: "-price"
per_page: 20
page: 1
filters: { is_active: true, action: "kaufen", location: "bl-baden-wuerttemberg", spider: "immowelt" }
) {
edges {
node {
uptime_date
url
square_meter
property_square_meter
price
}
}
}
}Durchschnittlicher Kaufpreis pro m² (Wohnungen, BW)
Durchschnittlicher Quadratmeterpreis aller aktiven Kaufwohnungen in Baden-Württemberg.
{
avg_appartments(filters: { is_active: true, action: "kaufen", location: "bl-baden-wuerttemberg" }) {
edges { node { avg_price_per_square_meter } }
}
}Durchschnittliche Miete pro m² (Wohnungen, Hamburg)
Durchschnittliche Kaltmiete pro Quadratmeter aller aktiven Mietwohnungen in Hamburg.
{
avg_appartments(filters: { is_active: true, action: "mieten", location: "hamburg" }) {
edges { node { avg_rent_per_square_meter } }
}
}Anzahl aktiver Mietwohnungen in Hamburg
Gesamtanzahl der passenden Wohnungen – ideal, um vor dem Paginieren die Treffermenge zu kennen.
{
total_appartments_count(filters: { is_active: true, action: "mieten", location: "hamburg" })
}Alle Mietwohnungen in einer Stadt (Hagen)
Bis zu 100 aktive Mietwohnungen in einer bestimmten Stadt, mit umfangreichem Feldsatz.
{
all_appartments(
order_by: "-uptime_date"
per_page: 100
page: 1
filters: { is_active: true, city: "Hagen", action: "mieten" }
) {
edges {
node {
immo_id
url
spider
title
location
city
zipcode
rent_price
warm_rent_price
extra_charges_price
rent_per_square_meter
square_meter
year_of_construction
uptime_date
}
}
}
}Alle Kaufwohnungen in einer PLZ (Lübeck 23552)
Aktive Eigentumswohnungen in einer bestimmten Postleitzahl.
{
all_appartments(
order_by: "-uptime_date"
per_page: 100
page: 1
filters: { is_active: true, zipcode_in: [23552], action: "kaufen" }
) {
edges {
node {
immo_id
url
spider
title
location
city
state
zipcode
price
price_per_square_meter
square_meter
year_of_construction
uptime_date
}
}
}
}Unterbewertete Wohnungen finden
Aktive Kaufwohnungen, deren Angebotspreis laut SOM-Modell mindestens 10 % unter dem fairen Marktwert liegt – sortiert nach größter Abweichung.
{
all_appartments(
order_by: "som_model_percentage"
per_page: 25
filters: { is_active: true, action: "kaufen", city: "Leipzig", som_model_percentage_lt: -10 }
) {
edges {
node {
immo_id
url
title
price
som_model_price
som_model_percentage
price_per_square_meter
}
}
}
}Cashflow-positive Kapitalanlagen
Kaufwohnungen mit positivem geschätzten Cashflow, sortiert nach Rendite (ROI). equity_percentage, interest und repayment passen die Finanzierungsannahmen an.
{
all_appartments(
order_by: "-roi"
per_page: 25
equity_percentage: 0.2
interest: 0.035
repayment: 0.02
filters: { is_active: true, action: "kaufen", cashflow_gt: 0 }
) {
edges {
node {
immo_id
url
title
price
rooms
square_meter
cashflow
roi
som_model_rent
}
}
}
}Immobilienbewertungs-API
Liefert eine sofortige Miet- und Kaufpreisschätzung für jede deutsche Adresse, basierend auf einem Self-Organizing-Map-Modell, das mit Live-Marktdaten trainiert wurde. Sende ein POST an /estimate mit den Objektdaten.
Anfrage-Body
| Feld | Typ | Beschreibung |
|---|---|---|
typ | string | Pflicht. "wohnung" (Wohnung) oder "haus" (Haus) |
street | string | Pflicht, mindestens 3 Zeichen. Ohne Straße wäre die Bewertung die des PLZ-Mittelpunkts, nicht die der Adresse; für eine Einschätzung ohne Adresse nutzen Sie /estimate/quick |
postcode | string | Pflicht. 5-stellige deutsche Postleitzahl |
city | string | Pflicht. Stadt |
square_meters | number | Pflicht. Wohnfläche in m² |
rooms | number | Optional. Anzahl der Zimmer – erhöht die Genauigkeit |
year_of_construction | number | Optional. Baujahr – erhöht die Genauigkeit |
property_type | string | Optional. Objektart, z. B. "reihenhaus", "doppelhaushaelfte", "etagenwohnung". Filtert die Vergleichsobjekte. Liste unter GET /estimate/property-types |
features | object | Optional. Ausstattung: balcony, terrace, basement, elevator, garden, kitchen, parking, new_building. Nur true grenzt die Vergleichsobjekte ein – false wird ignoriert, da ein fehlendes Merkmal im Inserat meist nur bedeutet, dass es nicht erwähnt wurde |
Anfrage senden
curl https://www.somantic.net/api/estimate \
-H "X-API-Key: som_live_DEIN_SCHLUESSEL" \
-H "Content-Type: application/json" \
-d '{
"typ": "wohnung",
"street": "Marienplatz 1",
"postcode": "80331",
"city": "München",
"square_meters": 75,
"rooms": 3,
"year_of_construction": 1990
}'Beispielantwort
{
"estimates": {
"rent": 1650, // geschätzte monatliche Kaltmiete (€)
"price": 712500, // geschätzter Kaufpreis (€)
"price_range": { // Quartilsband über die Vergleichsobjekte
"low": 664000,
"high": 758000
},
"rent_range": { "low": 1540, "high": 1760 },
"price_per_square_meter": {
"count": 46, "mean": 9500.0, "median": 9420.0,
"p25": 8850.0, "p75": 10110.0, "min": 7200.0, "max": 12400.0
},
"rent_per_square_meter": { "count": 31, "mean": 22.0, "median": 21.8, ... },
"similar_properties": [ ... ]
},
"confidence": {
"price": "high", // high | medium | low | none
"rent": "medium",
"sample_size": 46, // Vergleichsobjekte nach Filterung
"cluster_size": 118, // Vergleichsobjekte vor Filterung
"recency_window_months": 12, // verwendetes Aktualitätsfenster
"date_span": { "oldest": "2025-08-23", "newest": "2026-08-04" },
"filters_applied": ["recency=12m", "property_type=etagenwohnung", "elevator"],
"filters_skipped": ["garden"] // hätte zu wenige Vergleichsobjekte übrig gelassen
},
"location": { "lat": 48.1374, "lon": 11.5755 },
"typ": "wohnung",
"property_type": "etagenwohnung"
}Die Punktschätzungen price und rent sind der Mittelwert über die Vergleichsobjekte, price_range und rent_range das Quartilsband (25.–75. Perzentil). confidence macht transparent, worauf das Ergebnis beruht: wie viele Vergleichsobjekte übrig blieben, welche Filter angewendet wurden und welche übersprungen wurden, weil sonst zu wenige Vergleichsobjekte verblieben wären.
Vergleichsobjekte werden zusätzlich nach Aktualität eingegrenzt. Wir versuchen zuerst ein Fenster von 12 Monaten und weiten auf 24 bzw. 36 Monate aus, wenn sonst zu wenige Objekte übrig blieben. recency_window_months nennt das tatsächlich verwendete Fenster, date_span den Zeitraum der einbezogenen Inserate. Ist auch das weiteste Fenster zu dünn besetzt, rechnen wir über den gesamten Bestand und weisen das unter filters_skipped aus.
Grobe Ersteinschätzung
POST /estimate/quick liefert eine Quadratmeterpreis-Spanne für die Mikrolage – ohne Wohnfläche und ohne weitere Objektangaben. Gedacht für den ersten Schritt eines zweistufigen Bewertungsprozesses: Der Nutzer bestätigt seine Adresse und sieht sofort eine Einordnung, bevor er ein längeres Formular ausfüllt.
Statt des SOM-Modells aggregiert dieser Endpunkt die aktiven Inserate des PLZ-Gebiets. Reichen diese nicht aus, weitet er automatisch auf die Gemeinde aus – confidence.basis gibt an, welche Ebene verwendet wurde. Optional übergebene square_meters rechnen die Spanne zusätzlich in absolute Euro um.
| Feld | Typ | Beschreibung |
|---|---|---|
typ | string | Pflicht. "wohnung" oder "haus" |
postcode | string | Pflicht. 5-stellige deutsche Postleitzahl |
city | string | Optional, aber empfohlen – ermöglicht die Ausweitung auf die Gemeinde |
property_type | string | Optional. Objektart wie bei /estimate |
square_meters | number | Optional. Rechnet die €/m²-Spanne in absolute Euro um |
Anfrage senden
curl https://www.somantic.net/api/estimate/quick \
-H "X-API-Key: som_live_DEIN_SCHLUESSEL" \
-H "Content-Type: application/json" \
-d '{
"typ": "wohnung",
"postcode": "80331",
"city": "München"
}'Beispielantwort
{
"estimates": {
"price_per_square_meter": {
"count": 214, "mean": 9640.0, "median": 9500.0,
"p25": 8400.0, "p75": 10800.0, "min": 5900.0, "max": 16200.0
},
"rent_per_square_meter": { "count": 96, "mean": 23.1, "median": 22.6, ... },
"price_range": null, // nur gesetzt, wenn square_meters übergeben wurde
"rent_range": null
},
"confidence": {
"price": "high",
"rent": "medium",
"sample_size": 310, // ausgewertete Inserate
"area_size": 310,
"basis": "plz", // "plz" oder "stadt" (automatisch ausgeweitet)
"recency_window_months": 12,
"date_span": { "oldest": "2025-09-02", "newest": "2026-08-11" },
"filters_applied": ["recency=12m"],
"filters_skipped": []
},
"area": { "postcode": "80331", "city": "München" },
"typ": "wohnung",
"property_type": null
}Unterstützte Objektarten liefert GET /estimate/property-types, optional eingeschränkt über ?typ=haus bzw. ?typ=wohnung.
{
"property_types": [
{ "id": "einfamilienhaus", "label": "Einfamilienhaus", "typ": "haus" },
{ "id": "doppelhaushaelfte", "label": "Doppelhaushälfte", "typ": "haus" },
{ "id": "reihenhaus", "label": "Reihenhaus", "typ": "haus" },
{ "id": "zweifamilienhaus", "label": "Zweifamilienhaus", "typ": "haus" },
{ "id": "mehrfamilienhaus", "label": "Mehrfamilienhaus", "typ": "haus" },
{ "id": "etagenwohnung", "label": "Etagenwohnung", "typ": "wohnung" },
{ "id": "maisonette", "label": "Maisonette", "typ": "wohnung" },
{ "id": "penthouse", "label": "Penthouse", "typ": "wohnung" }
// …
]
}Fehler
Fehler verwenden Standard-HTTP-Statuscodes mit einem JSON-Body der Form { "detail": "…" }.
| Status | Bedeutung |
|---|---|
400 | Ungültiger Anfrage-Body oder ungültige Parameter |
402 | Abonnement inaktiv – Zahlungsdaten im Dashboard aktualisieren |
403 | Fehlender, ungültiger oder widerrufener API-Schlüssel |
429 | Monatliches Kontingent auf einer gedeckelten Stufe erreicht – zum Fortfahren upgraden |
500 | Serverfehler – bitte erneut versuchen oder den Support kontaktieren |
Bereit loszulegen?
Kostenlosen API-Schlüssel erstellen