API

Trafik Nus APIThe Trafik Nu API

Lukkede veje, vejarbejde, uheld og hændelser på de danske veje, som dette website viser dem, i JSON eller GeoJSON. Gratis i 5 dage med en prøvenøgle, derefter med en pakke.Closed roads, roadworks, accidents and incidents on Denmark's roads, as this website shows them, in JSON or GeoJSON. Free for 5 days with a trial key, then on a paid plan.

Kildeangivelse er påkrævet på alle pakkerAttribution is required on every plan

Det gælder prøveperioden, de betalte pakker og Virksomhed: enhver app, ethvert website eller produkt, der viser data fra dette API, viser tydeligt teksten “Data: Trafik Nu” med et link til trafiknu.dk. Klar til at kopiere:The same applies on the trial, the paid plans and Enterprise: every app, website or product that shows data from this API displays “Data: Trafik Nu” clearly, with a link to trafiknu.dk. Ready to copy:

Data: <a href="https://trafiknu.dk">Trafik Nu</a>

Desuden skal de oprindelige kilders kildeangivelser i svaret bevares (meta.sources og feltet source på hver melding): myndighedernes licenser kræver det. Her er det “Vejdirektoratet (CC BY 4.0)”, “Københavns Kommune (CC BY 4.0)” og “Sund & Bælt” for Storebæltsforbindelsen.The original source credits in the response must also be kept (meta.sources and the source field of each report): the authorities' licences require them. Here that is “Vejdirektoratet (CC BY 4.0)”, “Københavns Kommune (CC BY 4.0)” and “Sund & Bælt” for the Great Belt link.

Kom i gangGetting started

Opret en prøvenøgle nedenfor og føj den til forespørgslen. Åbnet i en browser med din nøgle til sidst giver dette data med det samme:Create a trial key below and add it to the request. Opened in a browser with your key at the end, this returns data straight away:

https://trafiknu.dk/api/v1/incidents?road=e45&type=vejarbejde&key=tn_…

Svaret er JSON. Til et kort tilføjer du &format=geojson. I kode sendes nøglen helst i en header:The response is JSON. For a map, add &format=geojson. In code, the key is better sent in a header:

curl -H "X-API-Key: tn_…" "https://trafiknu.dk/api/v1/incidents?county=hovedstaden&type=lukket"

NøglenThe key

Hver forespørgsel kræver en nøgle. Den nøgle, du opretter her, er en prøvenøgle: den gælder i 5 dage fra første forespørgsel med 120 forespørgsler i timen, så du kan se, om API'et passer til dit projekt. Derefter skal du have en af pakkerne nedenfor.Every request needs a key. The key you create here is a trial key: it is valid for 5 days from the first request, at 120 requests an hour, so you can check whether the API suits your project. After that you need one of the plans below.

Vi beder om navn, e-mail og formål af tre grunde: så vi kan give besked, når en offentlig kilde falder ud; så vi forstår, hvad API'et stadig mangler; og fordi en nøgle, der kan spærres, beskytter alle mod en løbsk løkke.We ask for a name, email and purpose for three reasons: to warn you when an official source goes down; to understand what the API is still missing; and because a key that can be revoked protects everyone from a runaway loop.

Med det samme, uden godkendelse. Gælder i 5 dage fra første forespørgsel.Instant, no approval needed. Valid for 5 days from the first request.

PakkerPlans

Du betaler for adgangen til tjenesten: forespørgslerne, grænserne og supporten. Selve dataene tilhører de myndigheder, der offentliggør dem, og er under deres licenser; deres kildeangivelser skal bevares.What you pay for is access to the service: the queries, the limits and the support. The data itself belongs to the authorities that publish it and stays under their licences; their credits must be kept.

PrøveTrial

For alle, til at afprøve om API'et passerFor anyone, to check whether the API fits

GratisFree

5 dage5 days

  • 5 dage fra første forespørgsel5 days from the first request
  • 120 forespørgsler i timen120 requests an hour
  • Kildeangivelse påkrævetAttribution required

PersonligPersonal

Private eller små projekter uden nævneværdig omsætningPrivate or small projects without significant revenue

15 €€15

om måneden, inkl. momsper month, incl. VAT

  • Omkring 10.000 forespørgsler om dagenAbout 10,000 requests a day
  • DanmarkDenmark
  • Kildeangivelse påkrævetAttribution required

ProfessionelProfessional

Kommercielle apps, annoncefinansierede websites, brug i en virksomhedCommercial apps, ad-funded websites, use within a company

79 €€79

om måneden, inkl. momsper month, incl. VAT

  • Omkring 100.000 forespørgsler om dagenAbout 100,000 requests a day
  • E-mail, når en kilde falder udEmail alert when a source goes down
  • Kildeangivelse påkrævetAttribution required

VirksomhedEnterprise

Flåder, forsikring, medier, flere lande, SLAFleets, insurers, media, several countries, SLA

Efter aftaleOn request

Tilbud efter omfangQuote based on volume

  • Aftalte grænser og SLAAgreed limits and SLA
  • Flere lande gennem RoadscoreSeveral countries through Roadscore
  • KontraktContract

GennemThrough Roadscore elleror [email protected].

Sådan får du en pakke: skriv til [email protected] med projektets navn og formål. Vi svarer med den rette pakke og en faktura og flytter din nøgle over; nøglen er den samme. Pakkerne Personlig og Professionel faktureres månedligt.How to get a plan: write to [email protected] with the name of your project and how you plan to use it. We reply with the right plan and an invoice, and switch your key over; it stays the same. The Personal and Professional plans are billed monthly.

Endpoint og parametreEndpoint and parameters

GET /api/v1/incidents returnerer de meldinger, som Trafik Nus kort og sider viser, fra samme kilde i samme øjeblik. Alle parametre er valgfrie og kan kombineres; adskil flere værdier med komma. En ukendt værdi giver fejl 400 med de tilladte værdier, aldrig en stille tom liste.GET /api/v1/incidents returns the reports that the map and the pages of Trafik Nu show, from the same source at the same moment. All parameters are optional and can be combined; separate multiple values with commas. An unknown value returns a 400 error listing the allowed values, never a silently empty list.

ParameterParameterVærdierValuesFormålPurpose
roade45, e20, rute-21, motorring-3, 151Vejen, som i /vej/e45 eller /vej/rute-21. Også vej=. Kun meldinger, hvor kilden eller teksten nævner vejen.The road, as in /vej/e45 or /vej/rute-21. Also vej=. Only reports whose source or text names the road.
countyhovedstaden, sjaelland, syddanmark …Regionen som slug, som i /trafik/midtjylland. Også region=. Alle 5:Region, as a slug as in /trafik/midtjylland. Also region=. All 5: hovedstaden, sjaelland, syddanmark, midtjylland, nordjylland.
citykoebenhavn, aarhus, odense …En af de 25 byer med egen side, som i /trafik/aarhus. Også by=.One of the 25 towns with their own page, as in /trafik/aarhus. Also by=.
kommunekoebenhavn, aarhus, hoeje-taastrup …En af de 98 kommuner, som slug eller navn (Høje-Taastrup). Kommunen er beregnet ud fra koordinaterne.One of the 98 municipalities, as a slug or a name (Høje-Taastrup). The municipality is computed from the coordinates.
typevejarbejde, kø, uheld, hændelse, spaerring, lukketMeldingens type. Også på engelsk: roadworks, queue, accident, incident, closure. spaerring dækker alle meldinger med en spærret vognbane, vej, rampe eller rasteplads; lukket kun helt lukkede veje.Type of report. English works too: roadworks, queue, accident, incident, closure. spaerring covers every report with a closed lane, road, ramp or rest area; lukket only fully closed roads.
closurefull, lanes, slip, layby, anyHvad der er lukket: full er en helt lukket vej (eller kørebane).What is closed: full is a fully closed road.
statusactive, scheduledAktiv nu eller planlagt.In force now or planned.
severityinfo, low, medium, high, criticalAlvorlighed, som på kortet.Severity, as on the map.
sourcevejdirektoratetKun meldinger fra én kilde.Only reports from one source.
bbox12.45,55.6,12.65,55.73Område: minLon,minLat,maxLon,maxLat i WGS84.Area: minLon,minLat,maxLon,maxLat in WGS84.
limit1 til 10000 (1000)1 to 10000 (1000)Højst så mange meldinger: først de aktive, senest opdaterede først, derefter de planlagte, de nærmeste først.At most this many reports: those in force first, most recently updated first, then planned ones, soonest first.
formatjson (standard), geojsonjson (default), geojsonJSON til lister, GeoJSON til kort.JSON for lists, GeoJSON for maps.
keytn_…Din nøgle, hvis den ikke sendes i headeren X-API-Key eller Authorization: Bearer.Your key, if not sent in the X-API-Key or Authorization: Bearer header.

EksempelExample

Formen på et svar fra API'et, forkortet:The shape of an API response, shortened:

GET https://trafiknu.dk/api/v1/incidents?road=e20&type=vejarbejde&status=active&limit=1
{
  "attribution": {
    "text": "Data: Trafik Nu",
    "url": "https://trafiknu.dk"
  },
  "meta": {
    "count": 1,
    "total": 4,
    "generatedAt": "2026-10-23T15:58:00.058Z",
    "licence": "Data: Trafik Nu (trafiknu.dk), via Roadscore, fra de offentlige kilder i feltet sources. Kildeangivelse er påkrævet på alle pakker, både for Trafik Nu og for hver oprindelig kilde.",
    "sources": [
      {
        "id": "vejdirektoratet",
        "credit": "Vejdirektoratet (CC BY 4.0), Københavns Kommune (CC BY 4.0), Sund & Bælt",
        "licence": "Creative Commons Navngivelse 4.0 (CC BY 4.0)",
        "licenceUrl": "https://creativecommons.org/licenses/by/4.0/deed.da"
      }
    ]
  },
  "incidents": [
    {
      "id": "vd-6fd5a9f8-d1b9-44eb-a29f-033cc82fa6f2_227280",
      "type": "roadworks",
      "severity": "low",
      "status": "active",
      "lat": 55.38186498613142,
      "lon": 10.2689089099849,
      "title": "Vejarbejde · E20, Odense",
      "description": "Hastighedsbegrænsning 80 km/t.",
      "source": "vejdirektoratet",
      "sourceUrl": "https://www.vejdirektoratet.dk",
      "road": "E20",
      "roadClass": "E",
      "location": "Fynske Motorvej",
      "windows": [{ "from": "2025-08-03T04:00:00.000Z", "to": "2026-10-31T22:30:00.000Z" }],
      "land": "syddanmark",
      "kommune": "Odense",
      "street": "Fynske Motorvej",
      "city": "odense",
      "startedAt": "2025-08-03T04:00:00.000Z",
      "endsAt": "2026-10-31T22:30:00.000Z",
      "updatedAt": "2026-03-27T11:42:38.000Z"
    }
  ]
}

Felterne i svaretResponse fields

  • attribution: teksten og linket, du skal vise. Det samme kommer i headeren X-Attribution.the text and link you must display. The same content comes in the X-Attribution header.
  • meta.count ogand meta.total: meldinger i svaret og hits før limit.reports in the response and matches before the limit.
  • meta.generatedAt: hvornår dataene blev hentet.when the data was fetched.
  • meta.sources: hver kilde i svaret med kildeangivelse og licens. Dem skal du bevare.every source in the response with its credit and licence. You must keep these.
  • id, type, severity, status, lat, lon: id, type, alvorlighed, aktiv eller planlagt, position.ID, type, severity, whether in force or planned, position.
  • title ogand description: kort titel (type, vej eller gade, kommune) og kildens egen ordlyd.short title (type, road or street, municipality) and the source's own wording.
  • road, roadClass, direction, location, street: vej (E45, R21 for rute 21, M3 for Motorring 3), vejklasse (E E-vej, M motorring, P primærrute, S sekundærrute), retning, strækning, gade eller motorvejsnavn.road (E45, R21 for route 21, M3 for Motorring 3), road class (E European road, M ring motorway, P primary route, S secondary route), direction, section, street or motorway name.
  • closure, overnight, windows, hours: hvad der er lukket og hvornår, som kilden offentliggør tidsrummene.what is closed and when, as the source publishes the time windows.
  • land, kommune, city: region (slug), kommune (navn) og by (slug), beregnet ud fra koordinaterne.region (slug), municipality (name) and town (slug), computed from the coordinates.
  • startedAt, endsAt, updatedAt: start, slut, seneste ændring (ISO 8601, UTC).start, end, last change (ISO 8601, UTC).
  • source, sourceUrl: den offentlige kilde og dens website.the official source and its website.

Felter uden værdi udelades i stedet for at være null.Fields without a value are left out rather than set to null.

FejlErrors

  • 400: en parameter med en ukendt værdi; detail viser de tilladte.a parameter with an unknown value; detail lists the allowed ones.
  • 401: ingen nøgle.no key.
  • 402: prøveperioden er udløbet. Skriv til [email protected] for en pakke.the trial period has ended. For a plan, write to [email protected].
  • 403: nøglen er spærret; detail giver grunden.the key has been revoked; detail gives the reason.
  • 429: grænsen er nået; headeren retry-after giver ventetiden i sekunder.limit reached; the retry-after header gives the wait in seconds.

I prøveperioden fortæller headeren X-API-Trial-Ends, hvornår den udløber.During the trial, the X-API-Trial-Ends header gives the end of the trial period.

GrænserLimits

Prøve: 120 forespørgsler i timen. Personlig: omkring 10.000 om dagen. Professionel: omkring 100.000 om dagen. Virksomhed: efter aftale. Grænserne tælles pr. nøgle, ikke pr. IP, så en app med mange brugere ikke bremses af én af dem. Headerne X-RateLimit-Limit, X-RateLimit-Remaining og X-RateLimit-Reset viser, hvor du står.Trial: 120 requests an hour. Personal: about 10,000 a day. Professional: about 100,000 a day. Enterprise: by agreement. Limits are counted per key, not per IP, so an app with many users is not held back by any one of them. The X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset headers show where you stand.

Dataene hentes igen cirka én gang i minuttet: at spørge oftere end hvert 30. sekund giver ingen nye meldinger. CORS er åbent, så du kan kalde API'et direkte fra browseren.The data is refreshed about once a minute: asking more often than every 30 seconds brings no new reports. CORS is open, so you can call the API straight from the browser.

Vilkår og kildeangivelseTerms of use and attribution

Med prøvenøgle eller betalt pakke: at drive et produkt bygget på dette API uden en gyldig nøgle eller uden kildeangivelse er ikke tilladt brug.On a trial key or a paid plan: running a product built on this API without a valid key or without attribution is not permitted use.

Kildeangivelse er påkrævet på alle pakkerAttribution is required on every plan

Det gælder prøveperioden, de betalte pakker og Virksomhed: enhver app, ethvert website eller produkt, der viser data fra dette API, viser tydeligt teksten “Data: Trafik Nu” med et link til trafiknu.dk. Klar til at kopiere:The same applies on the trial, the paid plans and Enterprise: every app, website or product that shows data from this API displays “Data: Trafik Nu” clearly, with a link to trafiknu.dk. Ready to copy:

Data: <a href="https://trafiknu.dk">Trafik Nu</a>

Desuden skal de oprindelige kilders kildeangivelser i svaret bevares (meta.sources og feltet source på hver melding): myndighedernes licenser kræver det. Her er det “Vejdirektoratet (CC BY 4.0)”, “Københavns Kommune (CC BY 4.0)” og “Sund & Bælt” for Storebæltsforbindelsen.The original source credits in the response must also be kept (meta.sources and the source field of each report): the authorities' licences require them. Here that is “Vejdirektoratet (CC BY 4.0)”, “Københavns Kommune (CC BY 4.0)” and “Sund & Bælt” for the Great Belt link.

Dataene kommer fra Vejdirektoratet, Københavns Kommune og Sund & Bælt og når os gennem Roadscore. Kildeangivelserne, som udgiverne kræver dem:The data comes from the Danish Road Directorate (Vejdirektoratet), Copenhagen Municipality and Sund & Bælt and reaches us through Roadscore. The credits, as the providers require them:

Ærligt om dækningenHonest about coverage

API'et returnerer, hvad de offentlige kilder har offentliggjort, ikke hvad der sker på vejen lige nu. En vej uden melding er ikke en fri vej, kun en vej, som ingen har meldt noget om. Oplysningerne kommer fra Vejdirektoratet og dækker statsvejene og de kommunale veje, som kommunerne melder ind, i hele landet. Københavns Kommune melder selv om vejarbejde og lukkede gader, og Sund & Bælt om Storebæltsforbindelsen.The API returns what the official sources have published, not what is happening on the road right now. A road with no report is not a clear road, just one nobody has published anything about. The reports come from the Danish Road Directorate (Vejdirektoratet) and cover the state roads, and the municipal roads the municipalities report, across the country. Copenhagen Municipality reports its own roadworks and street closures, and Sund & Bælt the Great Belt link.

Bygger du advarsler på det, så sig det til dine brugere. Og brug ikke API'et til beslutninger i nødsituationer: ring 112 i en nødsituation.If you build alerts on it, tell your users so. And do not use the API for emergency decisions: in an emergency, call 112.

KontaktContact

Spørgsmål, en pakke, en mistet nøgle eller en manglende kilde: [email protected]. Siderne lukkede veje og vejarbejde viser de samme data, som API'et returnerer.Questions, a plan, a lost key or a missing source: [email protected]. The closed roads and roadworks pages show the same data the API returns.