API

autolina.ch API: Occasionen und Neuwagen aus der Schweiz mit Preis in CHF als JSON

Die Schnittstelle liefert die Auto-Inserate von autolina.ch als JSON: Marke, Modell und Version, Zustand, Preis in Franken, Leasingrate, erste Inverkehrsetzung, Kilometerstand, PS und kW, Antrieb, Karosserie, Ort mit Kanton und Garage oder Privatverkäufer. Im einzelnen Inserat kommen der Neupreis, Garantie, das Datum der letzten MFK, Verbrauch, CO2, Ausstattung und die Beschreibung dazu. Gefiltert wird mit den Werten, die autolina.ch selbst verwendet, darunter der Kanton (ZH, BE, VD … und FL für Liechtenstein) und «frisch ab MFK». Ein Wert, den die Seite nicht kennt, wird abgelehnt, statt still den ganzen Bestand zu liefern. Garagen, die eigene Fahrzeuge aufschalten oder Kundenanfragen beantworten möchten, brauchen etwas anderes: Die Schnittstelle liest ausschliesslich, inserieren lässt sich darüber nichts.

Endpunkte

endpointWas zurückkommtPflicht
searchInserate nach Marke (Name oder id), Modell, Modellgruppe, Freitext in der Versionszeile, Zustand, Treibstoff (inklusive jeder Hybridart), Getriebe, Antrieb, Karosserie, Farbe, Kanton, Preis in CHF, Kilometer, Jahrgang, PS, Sitzplätze, Inseratalter, nur mit Fotos, ab MFK und Bestand einer Garage. 1 bis 100 Zeilen pro Seite, zehn Sortierungen.alle optional
listingDas ganze Inserat zu einer `listing_id`: Preis und Neupreis in CHF, Leasingrate, technische Daten, Gewichte und Anhängelast, Verbrauch, CO2, Energieetikette, Euronorm, Batteriekapazität und Reichweite, Garantie, Datum der letzten MFK, Eintausch und WIR-Zahlung möglich ja/nein, Ausstattung, Beschreibung, Fotos und der Verkäufer mit den Kontaktangaben aus dem Inserat. Ein entferntes Inserat ergibt NOT_FOUND.listing_id
makesAlle Marken auf autolina.ch mit id, Slug und der aktuellen Zahl der Inserate.alle optional
modelsDie Modelle einer Marke mit ihren Modellgruppen, zum Beispiel «GOLF (alle)» für Golf, Golf Variant, Golf Plus, Golf Sportsvan und Golf Cabriolet.make
dealerDas Profil einer Garage: Adresse, Kanton, Telefon, Website, Beschreibung und die Marken, die sie gerade an Lager hat. Die Fahrzeuge dazu liefert `search` mit `dealer_id`.dealer_id
dealersDas Garagenverzeichnis (beim Bau 2'329 Einträge), seitenweise, filterbar nach Namensteil, Marke und Gütesiegel.alle optional

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

Funktionierendes Beispiel

Gesucht waren Skoda-Occasionen mit Allradantrieb bis 25'000 Franken, ab MFK, aus den Kantonen Zürich und Bern: 68 Treffer. Obwohl nur Occasionen gesucht wurden, tragen fünf der ersten zwanzig `is_new_listing: true`. Das Feld ist die Markierung «neu inseriert» und sagt nichts über den Zustand; der steht in `condition`. Für den Octavia unten aus Meikirch liefert `listing` einen Neupreis von 32'250 Franken bei 9'800 Franken Verkaufspreis, `mfk_inspected: true` und als Datum der letzten MFK Februar 2025. Der Name der Garage ist gekürzt.

Anfrage
curl -X POST https://api.reefapi.com/autolina/v1/search \
  -H "x-api-key: IHR_API_SCHLUESSEL" \
  -H "content-type: application/json" \
  -d '{"make": "skoda", "canton": "ZH,BE", "condition": "used", "mfk_inspected": true, "drive": "all_wheel", "price_max": 25000}'
Antwort (gekürzt)
{
  "ok": true,
  "data": {
    "listings": [
      ...
      {
        "listing_id": "5172244",
        "url": "https://www.autolina.ch/auto/skoda-octavia/5172244",
        "title": "SKODA Octavia Combi 2.0 TDI Clever 4x4 DSG",
        "make": "SKODA",
        "model": "OCTAVIA",
        "model_id": 518,
        "condition": "used",
        "condition_code": 1102,
        "is_new_listing": true,
        "price": 9800,
        "currency": "CHF",
        "lease_rate_monthly": null,
        "first_registration": "2019-05-01",
        "mileage_km": 168000,
        "power_hp": 150,
        "power_kw": 110,
        "fuel": "diesel",
        "transmission": "automatic",
        "drive": "all_wheel",
        "body_type": "estate",
        "location": { "postcode": "3045", "city": "Meikirch", "canton": "BE", "country": "CH" },
        "seller": { "type": "dealer", ... },
        "quality_seals": [],
        ...
      },
      ...
      {
        "listing_id": "5165917",
        "title": "SKODA Karoq 2.0 TDI CR Style 4x4 DSG *ALCANTARA-SITZE - PANORAMA-",
        "condition": "used",
        "is_new_listing": false,
        "price": 21999,
        "currency": "CHF",
        "first_registration": "2018-06-01",
        "mileage_km": 70900,
        "power_hp": 150,
        "body_type": "suv",
        "location": { "postcode": "8051", "city": "Zürich", "canton": "ZH", "country": "CH" },
        ...
      },
      ...
    ]
  },
  "meta": {
    "record_count": 20,
    "total": 68,
    "total_is_exact": true,
    "pagination": { "page": 1, "limit": 20, "last_page": 4, "has_more": true },
    "filters_applied": { "make_id": [46], "condition": ["used"], "drive": ["all_wheel"], "canton": ["ZH", "BE"], "price": "-25000", "mfk_inspected": true },
    "charged_credits": 2,
    "cache_hit": false,
    "mode": "live"
  }
}

autolina.ch auslesen: wo die Seite anders funktioniert, als sie aussieht

Die Markierung, die wie «Neuwagen» aussieht, bedeutet «neu inseriert». Beim Bau am 14. Oktober 2026 trug ein Ford Transit von 2017 mit 171'000 km diese Markierung, und die strukturierten Daten der Inseratseite selbst wiesen ihn deshalb als neu aus (`NewCondition`). Das wiederholte sich bei allen vier geprüften Occasionen mit dieser Markierung. Wer den Zustand aus diesem Feld ableitet, zählt frisch inserierte Occasionen als Neuwagen; hier kommt der Zustand nur aus der Fahrzeugart.

Unbekannte Filterwerte ignoriert autolina.ch ohne Meldung und antwortet mit HTTP 200 und dem ganzen Bestand. Ein erfundener Treibstoffcode, eine falsche Karosserie, eine unbekannte Sortierung und ein Preisbereich von 0 bis 0 ergaben beim Bau alle dieselbe ungefilterte Liste. Die API prüft deshalb jeden Wert gegen die Listen der Seite, bevor sie fragt.

Beim Blättern wird der Versatz ohne Seitengrösse übergangen: Ein Sprung auf Position 96'100 ohne `limit` lieferte wieder Seite 1. Und eine Leistung von 0 PS heisst «nicht angegeben». Der Filter bis 100 PS ergab beim Bau mit der Untergrenze −100 genau 6'417 Inserate, mit der Untergrenze 1 nur 5'784; die Differenz sind Autos ohne Leistungsangabe. Die API beginnt Leistungsbereiche deshalb bei 1 und gibt 0 PS als null zurück.

Gemeldet wird davon nichts. Ein eigenes Skript, das den Anteil der Neuwagen unter den frisch inserierten Autos auswertet, kommt mit der Markierung auf eine zu hohe Zahl; eines, das die durchschnittliche Leistung berechnet, mit den 0-PS-Inseraten auf eine zu tiefe.

Grenzen und ehrliche Hinweise

  • autolina.ch steht nicht hinter diesem Zugang; er läuft inoffiziell, ohne Vereinbarung oder Partnerschaft mit autolina.
  • Ohne Filter meldet autolina.ch eine Gesamtzahl, die über dem tatsächlich abrufbaren Bestand liegt (beim Bau 96'121 gemeldet, 91'221 abrufbar). Dann steht `total_is_exact: false`. Mit Filter stimmte die Zahl beim Bau mit den abrufbaren Zeilen überein.
  • In `listing` war `location` bei beiden abgerufenen Inseraten leer. Ort, Postleitzahl und Kanton stehen dort unter `seller`, in der Trefferliste dagegen unter `location`.
  • `new_price` kam bei einem der zwei Inserate als 0; das heisst, die Garage hat keinen Neupreis angegeben, nicht dass das Auto nichts gekostet hat.
  • `mfk_inspected` ist die Angabe der Garage. Beim Octavia im Beispiel stand sie auf true, das Datum der letzten MFK war Februar 2025. Wer «frisch ab MFK» wörtlich nimmt, prüft `inspection_date` mit.
  • Ungewöhnliche Werte gibt die API so weiter, wie sie inseriert sind, etwa Kilometerstände von 999'999 oder eine erste Inverkehrsetzung in der Zukunft. Bereinigt wird nichts.
  • `listing` enthält Telefon, WhatsApp und E-Mail aus dem Inserat, auch bei Privatverkäufern und ungekürzt. Eine Preisauswertung kommt ohne sie aus; wer sie speichert, verantwortet das selbst.
  • Abgerechnet wird je Aufruf: 2 Credits für `search` und `models`, 1 Credit für `listing`, `makes`, `dealer` und `dealers`.