DataCVR API giver nem adgang til danske virksomhedsdata via en moderne REST API. Uanset om du skal integrere CVR-opslag i dit regnskabssystem, bygge en leadgenereringsplatform, eller automatisere compliance-processer, så giver API'et dig de data, du har brug for — hurtigt og i struktureret JSON-format.
Kom i gang
Det tager under 2 minutter at komme i gang med DataCVR API. Følg disse tre trin:
- Opret en gratis konto på datacvrapi.dk/opret-konto
- Find din API-nøgle i dit dashboard under "API-nøgle"
- Lav dit første kald med din API-nøgle som autentificering
Den gratis plan giver dig 10 opslag per dag — nok til at teste og komme i gang.
Autentificering
Alle API-kald kræver en gyldig API-nøgle. Du kan autentificere på tre måder:
1. Bearer Token (anbefalet)
Authorization: Bearer DIN_API_NØGLE
2. X-API-Key Header
X-API-Key: DIN_API_NØGLE
3. Query Parameter (frarådet)
?api_key=DIN_API_NØGLE
Vigtigt: Query parameter-metoden er frarådet, da nøglen skrives til serverlogfiler. Brug X-API-Key eller Bearer Token i stedet.
Base URL
https://datacvrapi.dk/api/v2
Alle endpoints er relative til denne base URL. API'et bruger HTTPS (TLS 1.2+) for sikker kommunikation.
Endpoints oversigt
Her er en oversigt over alle tilgængelige endpoints:
| Endpoint | Metode | Beskrivelse | Plan |
|---|---|---|---|
/dk/company/{cvr} |
GET | Stamdata fra CVR | Gratis |
/dk/company/{cvr}/accounts |
GET | Regnskabsdata | Business+ |
/no/company/{orgnr} |
GET | Norske virksomheder | Gratis |
/dk/search/company |
GET | Søg virksomheder | Alle |
/dk/suggestions/company/{query} |
GET | Autosuggest | Alle |
/dk/search/subsidiary |
GET | Søg P-numre | Alle |
/dk/subsidiary/{pnr} |
GET | P-nummer opslag | Alle |
/dk/search/participant |
GET | Søg ejere/ledelse | Alle |
/dk/participant/{id} |
GET | Deltager opslag | Alle |
/dk/company/{cvr}/contacts/scrape |
POST | Kontakt-scraping | Scrape tokens |
/dk/company/{cvr}/contacts |
GET | Cached kontakter | Scrape tokens |
/dk/company/{cvr}/scrape-jobs/{id} |
GET | Scrape job-status | Scrape tokens |
/account/scrape-tokens/balance |
GET | Token-saldo | Alle |
/dk/changed/list/company |
GET | Ændrede DK virksomheder (changed feed) | Alle |
/no/changed/list/company |
GET | Ændrede NO virksomheder (changed feed) | Alle |
Response format
Alle endpoints returnerer JSON. Her er eksempler på de mest brugte endpoints:
Virksomhedsdata (stamdata)
GET /api/v2/dk/company/44474117
{
"cvr_number": 44474117,
"name": "Branthiq ApS",
"secondary_names": [],
"status": "NORMAL",
"company_type": "Anpartsselskab",
"address": {
"street": "Ryesgade 3A",
"zipcode": "2200",
"city": "København N",
"municipality": "København",
"country": "DK"
},
"industry_code": "620100",
"industry_description": "Computerprogrammering",
"founded_date": "2023-01-15",
"employees": "1-4",
"phone": null,
"email": null,
"website": "https://branthiq.com",
"protected": true,
"owners": [
{
"name": "Benjamin Falkentoft",
"role": "ADM. DIR.",
"title": "DIREKTION",
"share": null,
"startdate": "2023-01-15",
"enddate": null
}
],
"participants": [
{
"name": "Nicholas Schou",
"roles": ["DIREKTION"]
}
]
}
name— Personens navnrole— Rolle (ADM. DIR., BESTYRELSESMEDLEM, REEL EJER, STIFTER, osv.)title— Organisatorisk enhed (DIREKTION, BESTYRELSE, osv.)share— Ejerandel i procent (null hvis ikke relevant)startdate/enddate— Rolleperiode (enddate=null = aktiv)
true = virksomheden er reklamebeskyttet (markedsføringsforbudslisten). Brug dette felt til at afgøre marketing eligibility.
Regnskabsdata
GET /api/v2/dk/company/44474117/accounts
{
"cvr_number": 44474117,
"company_name": "Branthiq ApS",
"accounts": [
{
"period": {
"start": "2024-01-01",
"end": "2024-12-31"
},
"currency": "DKK",
"income_statement": {
"revenue": 850000,
"gross_profit": 720000,
"operating_profit": 280000,
"profit_before_tax": 265000,
"profit_after_tax": 206700
},
"balance": {
"total_assets": 1200000,
"equity": 580000,
"total_liabilities": 620000,
"current_assets": 900000,
"current_liabilities": 420000
}
}
]
}
Søg virksomheder
GET /api/v2/dk/search/company?name=branthiq&limit=10
{
"total": 1,
"limit": 10,
"offset": 0,
"results": [
{
"vat": 44474117,
"name": "Branthiq ApS",
"address": "Ryesgade 3A",
"zipcode": "2200",
"city": "København N",
...
}
]
}
// Søgeparametre: name, zipcode, city, industrycode, companystatus,
// companyform, address, phone, email, employees_min, employees_max
// Pagination: limit (max 1000), offset, cursor
Autosuggest
GET /api/v2/dk/suggestions/company/brant
[
{ "vat": 44474117, "name": "Branthiq ApS", "address": "Ryesgade 3A, 2200 København N" },
{ "vat": 44318217, "name": "Brant Media ApS", "address": "..." }
]
Norsk virksomhed (med owners)
GET /api/v2/no/company/923609016
{
"vat": "923609016",
"name": "EQUINOR ASA",
"country": "no",
"company_type": "ASA",
"address": { ... },
"industry_description": "Utvinning av råolje",
"owners": [
{
"name": "Anders Opedal",
"role": "Daglig leder",
"title": "Daglig leder/ adm.direktør",
"share": null,
"startdate": "2020-11-02",
"enddate": null
},
{
"name": "Jon Erik Reinhardsen",
"role": "Styrets leder",
"title": "Styre",
"share": null,
"startdate": "2018-05-15",
"enddate": null
}
]
}
Changed feed — nye/ændrede virksomheder
// Danmark
GET /api/v2/dk/changed/list/company?since=2026-04-02&limit=100
{
"total": 754,
"limit": 100,
"results": [
{
"vat": 34421463,
"name": "Kapitalakademiet",
"companydesc": "PMV",
...
}
],
"next_cursor": "1775092552000,43132296"
}
// Pagination: brug next_cursor som cursor parameter
GET /api/v2/dk/changed/list/company?since=2026-04-02&cursor=1775092552000,43132296
// Norge
GET /api/v2/no/changed/list/company?since=2026-04-02&limit=100
{
"since": "2026-04-02",
"total": 451,
"limit": 100,
"items": [
{
"orgnr": "922827044",
"updateId": 24075678,
"date": "2026-04-02",
"changeType": "Ny enhet"
}
],
"next_cursor": "24075687"
}
// Parametere: since (YYYY-MM-DD, påkrævet), limit (max 100), cursor
Kontakt-scraping (asynkron)
POST /api/v2/dk/company/44474117/contacts/scrape
Content-Type: application/json
Authorization: Bearer DIN_API_NØGLE
// Svar (202 Accepted):
{
"job_id": "abc123-def456",
"status": "pending",
"message": "Scrape job oprettet. Poll GET /dk/company/{cvr}/scrape-jobs/{id} for status."
}
Statuskoder
API'et bruger standard HTTP-statuskoder:
| Kode | Betydning | Beskrivelse |
|---|---|---|
200 |
OK | Anmodningen lykkedes |
202 |
Accepted | Asynkront job oprettet (kontakt-scraping) |
400 |
Bad Request | Ugyldigt CVR-nummer eller manglende parametre |
401 |
Unauthorized | Manglende eller ugyldig API-nøgle |
403 |
Forbidden | Din plan har ikke adgang til dette endpoint |
404 |
Not Found | Virksomheden findes ikke i CVR-registret |
429 |
Too Many Requests | Rate limit overskredet |
500 |
Server Error | Intern serverfejl — prøv igen senere |
Rate limiting
API'et har rate limits afhængigt af din plan:
| Plan | Opslag | Pris |
|---|---|---|
| Gratis | 10 / dag | 0 kr. |
| Hobby | 10.000 / md | 299 kr./md. ekskl. moms |
| Business | 50.000 / md | 499 kr./md. ekskl. moms |
| Custom | Ubegrænset | Kontakt os |
Hvis du overskrider dit rate limit, returnerer API'et statuskode 429. Vi anbefaler at implementere retry-logik med exponential backoff.
Kodeeksempler
cURL
curl -X GET "https://datacvrapi.dk/api/v2/dk/company/44474117" \
-H "Authorization: Bearer DIN_API_NØGLE"
JavaScript (fetch)
const response = await fetch(
'https://datacvrapi.dk/api/v2/dk/company/44474117',
{
headers: {
'Authorization': 'Bearer DIN_API_NØGLE'
}
}
);
if (!response.ok) {
throw new Error(`API fejl: ${response.status}`);
}
const virksomhed = await response.json();
console.log(virksomhed.name); // "Branthiq ApS"
console.log(virksomhed.status); // "NORMAL"
Python (requests)
import requests
url = "https://datacvrapi.dk/api/v2/dk/company/44474117"
headers = {
"Authorization": "Bearer DIN_API_NØGLE"
}
response = requests.get(url, headers=headers)
response.raise_for_status()
virksomhed = response.json()
print(virksomhed["name"]) # "Branthiq ApS"
print(virksomhed["status"]) # "NORMAL"
Hent regnskabsdata (JavaScript)
// Hent regnskabsdata for en virksomhed
async function hentRegnskab(cvr, apiKey) {
const response = await fetch(
`https://datacvrapi.dk/api/v2/dk/company/${cvr}/accounts`,
{
headers: { 'Authorization': `Bearer ${apiKey}` }
}
);
if (response.status === 403) {
console.error('Business-abonnement påkrævet for regnskabsdata');
return null;
}
return response.json();
}
const regnskab = await hentRegnskab('44474117', 'DIN_API_NØGLE');
if (regnskab) {
const seneste = regnskab.accounts[0];
console.log('Omsætning:', seneste.income_statement.revenue);
console.log('Egenkapital:', seneste.balance.equity);
}
SDKs og integrationer
DataCVR API er en standard REST API og kan bruges med enhver HTTP-klient. Vi tilbyder desuden:
- Postman Collection: Importér vores endpoints direkte i Postman for hurtig test
- cURL-eksempler: Kopiér og tilpas til dit system
- Integration guides: Se vores trin-for-trin integration guide med eksempler i JavaScript, Python, PHP og C#
Vi arbejder på officielle SDKs til JavaScript/TypeScript og Python. Følg med på vores dashboard for opdateringer.
Næste skridt
Nu har du overblikket over DataCVR API. Her er, hvad du kan gøre nu:
- Opret en gratis konto og få din API-nøgle
- Læs vores integration guide med kodeeksempler i flere sprog
- Udforsk hvilke virksomhedsdata der er tilgængelige
- Se priser og planer for at vælge den rette løsning