Entwickler
Die AutoRadar-API
Integrieren Sie die Live-Suche von AutoRadar in Ihre Tools: Auto- und Ersatzteilinserate von Schweizer Plattformen, Marktstatistiken, Suchalarme und Webhooks. REST-API mit JSON, Schlüssel-Authentifizierung, Spezifikation OpenAPI 3.1.
In 3 Schritten starten
- Erstellen Sie einen Schlüssel in Ihrem Entwicklerbereich mit nur den nötigen Rechten. Er wird nur einmal angezeigt.
- Bewahren Sie ihn serverseitig auf, zum Beispiel in der Umgebungsvariable
AUTORADAR_API_KEY. - Rufen Sie die API mit dem Header
Authorization: Bearer <clé>auf:
curl -s "$AUTORADAR_URL/api/v1/listings/search?make=Volkswagen&model=Golf&fuel=diesel&price_max=20000" \
-H "Authorization: Bearer $AUTORADAR_API_KEY"Authentifizierung
- Nur über den Header
Authorization: Bearer ar_live_…. Ein Schlüssel in der URL (?api_key=) wird abgelehnt: Er würde in Logs und im Verlauf landen. Widerrufen Sie ihn, falls das passiert. - Cookies werden von der API nie verwendet: Rufen Sie sie von Ihrem Server aus auf.
- Mögliche Einschränkungen pro Schlüssel: IP-Adressen (oder CIDR-Blöcke) und Browser-Ursprünge. Ohne deklarierten Ursprung wird ein Aufruf aus einem Browser abgelehnt (
cors_denied). - Ein Schlüssel kann jederzeit ablaufen, widerrufen oder ersetzt (rotiert) werden, und zwar in Ihrem Bereich.
Rechte (Scopes)
search:read— Autos suchen (synchron und asynchron)parts:read— Ersatzteile suchenlistings:read— Details eines Inserats lesenmarket:read— Marktstatistiken lesenalerts:write— Suchalarme erstellen und löschenwebhooks:write— Webhooks verwalten
Ein Endpoint ohne ausreichendes Recht antwortet mit 403 insufficient_scope. Die Endpoints /me und /sources sind mit jedem gültigen Schlüssel erreichbar.
Ratenlimits und Kontingente
Jeder Schlüssel hat ein Limit pro Minute (gleitendes Fenster) und ein Monatskontingent, abhängig von Ihrem Angebot zum Zeitpunkt der Erstellung:
| Angebot | Anfragen pro Minute | Anfragen pro Monat und Schlüssel | Aktive Schlüssel |
|---|---|---|---|
| Gratis | 30 | 2'000 | 2 |
| Pro | 60 | 20'000 | 5 |
| Garage | 120 | 100'000 | 10 |
Jede Antwort enthält X-RateLimit-Limit und X-RateLimit-Remaining. Darüber hinaus: 429 mit Retry-After (Sekunden). Beachten Sie dies und warten Sie vor einem erneuten Versuch mit zunehmendem Abstand.
Credits
Einige Endpoints verbrauchen Credits. Sie werden beim Aufruf abgebucht und automatisch zurückerstattet, wenn die Antwort ein Fehler ist:
- API · recherche d'annonces : 1 Credit(s) · Chaque appel GET /api/v1/listings/search
- API · recherche de pièces : 1 Credit(s) · Chaque appel GET /api/v1/parts/search
- API · statistiques de marché : 1 Credit(s) · Chaque appel GET /api/v1/market/models/…
- API · positionnement de prix : 2 Credit(s) · Chaque appel GET /api/v1/market/price-position
- Zusätzlicher Suchalarm : 3 Credit(s) · Jeder Alarm über das in Ihrem Abo inbegriffene Kontingent hinaus
Unzureichendes Guthaben: 402 insufficient_credits. Credits kaufen Sie auf der Seite Credits. GET /me zeigt Ihr Guthaben und die Nutzung des Monats.
Paginierung
Synchrone Suchen liefern data, total und next_cursor. Für die nächste Seite senden Sie genau dieselben Parameter erneut mit ?cursor=<next_cursor> (standardmässig 20 Resultate, limit bis 50). Ein Cursor ist an seine Anfrage gebunden: Mit anderen Parametern wird er abgelehnt (invalid_cursor). Asynchrone Suchen werden mit page und per_page paginiert.
Synchrone und asynchrone Suchen
GET /listings/search und GET /parts/search antworten innert höchstens 8 Sekunden mit den bereits verfügbaren Plattformen. Ist complete auf false, starten Sie eine vollständige Suche mit POST /searches (Antwort 202) und verfolgen Sie sie über GET /searches/{id} oder empfangen Sie den Webhook search.completed.
Credits einer asynchronen Suche: Sie werden beim Start abgebucht (gleicher Tarif wie die synchrone Suche). Sie werden automatisch zurückerstattet, wenn die Suche scheitert, bevor eine Plattform abgefragt wurde (nicht verwertbare Anfrage unusable_query, interner Fehler beim Start), oder wenn Sie sie abbrechen (DELETE /searches/{id}), solange sie noch wartet (queued). Eine bereits gestartete Suche bleibt auch bei Abbruch kostenpflichtig.
# 1. Lancer la recherche complète (202 Accepted)
curl -s -X POST "$AUTORADAR_URL/api/v1/searches" \
-H "Authorization: Bearer $AUTORADAR_API_KEY" -H "Content-Type: application/json" \
-d '{"mode":"achat","ask":"skoda octavia combi diesel","criteria":{"priceMax":"25000"}}'
# → {"id":"srch_…","status":"queued","url":"/api/v1/searches/srch_…", …}
# 2. Suivre la progression (ou recevoir le webhook « search.completed »)
curl -s "$AUTORADAR_URL/api/v1/searches/srch_…?page=1&per_page=50" -H "Authorization: Bearer $AUTORADAR_API_KEY"Webhooks
Verfügbare Ereignisse: search.completed, alert.match, price.drop. Jede Zustellung ist signiert (AutoRadar-Signature, HMAC-SHA256): Prüfen Sie die Signatur vor jeder Verarbeitung. Beispiele in Node, Python und PHP: Webhook prüfen.
Fehler
Format: { "error": { "code", "message", "request_id" } }. Geben Sie die request_id an (auch im Header X-Request-Id), wenn Sie uns kontaktieren.
| HTTP | Code | Bedeutung |
|---|---|---|
| 400 | invalid_request | Unbekannter, wiederholter oder ungültiger Parameter (die Meldung nennt welcher). |
| 400 | key_in_url | Schlüssel in der URL übergeben: abgelehnt. Widerrufen Sie ihn, er könnte offengelegt worden sein. |
| 400 | invalid_cursor | Cursor abgelaufen oder stammt aus einer anderen Anfrage. |
| 400 | invalid_json | Anfragekörper ist kein gültiges JSON. |
| 413 | payload_too_large | Anfragekörper zu gross. |
| 415 | unsupported_media_type | Senden Sie „Content-Type: application/json“. |
| 422 | invalid_request | Gültiges JSON, aber abgelehnt (unbekanntes Kriterium, Wert ausserhalb der Grenzen…). |
| 401 | invalid_key | Schlüssel fehlt, ist fehlerhaft oder unbekannt. |
| 401 | key_revoked / key_expired | Schlüssel widerrufen oder abgelaufen: Erstellen Sie einen neuen. |
| 402 | insufficient_credits | Ungenügendes Credits-Guthaben für diesen Endpunkt. |
| 403 | insufficient_scope | Der Schlüssel hat nicht das für diesen Endpunkt erforderliche Recht. |
| 403 | ip_not_allowed / cors_denied | IP-Adresse oder Browser-Herkunft für diesen Schlüssel nicht zugelassen. |
| 404 | not_found | Unbekannte Ressource oder Ressource eines anderen Kontos. |
| 429 | rate_limited / quota_exceeded | Zu viele Anfragen pro Minute oder Monatskontingent erreicht: Beachten Sie Retry-After. |
| 500 | internal_error | Fehler auf unserer Seite: Versuchen Sie es später erneut und geben Sie bei Kontakt die request_id an. |
| 503 | api_unavailable / api_disabled / busy | API vorübergehend nicht verfügbar, deaktiviert oder überlastet: Versuchen Sie es später erneut. |
Quellen und Weitergabe
Die API liefert nur Angebote von Websites, deren Vereinbarung die Weitergabe erlaubt (Liste: GET /sources). Jedes Angebot gibt seine Quelle, das Lesedatum und den Link zur Originalanzeige an, die anzuzeigen sind. Die Kontaktdaten von Privatverkäufern werden nie zurückgegeben. Siehe die Nutzungsbedingungen der API.