leasingfriday.de

Dokumentationssprache

Vehicle Data API

Strukturierte Fahrzeugdaten für Deutschland: Marken, Modelle, Motorisierungen (Trims), technische Details, Preise, EV-Felder und Vergleich. JSON · snake_case · REST

Quick Start

In 3 Schritten zur ersten Response:

  1. API-Key holen – auf RapidAPI Plan wählen und Key generieren.
  2. Request senden
  3. JSON erhalten
Beispiel – 3 Tesla-Trims mit EV-Daten
curl "https://leasingfriday.de/api/v1/trims?brand=tesla&has_ev_data=true&limit=3" \
  -H "X-API-Key: YOUR_KEY"
Antwort (gekürzt)
{
  "data": [
    {
      "id": 1333,
      "name": "Model 3 Performance AWD",
      "year": 2025,
      "brand": { "name": "Tesla", "slug": "tesla" },
      "model": { "name": "Model 3", "slug": "model-3" },
      "fuel_type": "Elektro",
      "horsepower": 460,
      "torque_nm": 660,
      "acceleration_0_100": 3.1,
      "top_speed_kmh": 262,
      "ev_data": {
        "battery_capacity_kwh": 78.1,
        "electric_range_km": 528,
        "charging_ac_kw": 11.0,
        "charging_dc_kw": 250.0
      },
      "dimensions": {
        "length_mm": 4720,
        "width_mm": 1849,
        "height_mm": 1441,
        "trunk_volume_l": 594,
        "tank_volume_l": null
      },
      "towing": { "payload_kg": null, "max_towing_weight_kg": 1000 },
      "quality": { "score": 92, "source": "spec_db", "is_generated": false }
    }
  ],
  "pagination": { "page": 1, "limit": 3, "total": 12, "total_pages": 4 }
}

Overview

Die REST-API liegt unter /api/v1/*. Die Website zeigt nur einen Demo-Auszug; vollständige Tiefe (alle Trims, EV, Maße, Qualität, Bulk-Filter) ist ausschließlich über die API zugänglich.

Täglich aktualisiert – Unsere Fahrzeugdaten (Preise, Leasing-Verfügbarkeit, technische Spezifikationen und EV-Felder) werden täglich automatisch aktualisiert. Nutze den Filter updated_since, um nur geänderte Datensätze abzurufen.

EU-/EWR-Marktdaten (nicht USA)Die Daten beziehen sich auf den europäischen Markt (EU/EWR), nicht auf US-Fahrzeug-Spezifikationen. PS/kW, Ausstattungsvarianten, Reichweiten (z. B. WLTP vs. EPA) und weitere Felder können von US-Herstellerangaben abweichen.

Base URL
https://leasingfriday.de/api/v1

Lokal: http://localhost:3000/api/v1

Endpoints auf einen Blick

MethodePfadBeschreibung
GET/brandsAlle Marken
GET/modelsModelle (Filter, Pagination, Sortierung)
GET/models/{id}Einzelnes Modell inkl. aller Trims
GET/trimsTrims (Filter, Pagination, Sortierung)
GET/trims/{id}Einzelner Trim
GET/compare?trims=…Bis zu 5 Trims vergleichen

Authentication

In Produktion ist ein gültiger API-Key erforderlich. Der Key wird über RapidAPI bereitgestellt. In der lokalen Entwicklung (VEHICLE_DATA_API_KEYS nicht gesetzt) werden Anfragen ohne Key akzeptiert.

Header-Format

Der Key kann über zwei Header gesendet werden (einen davon wählen):

  • X-API-Key: sk_live_abc123…
  • Authorization: Bearer sk_live_abc123…
Authentifizierter Request
curl "https://leasingfriday.de/api/v1/brands" \
  -H "X-API-Key: sk_live_abc123"

Was passiert ohne / mit falschem Key?

401 Unauthorized
{
  "error": "unauthorized",
  "message": "Missing or invalid API key"
}

RapidAPI

Bei Nutzung über RapidAPI erfolgt Authentifizierung und Abrechnung vollständig über RapidAPI – du nutzt einfach den normalen RapidAPI-Flow. Bei Direktzugriff außerhalb von RapidAPI sendest du den Key per X-API-Key oder Authorization: Bearer.

Rate Limits

MerkmalWert
Fenster1 Minute (gleitend)
Standard-Limit120 Requests / Minute / Key bzw. IP
IdentifikationAPI-Key (erste 16 Zeichen) oder IP-Adresse
Header bei ÜberschreitungRetry-After (seconds)
HTTP-Status429 Too Many Requests

Das Limit kann je RapidAPI-Plan abweichen. Bei Überschreitung erhältst du:

429 Rate Limit
HTTP/1.1 429 Too Many Requests
Retry-After: 42

{
  "error": "rate_limit_exceeded",
  "message": "Too many requests",
  "retry_after": 42
}

Pagination & Sorting

Endpunkte mit Listen (/models, /trims) geben ein pagination-Objekt zurück:

pagination-Objekt
"pagination": {
  "page": 1,      // aktuelle Seite (1-basiert)
  "limit": 20,    // Einträge pro Seite
  "total": 87,    // Gesamtzahl Treffer
  "total_pages": 5
}

Standardwerte

ParameterDefaultMinMax
page11
limit201100
orderascasc | desc

Sortierbare Felder

Endpointsort-Werte
/modelsname (Standard), list_price, horsepower_default, leasing_rate
/trimsname (Standard), horsepower, torque_nm, acceleration_0_100, top_speed_kmh, electric_range_km

GET /brands

Alle Automarken, alphabetisch sortiert.

ParameterTypBeispielBeschreibung
countrystringDEMarken nach Land filtern (ISO 3166-1 alpha-2)
Beispiel-Request
curl "https://leasingfriday.de/api/v1/brands" -H "X-API-Key: YOUR_KEY"
Response
{
  "data": [
    {
      "id": 1,
      "name": "Audi",
      "slug": "audi",
      "country": null,
      "logo_url": "https://raw.githubusercontent.com/…/audi.png",
      "model_count": 38
    },
    {
      "id": 2,
      "name": "BMW",
      "slug": "bmw",
      "country": null,
      "logo_url": "https://raw.githubusercontent.com/…/bmw.png",
      "model_count": 45
    }
  ],
  "total": 42
}

logo_url – direkter Link zum Markenlogo (PNG, Thumbnail). Fahrzeugmodell-Bilder sind derzeit nicht in der API enthalten.

GET /models

Modellliste mit umfangreichen Filtern und Pagination.

ParameterTypBeispielBeschreibung
brandstringbmwMarken-Slug
fuel_typestringElektroKraftstoffart (siehe Field Reference)
vehicle_classstringKompaktFahrzeugklasse
body_typestringSUVKarosserieform
is_activebooleantrueAktuell im Markt
is_leasing_availablebooleantrueLeasing-Angebot verfügbar
availability_statusstringaktivaktiv | auslaufend | eingestellt | nie_in_de
min_pricenumber30000Listenpreis ab (EUR)
max_pricenumber60000Listenpreis bis (EUR)
min_hpinteger200PS ab
max_hpinteger400PS bis
updated_sinceISO 86012026-03-01T00:00:00ZNur Modelle mit updated_at ≥ Wert. UTC empfohlen. Ungültiges Datum wird ignoriert.
pageinteger1Seite (ab 1)
limitinteger20Ergebnisse pro Seite (1–100)
sortstringlist_pricename | list_price | horsepower_default | leasing_rate
orderstringdescasc | desc
Beispiel-Request
curl "https://leasingfriday.de/api/v1/models?brand=bmw&fuel_type=Elektro&min_hp=300&sort=list_price&order=desc&limit=2" \
  -H "X-API-Key: YOUR_KEY"
Response
{
  "data": [
    {
      "id": 142,
      "name": "iX M60",
      "slug": "ix-m60",
      "brand": { "name": "BMW", "slug": "bmw" },
      "vehicle_class": "Oberklasse",
      "body_type": "SUV",
      "fuel_type": "Elektro",
      "transmission": "Automatik",
      "horsepower": 619,
      "consumption": 21.9,
      "engine_cc": null,
      "co2_g_km": 0,
      "list_price": 131900,
      "leasing_rate": 1399,
      "is_active": true,
      "is_leasing_available": true,
      "availability_status": "aktiv",
      "year_from": 2022,
      "year_to": null,
      "trim_count": 3
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 2,
    "total": 7,
    "total_pages": 4
  }
}

GET /models/{id}

Einzelnes Modell inkl. aller zugehörigen Trims.

ParameterTypBeispielBeschreibung
idinteger (Pfad)142Modell-ID
Beispiel-Request
curl "https://leasingfriday.de/api/v1/models/142" -H "X-API-Key: YOUR_KEY"
Response (gekürzt)
{
  "data": {
    "id": 142,
    "name": "iX M60",
    "slug": "ix-m60",
    "brand": { "name": "BMW", "slug": "bmw" },
    "vehicle_class": "Oberklasse",
    "body_type": "SUV",
    "fuel_type": "Elektro",
    "transmission": "Automatik",
    "horsepower": 619,
    "consumption": 21.9,
    "engine_cc": null,
    "co2_g_km": 0,
    "list_price": 131900,
    "leasing_rate": 1399,
    "is_active": true,
    "is_leasing_available": true,
      "availability_status": "aktiv",
      "year_from": 2022,
      "year_to": null,
      "trim_count": 3,
      "trims": [
      {
        "id": 1501,
        "name": "iX M60 AWD",
        "year": 2025,
        "fuel_type": "Elektro",
        "engine_size": null,
        "horsepower": 619,
        "torque_nm": 795,
        "consumption": 21.9,
        "co2_emissions": 0,
        "transmission": "Automatik",
        "drivetrain": "Allradantrieb",
        "acceleration_0_100": 3.8,
        "top_speed_kmh": 250,
        "doors": 5,
        "seats": 5,
        "weight": 2640,
        "dimensions": {
          "length_mm": 4953,
          "width_mm": 1967,
          "height_mm": 1695,
          "trunk_volume_l": 500,
          "tank_volume_l": null
        },
        "ev_data": {
          "battery_capacity_kwh": 111.5,
          "electric_range_km": 502,
          "charging_ac_kw": 11.0,
          "charging_dc_kw": 195.0
        },
        "towing": {
          "payload_kg": 640,
          "max_towing_weight_kg": 2500
        },
        "quality": {
          "score": 95,
          "source": "spec_db",
          "is_generated": false
        }
      }
    ]
  }
}

404 wenn die ID nicht existiert: { "error": "not_found", "message": "Modell nicht gefunden" }

Hinweis: Diese Response enthält standardmäßig alle Trims des Modells und kann bei beliebten Modellen umfangreich werden. Für gezielte Listen mit Pagination ist /trims?model=<slug> besser geeignet.

GET /trims

Trims (Motorisierungen) mit umfangreichen Filtern. Jeder Trim enthält verschachtelte Objekte für dimensions, ev_data, towing und quality.

ParameterTypBeispielBeschreibung
brandstringteslaMarken-Slug (filtern über Modell)
modelstringmodel-3Modell-Slug
fuel_typestringElektroKraftstoffart
transmissionstringAutomatikGetriebeart
drivetrainstringAllradantriebFrontantrieb | Hinterradantrieb | Allradantrieb
body_typestringLimousineKarosserieform (auf Modell-Ebene)
is_activebooleantrueModell aktuell im Markt
is_leasing_availablebooleantrueLeasing-Angebot vorhanden
min_horsepowerinteger300PS ab
max_horsepowerinteger600PS bis
min_pricenumber25000Listenpreis des Modells ab (EUR)
max_pricenumber80000Listenpreis des Modells bis (EUR)
min_rangeinteger400Elektrische Reichweite ab (km)
max_rangeinteger700Elektrische Reichweite bis (km)
has_ev_databooleantrueNur Trims mit EV-Feldern
has_dimensionsbooleantrueNur Trims mit Länge/Breite/Höhe
updated_sinceISO 86012026-03-15T00:00:00ZNur Trims mit updated_at ≥ Wert. UTC empfohlen. Ungültiges Datum wird ignoriert.
pageinteger1Seite (ab 1)
limitinteger20Ergebnisse pro Seite (1–100)
sortstringhorsepowername | horsepower | torque_nm | acceleration_0_100 | top_speed_kmh | electric_range_km
orderstringdescasc | desc
Beispiel-Request
curl "https://leasingfriday.de/api/v1/trims?brand=audi&has_dimensions=true&min_horsepower=200&limit=3" \
  -H "X-API-Key: YOUR_KEY"
Response (ein Trim gezeigt)
{
  "data": [
    {
      "id": 805,
      "name": "A4 45 TFSI quattro",
      "year": 2025,
      "brand": { "name": "Audi", "slug": "audi" },
      "model": { "name": "A4", "slug": "a4" },
      "fuel_type": "Benzin",
      "engine_size": 2.0,
      "horsepower": 265,
      "torque_nm": 370,
      "consumption": 7.1,
      "co2_emissions": 162,
      "transmission": "Automatik",
      "drivetrain": "Allradantrieb",
      "acceleration_0_100": 5.8,
      "top_speed_kmh": 250,
      "doors": 4,
      "seats": 5,
      "weight": 1680,
      "dimensions": {
        "length_mm": 4762,
        "width_mm": 1847,
        "height_mm": 1428,
        "trunk_volume_l": 460,
        "tank_volume_l": 54
      },
      "ev_data": null,
      "towing": {
        "payload_kg": 530,
        "max_towing_weight_kg": 1800
      },
      "quality": {
        "score": 88,
        "source": "spec_db",
        "is_generated": false
      }
    }
  ],
  "pagination": { "page": 1, "limit": 3, "total": 22, "total_pages": 8 }
}

GET /trims/{id}

Einzelner Trim nach ID. Gleiche Struktur wie ein Element aus /trims, verpackt in { "data": { … } }.

Beispiel-Request
curl "https://leasingfriday.de/api/v1/trims/805" -H "X-API-Key: YOUR_KEY"

404 wenn die ID nicht existiert: { "error": "not_found", "message": "Trim nicht gefunden" }

GET /compare

Bis zu 5 Trims nebeneinander vergleichen. Liefert ein Array im gleichen Format wie /trims.

ParameterTypBeispielBeschreibung
trimsstring (Pflicht)1333,1335,805Kommagetrennte Trim-IDs (max. 5)
Beispiel-Request
curl "https://leasingfriday.de/api/v1/compare?trims=1333,1335" -H "X-API-Key: YOUR_KEY"
Response (gekürzt)
{
  "data": [
    {
      "id": 1333,
      "name": "Model 3 Performance AWD",
      "brand": { "name": "Tesla", "slug": "tesla" },
      "model": { "name": "Model 3", "slug": "model-3" },
      "horsepower": 460,
      "ev_data": { "electric_range_km": 528, "charging_dc_kw": 250.0, … },
      …
    },
    {
      "id": 1335,
      "name": "Model 3 Long Range RWD",
      "brand": { "name": "Tesla", "slug": "tesla" },
      "model": { "name": "Model 3", "slug": "model-3" },
      "horsepower": 283,
      "ev_data": { "electric_range_km": 702, "charging_dc_kw": 170.0, … },
      …
    }
  ]
}

Verhalten bei Sonderfällen

  • Reihenfolge: Die Trims werden in DB-Reihenfolge zurückgegeben, nicht zwingend in der Reihenfolge der übergebenen IDs.
  • Nicht existierende IDs: Werden still ignoriert – das Array enthält nur gefundene Trims.
  • Duplikate: (z. B. trims=1,1,2) werden automatisch dedupliziert.
  • Ungültige Werte: (z. B. trims=1,abc,3) werden ignoriert; nur gültige Integer zählen.
  • Fehler: 400 wenn trims fehlt, keine gültigen IDs oder > 5 IDs.

Errors

Fehlerantworten sind immer JSON mit zwei Feldern: error (maschinenlesbarer Code) und message (lesbarer Text).

HTTPerrorBeschreibung
400bad_requestFehlende oder ungültige Parameter
401unauthorizedKey fehlt oder ungültig
404not_foundRessource existiert nicht
405method_not_allowedNur GET erlaubt
429rate_limit_exceededZu viele Anfragen (+ Retry-After Header)
500internal_errorInterner Server-/DB-Fehler

JSON-Beispiele

401 Unauthorized
{
  "error": "unauthorized",
  "message": "Missing or invalid API key"
}
429 Too Many Requests
{
  "error": "rate_limit_exceeded",
  "message": "Too many requests",
  "retry_after": 42
}
400 Bad Request
{
  "error": "bad_request",
  "message": "Maximal 5 Trims können verglichen werden"
}
404 Not Found
{
  "error": "not_found",
  "message": "Modell nicht gefunden"
}
500 Internal Server Error
{
  "error": "internal_error",
  "message": "Fehler beim Abrufen der Modelle"
}

Field Reference

Wichtige Enum-Werte und Datentypen. Alle String-Felder sind in deutscher Sprache, soweit nicht anders angegeben.

fuel_type

Modelle: Benzin · Diesel · Elektro · Hybrid

Trims (feingranularer): Benzin · Diesel · Elektro · Hybrid · Plug-in-Hybrid · Erdgas · Wasserstoff

transmission

Automatik · Manuell · DCT · DSG · PDK · S tronic · CVT · F1 · Schaltung

drivetrain

Frontantrieb · Hinterradantrieb · Allradantrieb

availability_status

aktiv (im Handel verfügbar) · auslaufend (noch bestellbar, bald eingestellt) · eingestellt (nicht mehr erhältlich) · nie_in_de (wurde in Deutschland nie angeboten). API-Werte: aktiv | auslaufend | eingestellt | nie_in_de.

quality.source (trim_source)

Aktuell: llm (KI-generiert, manuell geprüft). Zukünftig möglich: spec_db (geprüfte Quelle) · manual (manuell erfasst).

quality.score (data_quality_score)

Ganzzahl 0–100. Höhere Werte = mehr verifizierte Felder. Kann null sein, wenn noch nicht berechnet.

Wichtige Einheiten

FeldEinheit
horsepowerPS
torque_nmNm
engine_sizeLiter
engine_cccm³
consumptionl/100km oder kWh/100km
co2_emissions / co2_g_kmg/km
acceleration_0_100Sekunden
top_speed_kmhkm/h
weightkg
dimensions (length/width/height)mm
trunk_volume_l / tank_volume_lLiter
battery_capacity_kwhkWh
electric_range_kmkm (WLTP)
charging_ac_kw / charging_dc_kwkW
payload_kg / max_towing_weight_kgkg
list_price / leasing_rateEUR

Null Semantics

Viele Felder können null sein. Hier die Bedeutung der wichtigsten:

FeldWenn null
ev_datanull bei Nicht-EV/Nicht-PHEV (fuel_type ist weder Elektro noch Plug-in-Hybrid). Wenn vorhanden, können einzelne Unterfelder dennoch null sein, falls der Wert unbekannt ist.
battery_capacity_kwhDaten nicht verfügbar oder Nicht-EV
electric_range_kmDaten nicht verfügbar oder Nicht-EV
charging_dc_kwDC-Schnellladung nicht unterstützt oder Wert unbekannt
charging_ac_kwAC-Ladeleistung unbekannt
engine_size / engine_ccNicht relevant (z. B. reine E-Fahrzeuge) oder nicht erfasst
year_toModell noch in Produktion
list_priceKein offizieller Listenpreis bekannt
leasing_rateKein Leasing-Angebot erfasst
trunk_volume_lKofferraumvolumen nicht bekannt
tank_volume_lBei E-Fahrzeugen immer null; bei Verbrennern: nicht erfasst
payload_kg / max_towing_weight_kgAnhängelast-/Zuladungsdaten nicht verfügbar
data_quality_scoreScore noch nicht berechnet
length_mm / width_mm / height_mmAbmessungen nicht erfasst
is_active / is_leasing_availableStatus unbekannt (selten)
co2_emissions / co2_g_kmBei E-Fahrzeugen i. d. R. 0, bei fehlendem Wert null

OpenAPI

Maschinenlesbare Spezifikation (YAML, OpenAPI 3.0.3). Gleiche Datei wie im Repository unter docs/vehicle-api-v1.openapi.yaml. Kann direkt in Swagger UI, Postman oder Code-Generatoren importiert werden.

OpenAPI abrufen

Pricing / Get Access

Zugang und Abrechnung laufen über RapidAPI. Nach dem Abo erhältst du dort deinen API-Key.

Free

0 €/ Monat

Testen & Evaluation

  • Alle Endpunkte
  • 100 Requests / Monat
  • Community Support
Kostenlos starten

Basic

19 €/ Monat

Kleine Projekte & MVPs

  • Alle Endpunkte
  • 5.000 Requests / Monat
  • E-Mail Support
Plan wählen
Beliebt

Pro

49 €/ Monat

Produktive Nutzung

  • Alle Endpunkte
  • 25.000 Requests / Monat
  • Priority Support
  • Tägliche Updates
Plan wählen

Business

99 €/ Monat

Kommerziell & B2B

  • Alle Endpunkte
  • 100.000 Requests / Monat
  • Priority Support
  • Tägliche Updates
  • SLA auf Anfrage
Plan wählen

Alle Tarife beinhalten vollen Zugriff auf Marken, Modelle, Trims, technische Daten, EV-Felder, Dimensionen und den Compare-Endpunkt. Die Daten werden täglich aktualisiert.

Mehr Volumen benötigt? Kontaktiere uns für individuelle Enterprise-Zugänge.