willhaben API: Anzeigen aus Österreich als JSON
willhaben ist Österreichs größter Anzeigenmarkt und bietet Entwicklern keinen offenen Zugang. Diese Schnittstelle liest, was öffentlich zu sehen ist — Anzeigen, Preise, Objektdaten — als JSON. Die drei Suchen sind getrennt, weil willhaben selbst drei getrennte Bereiche betreibt: Marktplatz, Immobilien und Fahrzeuge.
Endpunkte
| endpoint | Was zurückkommt | Pflicht |
|---|---|---|
| search | Der Marktplatz (Kaufen & Verkaufen): Suche nach Stichwort und/oder Kategorie mit Preis und Zustand. | alle optional |
| real_estate/search | Immobiliensuche nach Objektart — Wohnung, Haus, Grundstück, Gewerbe. Die Objektart ist Pflicht, weil Miete und Kauf nicht dasselbe beantworten. | property_type |
| cars/search | Gebrauchtwagen und Motorräder: Preis, der zuvor verlangte Händlerpreis und etwaige Bonus-Kennzeichnungen. | alle optional |
| listing | Das vollständige Inserat über ad id oder URL, in jedem Bereich: Titel, Preis (auch 'gratis' und 'auf Anfrage'), Beschreibung, Fotos und Attribute. | ad_id |
Jeder Aufruf wird in Credits abgerechnet. Fehlgeschlagene und blockierte Aufrufe sind kostenlos.
Funktionierendes Beispiel
Bei Fahrzeugen liefert willhaben nicht nur den aktuellen Preis, sondern auch den zuvor verlangten. Wer Preisbewegung beobachten will, braucht beide Felder und nicht nur das eine.
curl -X POST https://api.reefapi.com/willhaben/v1/cars/search \
-H "x-api-key: IHR_SCHLUESSEL" \
-H "content-type: application/json" \
-d '{"keyword": "bmw", "price_max": 20000}'{
"ok": true,
"data": {
"results": [
{
"ad_id": "...",
"title": "BMW ...",
"price": 18900,
"price_before_reduction": 19900,
"year": 2017,
"mileage_km": 128000
}
]
},
"meta": { "record_count": 30, "cache_hit": false, "mode": "live" }
}Statt eines eigenen willhaben-Scrapers
Einen Scraper für willhaben zu bauen funktioniert am Anfang. Was danach kommt, haben wir selbst gerade erlebt: willhaben hat eine interne Adresse abgeschaltet, auf die der alte Zugriff gestützt war, und die Suche lieferte daraufhin leere Ergebnisse statt eines Fehlers. Genau so verhält sich ein eigener Scraper auch.
Hier liegt die Pflege bei uns, und zwar nachweislich: wir haben den Weg auf die Adresse umgestellt, die die Seite selbst aufruft, und zusätzlich eine zweite Adresse als Rückfallebene hinterlegt. Eine tote Route meldet sich jetzt als Fehler und nicht mehr als 'keine Treffer'.
Für eine einmalige Suche bleibt das eigene Skript günstiger. Für eine Beobachtung, die laufen muss, zahlt man für genau diese Ausfälle.
Grenzen und ehrliche Hinweise
- Das ist nicht die offizielle willhaben-Schnittstelle, und wir haben keine Partnerschaft mit willhaben.
- Bei Immobilien ist die Objektart Pflicht; eine Suche über alle Objektarten hinweg gibt es nicht.
- Bei Marktplatz-Anzeigen liefert die Trefferliste die Farbe nur als interne Zahlen-id; der Klartext steht erst im Inserat.
- Kein Cache: jeder Aufruf zeigt den Stand zum Zeitpunkt der Anfrage.