CVR Opslag Priser Dokumentation Kontakt
Log ind Kom i gang

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:

  1. Opret en gratis kontodatacvrapi.dk/opret-konto
  2. Find din API-nøgle i dit dashboard under "API-nøgle"
  3. 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"]
    }
  ]
}
owners[] — Ejere og ledelse hentes automatisk ved single company lookup (ikke ved search). Felter:
  • name — Personens navn
  • role — 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)
protected — Boolean. 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:

Ofte stillede spørgsmål om CVR API

Hvad er DataCVR API?

DataCVR API er en REST API-tjeneste, der giver adgang til danske virksomhedsdata fra CVR-registret. Data returneres som struktureret JSON med hurtige responstider.

Er API'et gratis at bruge?

Ja, den gratis plan giver 10 opslag per dag. For regnskabsdata og kontakt-scraping kræves et betalt abonnement fra 299 kr./md. ekskl. moms.

Hvilke programmeringssprog kan jeg bruge?

API'et er en standard REST API og virker med alle programmeringssprog. Vi har kodeeksempler i JavaScript, Python, PHP og C#.

Hvor hurtige er responstiderne?

Stamdata-opslag besvares typisk på under 200ms. Regnskabsdata tager 300-500ms. Kontakt-scraping er asynkront og tager 15-60 sekunder.

Understøtter I norske virksomheder?

Ja, norske virksomheder kan slås op via endpointet /api/v2/no/company/{orgnr} med organisationsnummeret.

Klar til at integrere CVR-data?

Opret en gratis konto og lav dit første API-kald på under 2 minutter.