leasingfriday.de

Documentation language

Vehicle Data API

Structured vehicle data for Germany: brands, models, trims (powertrain variants), technical details, prices, EV fields and comparison. JSON · snake_case · REST

Quick start

Get your first response in three steps:

  1. Get an API key – pick a plan on RapidAPI and generate a key.
  2. Send a request
  3. Receive JSON
Example – 3 Tesla trims with EV data
curl "https://leasingfriday.de/api/v1/trims?brand=tesla&has_ev_data=true&limit=3" \
  -H "X-API-Key: YOUR_KEY"
Response (truncated)
{
  "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

The REST API lives at /api/v1/*. The website only shows a demo excerpt; full depth (all trims, EV data, dimensions, quality, bulk filters) is available only via the API.

Updated daily – Our vehicle data (prices, leasing availability, technical specs and EV fields) is refreshed automatically every day. Use the updated_since filter to fetch only changed records.

EU / EEA market data (not US)Data reflects the European (EU/EEA) market, not US vehicle specifications. Horsepower/kW, trim variants, range figures (e.g. WLTP vs. EPA) and other fields may differ from US manufacturer data.

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

Local: http://localhost:3000/api/v1

Endpoints at a glance

MethodPathDescription
GET/brandsAll brands
GET/modelsModels (filters, pagination, sorting)
GET/models/{id}Single model including all trims
GET/trimsTrims (filters, pagination, sorting)
GET/trims/{id}Single trim
GET/compare?trims=…Compare up to 5 trims

Authentication

In production a valid API key is required. The key is provided via RapidAPI. In local development (VEHICLE_DATA_API_KEYS not set) requests without a key are accepted.

Header format

You can send the key using either header (pick one):

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

What happens without / with an invalid key?

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

RapidAPI

When using RapidAPI, authentication and billing are fully handled there – you follow the standard RapidAPI flow. For direct access outside RapidAPI, send the key via X-API-Key or Authorization: Bearer.

Rate limits

AttributeValue
Window1 minute (rolling)
Default limit120 requests / minute / key or IP
IdentificationAPI key (first 16 chars) or IP address
Header when exceededRetry-After (seconds)
HTTP status429 Too Many Requests

Limits may differ per RapidAPI plan. When exceeded you receive:

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

List endpoints (/models, /trims) return a pagination object:

pagination object
"pagination": {
  "page": 1,      // current page (1-based)
  "limit": 20,    // items per page
  "total": 87,    // total matches
  "total_pages": 5
}

Defaults

ParameterDefaultMinMax
page11
limit201100
orderascasc | desc

Sortable fields

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

GET /brands

All car brands, sorted alphabetically.

ParameterTypeExampleDescription
countrystringDEFilter brands by country (ISO 3166-1 alpha-2)
Example 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 – direct URL to the brand logo (PNG thumbnail). Vehicle model images are not included in the API at this time.

GET /models

Model list with rich filters and pagination.

ParameterTypeExampleDescription
brandstringbmwBrand slug
fuel_typestringElektroFuel type (see field reference)
vehicle_classstringKompaktVehicle class
body_typestringSUVBody type
is_activebooleantrueCurrently on the market
is_leasing_availablebooleantrueLeasing offer available
availability_statusstringaktivaktiv | auslaufend | eingestellt | nie_in_de
min_pricenumber30000List price from (EUR)
max_pricenumber60000List price up to (EUR)
min_hpinteger200Horsepower from
max_hpinteger400Horsepower up to
updated_sinceISO 86012026-03-01T00:00:00ZOnly models with updated_at ≥ value. UTC recommended. Invalid dates are ignored.
pageinteger1Page (from 1)
limitinteger20Results per page (1–100)
sortstringlist_pricename | list_price | horsepower_default | leasing_rate
orderstringdescasc | desc
Example 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}

Single model including all related trims.

ParameterTypeExampleDescription
idinteger (path)142Model ID
Example request
curl "https://leasingfriday.de/api/v1/models/142" -H "X-API-Key: YOUR_KEY"
Response (truncated)
{
  "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 if the ID does not exist: { "error": "not_found", "message": "Modell nicht gefunden" }

Note: This response includes all trims for the model by default and can be large for popular models. For targeted lists with pagination, /trims?model=<slug> is a better fit.

GET /trims

Trims (powertrain variants) with rich filters. Each trim includes nested objects for dimensions, ev_data, towing and quality.

ParameterTypeExampleDescription
brandstringteslaBrand slug (via model)
modelstringmodel-3Model slug
fuel_typestringElektroFuel type
transmissionstringAutomatikTransmission
drivetrainstringAllradantriebFrontantrieb | Hinterradantrieb | Allradantrieb
body_typestringLimousineBody type (model level)
is_activebooleantrueModel currently on the market
is_leasing_availablebooleantrueLeasing offer available
min_horsepowerinteger300Horsepower from
max_horsepowerinteger600Horsepower up to
min_pricenumber25000Model list price from (EUR)
max_pricenumber80000Model list price up to (EUR)
min_rangeinteger400Electric range from (km)
max_rangeinteger700Electric range up to (km)
has_ev_databooleantrueOnly trims with EV fields
has_dimensionsbooleantrueOnly trims with length/width/height
updated_sinceISO 86012026-03-15T00:00:00ZOnly trims with updated_at ≥ value. UTC recommended. Invalid dates are ignored.
pageinteger1Page (from 1)
limitinteger20Results per page (1–100)
sortstringhorsepowername | horsepower | torque_nm | acceleration_0_100 | top_speed_kmh | electric_range_km
orderstringdescasc | desc
Example 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 (one trim shown)
{
  "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}

Single trim by ID. Same shape as an item from /trims, wrapped in { "data": { … } }.

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

404 if the ID does not exist: { "error": "not_found", "message": "Trim nicht gefunden" }

GET /compare

Compare up to 5 trims side by side. Returns an array in the same format as /trims.

ParameterTypeExampleDescription
trimsstring (required)1333,1335,805Comma-separated trim IDs (max. 5)
Example request
curl "https://leasingfriday.de/api/v1/compare?trims=1333,1335" -H "X-API-Key: YOUR_KEY"
Response (truncated)
{
  "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, … },
      …
    }
  ]
}

Edge-case behaviour

  • Order: Trims are returned in database order, not necessarily in the order of the IDs you passed.
  • Non-existent IDs: Are silently ignored – the array only contains trims that were found.
  • Duplicates: (e.g. trims=1,1,2) are deduplicated automatically.
  • Invalid values: (e.g. trims=1,abc,3) are ignored; only valid integers count.
  • Errors: 400 if trims is missing, there are no valid IDs, or there are more than 5 IDs.

Errors

Error responses are always JSON with two fields: error (machine-readable code) and message (human-readable text).

HTTPerrorDescription
400bad_requestMissing or invalid parameters
401unauthorizedKey missing or invalid
404not_foundResource does not exist
405method_not_allowedOnly GET allowed
429rate_limit_exceededToo many requests (+ Retry-After header)
500internal_errorInternal server / DB error

JSON examples

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

Important enum values and data types. String field values are in German unless noted otherwise (API payloads match the database).

fuel_type

Models: Benzin · Diesel · Elektro · Hybrid

Trims (finer granularity): 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 (on sale) · auslaufend (still orderable, phasing out) · eingestellt (discontinued) · nie_in_de (never offered in Germany). API values: aktiv | auslaufend | eingestellt | nie_in_de.

quality.source (trim_source)

Currently: llm (AI-generated, manually reviewed). Possible later: spec_db (verified source) · manual (hand-entered).

quality.score (data_quality_score)

Integer 0–100. Higher values = more verified fields. May be null if not calculated yet.

Important units

FieldUnit
horsepowerPS (metric hp)
torque_nmNm
engine_sizelitres
engine_cccm³
consumptionl/100km or kWh/100km
co2_emissions / co2_g_kmg/km
acceleration_0_100seconds
top_speed_kmhkm/h
weightkg
dimensions (length/width/height)mm
trunk_volume_l / tank_volume_llitres
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

Many fields may be null. Meaning of the most important ones:

FieldIf null
ev_datanull for non-EV / non-PHEV (fuel_type is neither "Elektro" nor "Plug-in-Hybrid"). When present, nested fields may still be null if unknown.
battery_capacity_kwhData unavailable or not an EV
electric_range_kmData unavailable or not an EV
charging_dc_kwDC fast charging not supported or value unknown
charging_ac_kwAC charging power unknown
engine_size / engine_ccNot applicable (e.g. BEV) or not recorded
year_toModel still in production
list_priceNo official list price known
leasing_rateNo leasing offer recorded
trunk_volume_lTrunk volume unknown
tank_volume_lAlways null for EVs; for ICE: not recorded
payload_kg / max_towing_weight_kgPayload / towing data unavailable
data_quality_scoreScore not calculated yet
length_mm / width_mm / height_mmDimensions not recorded
is_active / is_leasing_availableStatus unknown (rare)
co2_emissions / co2_g_kmUsually 0 for EVs; null if missing

OpenAPI

Machine-readable specification (YAML, OpenAPI 3.0.3). Same file as in the repository at docs/vehicle-api-v1.openapi.yaml. Import directly into Swagger UI, Postman or code generators.

Get OpenAPI spec

Pricing / get access

Access and billing are handled via RapidAPI. After subscribing you receive your API key there.

Free

0 €/ month

Testing & evaluation

  • All endpoints
  • 100 requests / month
  • Community support
Start for free

Basic

19 €/ month

Small projects & MVPs

  • All endpoints
  • 5,000 requests / month
  • Email support
Choose plan
Popular

Pro

49 €/ month

Production use

  • All endpoints
  • 25,000 requests / month
  • Priority support
  • Daily updates
Choose plan

Business

99 €/ month

Commercial & B2B

  • All endpoints
  • 100,000 requests / month
  • Priority support
  • Daily updates
  • SLA on request
Choose plan

All plans include full access to brands, models, trims, technical data, EV fields, dimensions and the compare endpoint. Data is updated daily.

Need more volume? Contact us for custom enterprise access.