Gratis nummerplade API

Vi stiller et gratis REST API til rådighed, som giver dig direkte adgang til køretøjsdata fra det danske Motorregister. Med en simpel HTTP-forespørgsel kan du slå enhver dansk nummerplade op og få mærke, model, tekniske specifikationer, synshistorik, miljødata og meget mere retur som struktureret JSON.

Aftalen er enkel: du krediterer os med et synligt link til autotelli.dk på din hjemmeside, og vi giver dig en API-nøgle med op til 500 opslag pr. dag. Ingen kreditkort, ingen abonnementer, ingen skjulte begrænsninger. Bare en kreditering.

API-et er velegnet til udviklerværktøjer, bilrelaterede apps, prisberegninger, værkstedssystemer og alle andre projekter, der har brug for danske køretøjsoplysninger.

Hvad er Motorregistret (DMR)?

Motorregistret (Det Digitale Motorregister, DMR) er det officielle danske register over køretøjer. Det administreres af Motorstyrelsen, og det er det samme register, som politiet, forsikringsselskaber og synsvirksomheder bruger. Vores API leverer data derfra. Vi tjekker Motorstyrelsens udgivelser hver time og henter nye data automatisk, så oplysningerne følger registrets seneste udgivelse. Det er ikke realtidsopslag, men data er aldrig forældede i ugevis.

Sådan får du en API-nøgle

Processen tager under fem minutter, og du kan begynde at lave opslag med det samme.

  1. Tilføj et synligt link til autotelli.dk på din hjemmeside. Det kan stå i footeren, på en ressource-side, i et blogindlæg eller hvor det ellers giver mening. Linket skal pege på https://autotelli.dk. Det vigtige er, at det er synligt på en offentligt tilgængelig side.
  2. Registrer dig på vores registreringsside med din e-mail, din hjemmesides URL og den specifikke URL, hvor linket er placeret.
  3. Vi tjekker linket automatisk og sender dig en API-nøgle med det samme. Hele processen er automatiseret, så du behøver ikke vente på en manuel godkendelse.

Endpoint

Alle opslag går til et enkelt endpoint:

GET https://nummerplade-tjek.dk/api/v1/vehicles/{nummerplade}

Erstat {nummerplade} med den nummerplade, du vil slå op. Mellemrum og bindestreger bliver ignoreret, og bogstaver konverteres automatisk til store bogstaver. Du kan altså sende både AB12345 og ab 12 345.

Autentificering

Send din API-nøgle som en HTTP-header med navnet X-API-Key:

X-API-Key: din_api_nøgle

Alle forespørgsler uden en gyldig API-nøgle returnerer HTTP 401. Nøgler, der er deaktiveret på grund af manglende backlink, returnerer HTTP 403.

Eksempel med curl

Her er et komplet eksempel, der slår nummerpladen AB12345 op:

curl -H "X-API-Key: dk_live_abc123def456" \
     https://nummerplade-tjek.dk/api/v1/vehicles/AB12345

Svarformat

Et vellykket opslag returnerer HTTP 200 med følgende JSON-struktur:

{
  "status": "ok",
  "data": {
    "plate": "AB12345",
    "vehicle": {
      "registration_number": "AB12345",
      "status": "Registreret",
      "type": "Personbil",
      "make": "AUDI",
      "model": "A6 AVANT",
      "variant": "3.0 TDI QUATTRO",
      "model_year": 2019,
      "first_reg_date": "2019-03-22",
      "status_date": "2019-03-22",
      "usage": "Privat personkørsel",
      "color": "Sort",
      "chassis_type": "Stationcar",
      "vin": "WAUZZZ4G3KN012345",
      "engine_cylinders": 6,
      "engine_volume": 2967,
      "engine_power": 170,
      "fuel_type": "Diesel",
      "is_hybrid": false,
      "total_weight": 2520,
      "seats": 5,
      "doors": 4,
      "trailer_maxweight_withbrakes": 2500,
      "mot_info": {
        "date": "2024-03-15",
        "result": "Godkendt",
        "mileage": 87432,
        "next_inspection_date": "2026-03-15"
      }
    },
    "environment": {
      "co2_emission": 149,
      "euro_norm": "Euro 6",
      "fuel_usage": 18.5,
      "ev_consumption": null,
      "particle_filter": 1,
      "driving_noise": 72
    },
    "equipment": [
      { "id": "ABS", "name": "ABS bremser", "quantity": 1 },
      { "id": "AIRBAG", "name": "Airbag", "quantity": 6 },
      { "id": "ESP", "name": "ESP", "quantity": 1 }
    ]
  },
  "source": "Motorregistret via nummerplade-tjek.dk",
  "timestamp": "2026-03-17T10:30:00.000Z"
}

Felter i vehicle-objektet

Felt Type Beskrivelse
registration_number string Nummerpladen i standardformat
status string Registreringsstatus (fx "Registreret", "Afmeldt")
type string Køretøjstype (fx "Personbil", "Varebil")
make string Bilmærke (fx "AUDI", "BMW", "VOLKSWAGEN")
model string Model (fx "A6 AVANT", "3-SERIE")
variant string Variant (fx "3.0 TDI QUATTRO")
model_year number Modelår
first_reg_date string Første registreringsdato (fx "2019-03-22")
status_date string Dato for seneste statusændring
usage string Anvendelse (fx "Privat personkørsel", "Taxikørsel")
curb_weight number Egenvægt i kg
roadworthy_weight number Køreklar vægt (minimum) i kg
max_speed number Tophastighed i km/t
mileage number Senest indberettet km-stand
traffic_damage boolean Registreret med trafikskade
leasing_from / leasing_to string Leasingperiode, hvis køretøjet er leaset
color string Farve (fx "Sort", "Hvid")
chassis_type string Karosseritype (fx "Stationcar", "Sedan")
vin string Stelnummer (Vehicle Identification Number)
engine_cylinders number Antal cylindre
engine_volume number Motorvolumen i kubikcentimeter
engine_power number Motoreffekt i kW
fuel_type string Brændstoftype (fx "Benzin", "Diesel", "El")
is_hybrid boolean Om køretøjet er en hybrid
total_weight number Totalvægt i kg
seats number Antal siddepladser
doors number Antal døre
trailer_maxweight_withbrakes number Maks. tilladelig totalvægt for påhængskøretøj med bremser (kg)

Felter i mot_info-objektet

Felt Type Beskrivelse
date string Dato for seneste syn (ISO 8601)
result string Resultat af seneste syn (fx "Godkendt", "Ikke godkendt")
mileage number Kilometertal ved seneste syn
next_inspection_date string Dato for næste periodiske syn (ISO 8601)

Felter i environment-objektet

Felt Type Beskrivelse
co2_emission number CO2-udledning i g/km
euro_norm string Euronorm (fx "Euro 6", "Euro 5")
fuel_usage number Brændstofforbrug i km/l
ev_consumption number Elforbrug i Wh/km (kun el- og plug-in-hybridbiler, ellers null)
particle_filter number Partikelfilter (1 = ja, 0 = nej)
driving_noise number Støjniveau ved kørsel i dB

Felter i equipment-arrayet

Felt Type Beskrivelse
id string Udstyrets identifikationskode
name string Udstyrets navn (fx "ABS bremser", "Airbag")
quantity number Antal (fx 6 airbags)

Alle felter kan være null eller mangle helt, hvis Motorregistret ikke har data for det pågældende køretøj. Din kode bør håndtere manglende felter.

Hvad indeholder API-et ikke?

For at sætte de rette forventninger: API-et returnerer køretøjets tekniske data og status fra Motorregistret. Det indeholder ikke ejerens navn, adresse eller personoplysninger, ingen forsikringsoplysninger og ingen tinglysning eller gæld. Vil du finde ud af, hvem der ejer en bil, kan du altså ikke bruge API-et til det, da de oplysninger er beskyttede.

Fejlkoder

Når noget går galt, returnerer API-et en JSON-body med et error-felt og en passende HTTP-statuskode:

HTTP-kode Betydning Typisk årsag
400 Ugyldig forespørgsel Nummerpladen har et ugyldigt format
401 Ikke autoriseret API-nøgle mangler eller er ugyldig
403 Adgang nægtet API-nøglen er deaktiveret (typisk manglende backlink)
404 Ikke fundet Nummerpladen findes ikke i Motorregistret
429 For mange forespørgsler Den daglige grænse på 500 opslag er nået
502 Serverfejl Midlertidig fejl i forbindelse med datakilden

Fejlsvar har altid denne struktur:

{
  "error": "Beskrivelse af fejlen"
}

Kodeeksempler

Herunder finder du eksempler på, hvordan du bruger API-et i de mest almindelige programmeringssprog.

JavaScript (fetch)

async function hentKøretøj(nummerplade, apiKey) {
  const response = await fetch(
    `https://nummerplade-tjek.dk/api/v1/vehicles/${nummerplade}`,
    {
      headers: {
        'X-API-Key': apiKey,
      },
    }
  );

  if (!response.ok) {
    const fejl = await response.json();
    throw new Error(fejl.error || 'Ukendt fejl');
  }

  const data = await response.json();
  return data;
}

// Brug:
hentKøretøj('AB12345', 'dk_live_abc123def456')
  .then((resultat) => {
    console.log(resultat.data.vehicle.make);
    console.log(resultat.data.vehicle.model);
  })
  .catch((fejl) => {
    console.error('Fejl:', fejl.message);
  });

Python (requests)

import requests

def hent_køretøj(nummerplade: str, api_key: str) -> dict:
    url = f"https://nummerplade-tjek.dk/api/v1/vehicles/{nummerplade}"
    headers = {"X-API-Key": api_key}

    response = requests.get(url, headers=headers)
    response.raise_for_status()

    return response.json()


# Brug:
try:
    resultat = hent_køretøj("AB12345", "dk_live_abc123def456")
    køretøj = resultat["data"]["vehicle"]
    print(f"{køretøj['make']} {køretøj['model']} ({køretøj['model_year']})")
except requests.HTTPError as e:
    print(f"Fejl: {e.response.json().get('error', 'Ukendt fejl')}")

PHP (cURL)

<?php
function hentKoeretoel(string $nummerplade, string $apiKey): array {
    $url = "https://nummerplade-tjek.dk/api/v1/vehicles/" . urlencode($nummerplade);

    $ch = curl_init($url);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HTTPHEADER => [
            "X-API-Key: " . $apiKey,
        ],
    ]);

    $response = curl_exec($ch);
    $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);

    $data = json_decode($response, true);

    if ($httpCode !== 200) {
        throw new Exception($data['error'] ?? 'Ukendt fejl');
    }

    return $data;
}

// Brug:
try {
    $resultat = hentKoeretoel("AB12345", "dk_live_abc123def456");
    $bil = $resultat['data']['vehicle'];
    echo $bil['make'] . " " . $bil['model'] . " (" . $bil['model_year'] . ")\n";
} catch (Exception $e) {
    echo "Fejl: " . $e->getMessage() . "\n";
}
?>

Vilkår

Når du bruger vores API, accepterer du følgende vilkår:

Ofte stillede spørgsmål

Er API-nøglen virkelig gratis?

Ja. Du betaler ikke noget for at bruge vores API. Til gengæld beder vi om en kreditering: et synligt link til autotelli.dk på din hjemmeside. Så længe linket er aktivt, har du fuld adgang til 500 opslag om dagen.

Kan man slå et registreringsnummer op?

Ja. Du sender nummerpladen til endpointet, og API-et returnerer køretøjets oplysninger fra Motorregistret som struktureret JSON. Det dækker både person- og varebiler, motorcykler, trailere og campingvogne.

Kan man slå ejer op på en nummerplade?

Nej. API-et returnerer ikke ejerens navn, adresse eller personoplysninger. Du får kun køretøjets tekniske data og registreringsstatus fra Motorregistret. Ejeroplysninger er beskyttede og er ikke en del af API-svaret.

Hvordan finder jeg udstyrslisten på en bil?

Hvert opslag indeholder et equipment-array med det fabriksmonterede udstyr, Motorregistret har registreret, for eksempel ABS, airbags og ESP. Hvert element har et id, et navn og et antal.

Kan man slå stelnummer (VIN) op?

Bilens stelnummer (VIN) indgår som feltet vehicle.vin i svaret, når du slår nummerpladen op. Der er endnu ikke et selvstændigt endpoint, der slår op direkte på stelnummer, så du finder VIN via nummerpladen.

Hvad sker der, hvis jeg fjerner min kreditering?

Vi tjekker krediteringen ugentligt. Hvis vi ikke kan finde dit link i tre på hinanden følgende uger, sætter vi nøglen på pause. Du kan altid genaktivere den ved at sætte linket op igen og kontakte os på [email protected].

Kan jeg få flere end 500 opslag om dagen?

Standard-grænsen er 500 daglige opslag. Har du brug for mere, så skriv til [email protected], og vi finder en løsning.

Hvilke data returnerer API-et?

Du får adgang til køretøjsoplysninger fra Motorregistret: mærke, model, variant, årgang, farve, motor, brændstof, vægt, sæder, døre, VIN, synshistorik, euronorm, CO2-udledning, brændstofforbrug og udstyr. Forsikringsoplysninger, ejeroplysninger og tinglysning er ikke en del af API-svaret.

Kom i gang

Klar til at hente køretøjsdata? Registrer dig her og få din API-nøgle med det samme. Processen tager under fem minutter, og du kan begynde at lave opslag lige efter. Vil du først læse mere om tilbuddet, kan du starte på siden om vores gratis nummerplade API.

Har du spørgsmål, der ikke er dækket her? Skriv til os på [email protected], så vender vi tilbage hurtigst muligt.