API

Autodoc API: passende Ersatzteile, OE-Nummern und Euro-Preise von autodoc.de als JSON

Bei Autodoc hängt fast jede Antwort am Fahrzeug. Eine Liste mit Bremsbelägen gibt es nicht für „VW Golf“, sondern nur für eine bestimmte Motorvariante wie den Golf 7 2.0 TDI mit 150 PS. Die API geht diesen Weg mit: `vehicle_lookup` führt vom Hersteller über Modell und Baureihe zur Motorvariante, `search` liefert dann die Teile, die Autodoc dafür führt, mit Preis in Euro, Marke, Herstellernummer und den technischen Angaben des Herstellers. Wer mit OE-Nummern arbeitet, etwa aus der Werkstatt oder dem Teilehandel, schlägt sie direkt mit `oem_lookup` nach. Dass Autodoc-Preise sich ändern, zeigt Autodoc selbst an: Jeder Preis trägt ein Gültigkeitsdatum (`price_valid_until`). Einen Preisverlauf führt die API nicht; wer einen braucht, baut ihn aus eigenen, datierten Abrufen auf. Bestellen oder als Händler ein eigenes Sortiment bei Autodoc anbinden lässt sich damit nicht, die API liest ausschließlich den öffentlichen Shop. autodoc.de erreicht man mit `"market": "de"`; fehlt der Wert, kommen Pfundpreise aus dem britischen Shop.

Endpunkte

endpointWas zurückkommtPflicht
vehicle_lookupDer Fahrzeugbaum von autodoc.de, Ebene für Ebene: ohne Parameter alle Hersteller, mit `maker` die Modelle, mit `model` die Baureihen („Golf 7“, „Golf 7 Variant“), mit `generation` die Motorvarianten mit kW, PS, Hubraum, Kraftstoff und Bauzeitraum. Mit `vehicle` kommt das Fahrzeug selbst samt Motorcodes und allen Teilekategorien, die Autodoc dafür führt.alle optional
searchAlle Teile einer Kategorie für genau eine Motorvariante, 20 pro Seite: Artikel-ID, Herstellernummer, Marke, Preis, Vergleichspreis (`rrp`), Sterne, Bewertungszahl, Bild und die Herstellerangaben (Einbauposition, Maße, WVA-Nummer, EAN). Ohne vollständiges Fahrzeug antwortet der Endpunkt mit MISSING_PARAM, weil Autodoc oberhalb der Motorvariante keine Teileliste hat.category
product_detailEin einzelnes Teil, angefragt per Artikel-ID oder Autodoc-URL: Preis mit Gültigkeitsdatum, Verfügbarkeit, Versandkosten mit Lieferzeit, Rückgabefrist in Tagen, das vollständige Datenblatt des Herstellers, EAN, alle OE-Vergleichsnummern mit Fahrzeughersteller, kompatible Marken, gleichwertige Teile, Bilder samt 360-Grad-Ansicht und die Kundenbewertungen der Seite.alle optional
part_searchAutodocs eigene Suche über den ganzen Katalog: eine Herstellernummer wie `1987474465` liefert das Teil und Alternativen, ein deutscher Begriff wie „Ölfilter“ eine normale Trefferliste. Nicht an ein Fahrzeug gebunden.query
oem_lookupAlle Teile, die Autodoc als Ersatz für eine Originalnummer des Fahrzeugherstellers führt, etwa VAG 5Q0 698 151, jeweils mit Preis, Marke und Herstellernummer. Nummern von Teileherstellern gehören in `part_search`.oem_number
categoriesDie Teilekategorien mit Slug und Nummer, die `search` erwartet, auf autodoc.de mit deutschen Namen; über `group` filterbar.alle optional

Jeder Aufruf wird in Credits abgerechnet. Fehlgeschlagene und blockierte Aufrufe sind kostenlos.

Funktionierendes Beispiel

Die 20 Bremsbelagsätze für den Golf 7 2.0 TDI (150 PS) mischen Vorder- und Hinterachse; welche Achse gemeint ist, steht in `specifications` unter „Einbauposition“. Dort steht auch, was `fits_selected_vehicle: true` nicht abdeckt: Der RIDEX-Satz im Beispiel ist laut Datenblatt nur „verwendbar für Fahrzeuge bis Bj. 2016 / 11“, während die Motorvariante von 2012 bis 2020 gebaut wurde. Für den ATE-Satz aus derselben Liste nannte `product_detail` 16 OE-Nummern, 6,95 € Versand mit „3-5 Arbeitstage“ und 14 Tage Rückgabe.

Anfrage
curl -X POST https://api.reefapi.com/autodoc/v1/search \
  -H "x-api-key: IHR_API_SCHLUESSEL" \
  -H "content-type: application/json" \
  -d '{"category": "bremsbelag-10130", "maker": "vw", "model": "golf", "generation": "golf-vii-5g1-be1", "vehicle": "56147-2-0-tdi", "market": "de"}'
Antwort (gekürzt)
{
  "ok": true,
  "data": {
    "parts": [
      {
        "article_id": "7998967",
        "article_number": "402B0009",
        "url": "https://www.autodoc.de/ridex/7998967",
        "title": "RIDEX 402B0009 Bremsbeläge Vorderachse",
        "brand": "RIDEX",
        "category_name": "Bremsbeläge",
        "price": 20.49,
        "rrp": 36.1,
        "currency": "EUR",
        "rating": 4.5,
        "review_count": 73,
        "specifications": [
          { "name": "Einbauposition", "value": "Vorderachse" },
          { "name": "Dicke / Stärke", "value": "20,3" },
          { "name": "WVA-Nummer", "value": "23587, 23588, 23589, 24078" },
          { "name": "für Bremsscheibendurchmesser [mm]", "value": "288, 312" },
          { "name": "verwendbar für Fahrzeuge bis Bj.", "value": "2016 / 11" },
          { "name": "EAN-Nummer(n)", "value": "4059191313211" },
          ...
        ],
        "in_stock": true,
        "fits_selected_vehicle": true
      },
      ...
      {
        "article_id": "7896677",
        "article_number": "13.0460-2785.2",
        "title": "ATE 13.0460-2785.2 Bremsbeläge Vorderachse",
        "brand": "ATE",
        "price": 52.99,
        "rrp": 144.23,
        "currency": "EUR",
        "rating": 4.5,
        "review_count": 97,
        ...
      },
      ...
    ]
  },
  "meta": {
    "record_count": 20,
    "fitment": "vehicle",
    "pagination": { "page": 1, "per_page": 20, "total_results": null, "known_pages_at_least": 5, "has_more": true, "next_page": 2 },
    "charged_credits": 2,
    "cache_hit": false,
    "mode": "live"
  }
}

Einen Autodoc-Scraper bauen: HTTP 200 heißt hier wenig

Autodoc beantwortet fast jede falsche Eingabe mit Status 200 und einer Seite, auf der Produkte zu sehen sind, nur eben nicht die gesuchten. Eine nicht mehr existierende Artikel-ID führt auf die Startseite, eine unbekannte OE-Nummer auf die Katalogübersicht mit Bestsellern, eine veraltete Fahrzeug-ID auf die Seite der Baureihe mit ihren Empfehlungskacheln. Ein Scraper, der Produktlinks zählt, findet überall welche. Die API vergleicht deshalb bei jedem Abruf die kanonische Adresse der gelieferten Seite mit der angefragten und meldet NOT_FOUND, wenn sie nicht passt.

Am 22. August 2026 stellten wir fest, dass Autodoc die Klassen der Produktkarten umbenannt hatte. `search` und `part_search` lieferten seitdem `ok: true` mit leerer Teileliste, und der Hinweistext erklärte das sogar noch plausibel. Dabei war die Seite vollständig angekommen: auf autodoc.de 623.371 Byte mit 20 Produktzeilen, von denen keine gelesen wurde. Gleichzeitig hatte der Alt-Text des Markenlogos seine Bedeutung geändert, sodass die alte Logik als Marke nicht „RIDEX“, sondern die Fahrzeugbezeichnung herausgelöst hätte. Seitdem kommt die Marke zuerst aus der Herstellerzeile des Datenblatts.

Den dritten Fall haben wir in den Abrufen eines Kunden entdeckt. `part_search` mit der Nummer „676984 10“, also mit Leerzeichen, lieferte am 14. Oktober 2026 zwanzig Treffer, darunter Heckwischerblätter und einen Kraftstofffilter. Autodocs Suche hatte die Nummer aufgegeben, einzelne Wortteile gesucht und „10000 results“ gemeldet. Seit dem 16. Oktober fragt die API eine nummernartige Eingabe, bei der Autodoc diese Trefferzahl meldet, einmal ohne Leerzeichen nach; findet Autodoc dann nichts, kommt NOT_FOUND mit Begründung.

Jedes Mal kam von Autodoc eine Seite zurück, die einwandfrei aussah. Bei Ersatzteilen wiegt so ein Fehler schwerer als bei den meisten anderen Daten: Ein falsch zugeordnetes Teil landet unter Umständen in einer Bestellung und danach im Auto.

Grenzen und ehrliche Hinweise

  • Von Autodoc stammt diese API nicht. Sie ist inoffiziell, und einen Vertrag mit Autodoc gibt es nicht.
  • `market` kennt `uk` (Standard, Pfund), `de` und `es` (beide Euro). Artikel-, Fahrzeug- und Kategorie-IDs sind in allen drei Shops dieselben; Preis, Währung und Sprache der Texte unterscheiden sich.
  • `search` braucht Hersteller, Modell, Baureihe und Motorvariante (oder eine Fahrzeug-URL). Auf allen Ebenen darüber hat Autodoc keine Teileliste, nur Empfehlungskacheln.
  • Freitext in `part_search` versteht nur die Sprache des Shops. Auf autodoc.de liefert „Ölfilter“ 20 von 20 Ölfiltern; ein englischer Begriff wie „brake pads“ ergab dort beim Bau der Engine Führungshülsen und Verschleißkontakte statt Bremsbelägen. Teilenummern funktionieren in jedem Shop.
  • `oem_lookup` liefert alles, was die OE-Nummer ersetzt, auch Sätze: Bei 5Q0 698 151 waren 12 der 20 Treffer Kombinationen aus Bremsscheiben und Belägen, nur 8 reine Belagsätze. Wer nur ein Teil will, filtert auf `category_name`.
  • Eine Gesamtzahl der Treffer veröffentlicht Autodoc nicht; `total_results` ist null, `known_pages_at_least` ist nur eine Untergrenze.
  • Einen Lagerbestand nennt Autodoc nicht. `units_left` ist Autodocs eigener Zähler und keine Lagermenge. Steht der Zähler auf 0, ist `in_stock` in der Trefferliste null, weil 0 dort nicht eindeutig „nicht lieferbar“ heißt; verlässlich ist die Verfügbarkeit in `product_detail`.
  • Kundenbewertungen tragen oft keine Sterne: In unserem Abruf hatten alle drei zurückgegebenen Bewertungen `rating: null`. Das heißt „ohne Sternwertung“, nicht null Sterne. Mehr als rund 25 Bewertungen pro Teil zeigt die Seite selbst nicht.
  • Gewicht und EAN stehen nur dann in der Antwort, wenn der Teilehersteller sie im Datenblatt angibt. Die Versandkosten sind Autodocs Pauschale (im Beispiel 6,95 €); einen möglichen Sperrgutzuschlag rechnet die API nicht hinzu.
  • Credits pro Aufruf: `vehicle_lookup` und `categories` 1, `search`, `product_detail` und `part_search` 2, `oem_lookup` 3. Fehlgeschlagene Aufrufe, auch NOT_FOUND, werden nicht berechnet.
  • Teile, Preise und Trefferlisten werden bei jedem Aufruf neu gelesen; zwischengespeichert wird nur die Kategorieliste (bis zu 6 Stunden). Ein Preis gilt für den Moment des Abrufs, und Autodoc schreibt selbst in `price_valid_until`, bis wann: bei unserem Abruf am 27. Oktober bis zum 28. Oktober.