CVR Tool API v1
Virksomhedsopslag i Danmark og Sverige
API'et returnerer danske og svenske virksomhedsdata, officielle årsrapporter, historiske regnskabstal og beregnede nøgletal. Alle svar er JSON, og alle requests kræver en aktiv API-nøgle med adgang til det valgte endpoint.
Kom i gang
Du skal bruge en API-nøgle
En administrator kan oprette nøglen i CVR Tools admin-panel. Nøglen vises kun én gang, så gem den i en secret manager eller miljøvariabel og aldrig direkte i frontend-kode.
Send nøglen som Bearer-token. Headeren x-api-key understøttes også.
Authorization: Bearer $CVR_API_KEYDanmark · endpoint
https://cvrtool.dk/api/v1/lookupGET kan bruges til enkle opslag. Den tidligere PUT-metode virker fortsat, men nye integrationer bør bruge POST.
Enkelt opslag
curl --request POST 'https://cvrtool.dk/api/v1/lookup' \
--header "Authorization: Bearer $CVR_API_KEY" \
--header 'Content-Type: application/json' \
--data '{"cvr":"37676717"}'GET-variant:
curl 'https://cvrtool.dk/api/v1/lookup?cvr=37676717' \
--header "Authorization: Bearer $CVR_API_KEY"Batch-opslag
Send en array op til den batchgrænse, der er sat på din API-nøgle (maks. 100). Resultater returneres i samme rækkefølge som requesten.
const response = await fetch("https://cvrtool.dk/api/v1/lookup", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.CVR_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
cvr: ["37676717", "10103940"],
}),
});
const data = await response.json();Svarformat
Et enkelt opslag returnerer company. Et batch-opslag returnerer companies. CVR-numre uden match står i meta.missing.
{
"company": {
"cvrNummer": 37676717,
"virksomhedMetadata": {
"nyesteNavn": { "navn": "Eksempel ApS" },
"sammensatStatus": "NORMAL",
"stiftelsesDato": "2016-05-20"
}
},
"meta": {
"requested": 1,
"found": 1,
"missing": []
},
"requestId": "d47f0b60-..."
}Danmark · regnskaber
Historiske kildetal og årsrapporter
Endpointet læser officielle XBRL/iXBRL-årsrapporter fra Virks offentliggørelsesindeks og returnerer op til fem år. Omsætning, resultat, balance og ansatte er normaliseret til faste felter. Et tal, der ikke er offentliggjort, returneres som null og bliver aldrig estimeret.
https://cvrtool.dk/api/v1/dk/financials?cvr=29403473curl 'https://cvrtool.dk/api/v1/dk/financials?cvr=29403473' --header "Authorization: Bearer $CVR_API_KEY"{
"country": "DK",
"organisationNumber": "29403473",
"reports": [{
"periodStart": "2023-01-01",
"periodEnd": "2023-12-31",
"currency": "DKK",
"scope": "company",
"values": {
"revenue": 766788000,
"operatingProfit": 382427000,
"netProfit": 306597000,
"totalAssets": 509173000,
"equity": 329685000,
"averageEmployees": 373
},
"ratios": { "solidityPct": 64.8 },
"documents": []
}],
"meta": { "source": "Virk", "cached": true }
}Sverige
Bolagsverket-opslag
Endpointet returnerer alle organisationsfelter fra Bolagsverkets Värdefulla datamängder, metadata om digitale årsrapporter og en separat kontrol af det afledte svenske momsnummer i EU-Kommissionens VIES-register. Bolagsverket understøtter ét præcist organisationsnummer pr. request. Input accepteres med eller uden SE-prefix, bindestreg og moms-suffikset 01.
/api/v1/se/search?q=... til navn, organisationsnummer, by og SNI-kode. Indekset bygges fra Bolagsverkets og SCB's officielle bulkfiler og opdateres ugentligt.https://cvrtool.dk/api/v1/se/search?q=Volvo&page=0&pageSize=25curl 'https://cvrtool.dk/api/v1/se/search?q=Volvo&page=0&pageSize=25' \
--header "Authorization: Bearer $CVR_API_KEY"https://cvrtool.dk/api/v1/se/lookupcurl --request POST 'https://cvrtool.dk/api/v1/se/lookup' --header "Authorization: Bearer $CVR_API_KEY" --header 'Content-Type: application/json' --data '{"organisationNumber":"556703-7485"}'GET-variant:
curl 'https://cvrtool.dk/api/v1/se/lookup?organisationNumber=556703-7485' --header "Authorization: Bearer $CVR_API_KEY"{
"organisations": [
{
"organisationsidentitet": { "identitetsbeteckning": "5567037485" },
"organisationsnamn": {
"organisationsnamnLista": [{ "namn": "Eksempel AB" }]
},
"organisationsform": { "kod": "AB", "klartext": "Aktiebolag" },
"verksamOrganisation": { "kod": "JA", "dataproducent": "SCB" }
}
],
"annualReports": [],
"vatStatus": {
"vatNumber": "SE556703748501",
"status": "valid",
"valid": true,
"source": "EU VIES"
},
"meta": {
"country": "SE",
"source": "Bolagsverket",
"environment": "production",
"requested": 1,
"found": 1,
"retrievedAt": "2026-08-22T17:15:00.000Z",
"warnings": []
},
"requestId": "d47f0b60-..."
}Sverige · regnskaber
Digitale iXBRL-årsredovisningar
Regnskabsendpointet bruger Bolagsverkets dokumentliste og dokument-endpoint. Det accepterer de samme nummerformater som virksomhedsomslaget: med eller uden SE, bindestreg og 01. Dækningen omfatter digitalt indsendte årsrapporter fra 2020 og frem; virksomheder uden digital årsrapport returnerer en tom reports-liste.
https://cvrtool.dk/api/v1/se/financials?organisationNumber=SE556703748501curl 'https://cvrtool.dk/api/v1/se/financials?organisationNumber=SE556703748501' --header "Authorization: Bearer $CVR_API_KEY"Fejl og limits
| Status | Betydning |
|---|---|
| 400 | Ugyldig JSON eller CVR-nummer |
| 401 | Manglende, ugyldig eller deaktiveret API-nøgle |
| 403 | Nøglen er udløbet eller mangler rettighed til endpointet |
| 429 | Rate limit overskredet |
| 502 | Den valgte datakilde kunne ikke besvare opslaget |
| 503 | Datakilden er ikke konfigureret |
- Rate limit og tidsvindue konfigureres individuelt på hver API-nøgle.
- Batchgrænsen konfigureres pr. nøgle og kan højst være 100 CVR-numre.
- En nøgle kan desuden have endpoint-rettigheder, samlet kvote og udløbsdato.
- Præcise svenske live-opslag er begrænset til ét organisationsnummer og deler Bolagsverkets loft på 60 kald/minut; søgeindekset har ikke denne leverandørgrænse.
- Rate limit fremgår af headers: X-RateLimit-Limit, X-RateLimit-Remaining og X-RateLimit-Reset.
- Fejlsvar indeholder et requestId, der kan bruges ved fejlsøgning.