Kleinanzeigen API: Anzeigen und Inserate als JSON
Für Kleinanzeigen gibt es keine offene Entwicklerschnittstelle. Was hier zurückkommt, ist das, was die Seite öffentlich anzeigt — Anzeigen, Preise, Orte und Verkäuferprofile — als JSON, ohne Konto. Für Marktbeobachtung ist vor allem der Umkreis-Filter wichtig: ohne Ort suchen Sie bundesweit, und das ist selten die Frage.
Endpunkte
| endpoint | Was zurückkommt | Pflicht |
|---|---|---|
| search | Suche nach Stichwort und/oder Kategorie mit Preis, Ort plus Umkreis und Sortierung. | alle optional |
| listing | Das vollständige Inserat über URL, Slug oder adid: Titel, Preis, Beschreibung, alle Fotos und die Attribute. | alle optional |
| similar | Die ähnlichen Anzeigen, die auf der Detailseite erscheinen ('Das könnte dich auch interessieren'). | alle optional |
| categories | Der vollständige Kategoriebaum mit id, Name und verschachtelten Unterkategorien — die Quelle für `category_id`. | alle optional |
| filters | Die aktuell verfügbaren Filterfacetten zu einer Suche oder Kategorie: Kategorie, Ort, Preis und die kategoriespezifischen Attribute. | alle optional |
| location_suggestions | Ortsnamen und ihre ids zu einer Teileingabe. Die zurückgegebene location_id gehört in die Suche. | query |
| user_listings | Alle aktiven Anzeigen eines Verkäufers, seitenweise. | user_id |
| seller | Das öffentliche Verkäuferprofil: Anzeigename (standardmäßig maskiert), Mitglied seit, Bewertung. | user_id |
Jeder Aufruf wird in Credits abgerechnet. Fehlgeschlagene und blockierte Aufrufe sind kostenlos.
Funktionierendes Beispiel
Erst den Ort über location_suggestions in eine id auflösen, dann damit suchen. Wer den Umkreis wegläßt, vergleicht später Preise aus Flensburg mit Preisen aus München und wundert sich über die Streuung.
curl -X POST https://api.reefapi.com/kleinanzeigen/v1/search \
-H "x-api-key: IHR_SCHLUESSEL" \
-H "content-type: application/json" \
-d '{"query": "fahrrad", "location_id": "...", "radius": 20, "price_max": 500}'{
"ok": true,
"data": {
"results": [
{
"adid": "...",
"title": "...",
"price": 320,
"currency": "EUR",
"location": "...",
"url": "https://www.kleinanzeigen.de/..."
}
]
},
"meta": { "record_count": 25, "cache_hit": false, "mode": "live" }
}Statt eines eigenen Kleinanzeigen-Scrapers
Scraper für Kleinanzeigen gibt es auf GitHub reichlich und der erste Lauf klappt meistens. Schwierig wird es danach: ändert sich der Aufbau der Trefferliste, kommt eine leere Liste statt eines Fehlers zurück, und bei einem größeren Durchlauf wird die IP irgendwann abgewiesen.
Hier liegt die Pflege bei uns: bei einer Schemaänderung reparieren wir die Engine, bei einer Blockade kommt ein Fehlercode und der Aufruf wird nicht berechnet.
Für eine einmalige Suche ist das eigene Skript weiterhin günstiger. Wer dauerhaft beobachtet, zahlt am Ende für die Ausfälle, nicht für den Code.
Grenzen und ehrliche Hinweise
- Das ist nicht die offizielle Kleinanzeigen-Schnittstelle, und wir haben keine Partnerschaft mit Kleinanzeigen.
- Verkäufernamen werden standardmäßig maskiert ausgeliefert.
- Ohne location_id wird bundesweit gesucht. Das ist kein Fehler, aber selten die gewünschte Frage.
- Kein Cache: jeder Aufruf ist live.