Table of Contents
- Data Sources
- Company Identifiers
- Search Capabilities
- Quirks & Gotchas
- Mappings
- Data Availability
- Example API Responses
Data Sources
Denmark uses official registries operated by the Danish Business Authority (Erhvervsstyrelsen). For a given entity, data comes from a single primary source โ the CVR. Financial documents are sourced separately from the ERST publication index.All entity types
- CVR (Det Centrale Virksomhedsregister / Central Business Register) โ Operated by the Danish Business Authority (Erhvervsstyrelsen), the CVR is the central government register containing primary data on all businesses in Denmark and Greenland. This is the sole primary source for company profile data. The CVR provides comprehensive structured data including: company name, legal form, status, incorporation date, registered address, share capital, activity codes, management (legal representatives), legal shareholders, beneficial owners (UBOs), contact information, employee counts, and production units (establishments). The CVR covers all entity types: commercial companies (A/S, ApS), sole proprietorships (ENK), partnerships (I/S, K/S), non-profits, cooperatives, and public institutions.
- ERST (Erhvervsstyrelsens Offentliggorelsesindeks / Financial Publication Index) โ Operated by the Danish Business Authority. Used exclusively for financial statement retrieval (annual reports in XBRL, XHTML, and PDF formats). The ERST indexes all financial publications filed with the Danish Business Authority. It is not a structured data source for company attributes.
The CVR is accessed via an Elasticsearch API (
distribution.virk.dk:8443/cvr-re) that returns deeply nested data structures with historical versioning. Each data field includes validity periods (gyldigFra / gyldigTil), allowing the system to extract current values while preserving historical records.Company Identifiers
Query Identifiers
| Company Type | Source | Format | Example | Notes |
|---|---|---|---|---|
| All entities | CVR | 8 digits (CVR number) | 40715355 | Unique identifier for all Danish entities |
Identifiers in API Response
Once you retrieve company data, theidentifiers object contains all available identifiers for that entity:
| Identifier Type | Format | Example | Found In |
|---|---|---|---|
cvr | 8 digits | 40715355 | All entities |
enhedsNummer | Up to 10 digits | 4001459308 | Internal CVR unit number (all entities) |
VAT | DK + 8 digits | DK40715355 | VAT-registered companies |
Search Capabilities
| Search Type | Pattern | Example | Match Type | Expected Results |
|---|---|---|---|---|
| By CVR Number | 8 digits | 40715355 | Exact | Single company (1 result) |
| By Name | Text string (min 3 chars) | "Maersk" | Fuzzy | Multiple results (up to 20) |
Name search queries the CVR Elasticsearch API with a multi-strategy approach: exact match (highest boost), fuzzy match, prefix match, and historical name match. Identifier searches (CVR number) perform exact
term lookups and are significantly faster.Quirks & Gotchas
| Quirk | Details |
|---|---|
| Elasticsearch-based API | The CVR uses an Elasticsearch API, not a traditional REST API. Queries use Elasticsearch query syntax internally. |
| Full legal form names returned | The system returns langBeskrivelse (full description, e.g., โAnpartsselskabโ) rather than kortBeskrivelse (abbreviation, e.g., โApSโ). |
| Decimal ownership percentages | CVR stores ownership as decimals (0.25 = 25%). The system converts automatically. Data quality issues can occasionally cause totals exceeding 100%. |
| UBO vs. shareholder separation | The same deltagerRelation structure contains both legal shareholders and beneficial owners. They are distinguished by the FUNKTION attribute: Reel ejer = UBO, others with ownership data = shareholders. |
| Historical roles included | Legal representatives include both current and historical entries. Use startDate and endDate to filter. Entries without endDate are current. |
| Capital in DKK | Capital amounts are formatted in Danish locale (e.g., DKK 250.000 using periods as thousand separators). Default currency is DKK. |
| Employee count lag | Employee counts (nyesteAarsbeskaeftigelse) represent the most recent annual employment data, which may be 1-2 years old. |
| Production units as establishments | Establishments are mapped from CVR produktionsenheder (production units), each identified by a P-number. |
| Trade register extract delivery | The CVR Erhvervsudtog requires web scraping with JS rendering, taking approximately 2 minutes to generate. |
| Financial document format mismatch | CVR MIME types for financial documents can be incorrect (e.g., documents labeled XHTML may actually be PDFs). The system detects the actual file format from magic bytes. |
| AI-enriched fields | Status standardization, legal form mapping (ISO 20275, standardized type), activity code ISIC mapping, and role English translations are all AI-enriched. The local Danish values are always preserved verbatim. |
| Cloudflare protection | The datacvr.virk.dk gateway is Cloudflare-protected, requiring specialized proxy handling for document downloads and articles retrieval. |
Mappings
Company Status
Company status is determined deterministically from the CVRsammensatStatus field and lifespan data. The AI enrichment step adds standardized status mapping.
| Local Status | English | Standardized Status | Notes |
|---|---|---|---|
| NORMAL | Active | Active | Company is operating normally |
| Aktiv | Active | Active | Alternative active status label |
| OPHORT | Ceased | Closed | Company has ceased operations (livsforloeb has gyldigTil date) |
| UNDER_AFVIKLING | Under Dissolution | Under Insolvency Proceeding | Company is being wound up |
| KONKURS | Bankrupt | Closed | Company is in bankruptcy proceedings |
Status determination logic: (1) Use
sammensatStatus if available; (2) Fall back to virksomhedsstatus array for current entry; (3) Check livsforloeb (lifespan) โ if the latest lifespan period has an end date, status is OPHORT.Legal Forms
Denmark uses thevirksomhedsformkode from the CVR. The system returns the full description (langBeskrivelse) rather than the abbreviation (kortBeskrivelse). Legal form standardization (English translation, standardized type, ISO 20275 code) is AI-enriched.
Because legal form standardization and ISO 20275 assignment are AI-enriched, exact mappings may evolve. The local Danish legal form name (
langBeskrivelse) is always preserved verbatim.Key Business Forms
| Code | Danish Name (langBeskrivelse) | Abbreviation | English | Standardized | ISO 20275 |
|---|---|---|---|---|---|
| 60 | Aktieselskab | A/S | Public Limited Company | Corporation | 8888 |
| 80 | Anpartsselskab | ApS | Private Limited Company | Limited Liability Company | LR8H |
| 81 | Ivaerksaetterselskab | IVS | Entrepreneurial Company | Limited Liability Company | - |
| 115 | Frivillig forening | FFO | Voluntary Association | Nonprofit Organization | - |
| 70 | Kommanditaktieselskab/Partnerselskab | P/S | Limited Partnership Company | Partnership | - |
Sole Proprietorships
| Code | Danish Name | Abbreviation | English | Standardized | ISO 20275 |
|---|---|---|---|---|---|
| 10 | Enkeltmandsvirksomhed | ENK | Sole Proprietorship | Sole Proprietorship | SV8C |
| 15 | Personligt ejet Mindre Virksomhed | PMV | Personally Owned Small Business | Sole Proprietorship | - |
Partnerships
| Code | Danish Name | Abbreviation | English | Standardized | ISO 20275 |
|---|---|---|---|---|---|
| 30 | Interessentskab | I/S | General Partnership | Partnership | ZMC6 |
| 40 | Kommanditselskab | K/S | Limited Partnership | Partnership | 8GHQ |
| 45 | Medarbejderinvesteringsselskab | โ | Employee Investment Company | Partnership | - |
| 50 | Partrederi | โ | Shipping Partnership | Partnership | - |
Cooperatives & Limited Liability Associations
| Code | Danish Name | Abbreviation | English | Standardized | ISO 20275 |
|---|---|---|---|---|---|
| 130 | Andelsselskab (-forening) | AMA | Cooperative Society | Cooperative | - |
| 140 | Andelsselskab (-forening) med begraenset ansvar | AMBA | Cooperative Society (Ltd.) | Cooperative | - |
| 150 | Forening eller selskab med begraenset ansvar | โ | Association or Company (Ltd.) | Limited Liability Company | - |
| 151 | Selskab med begraenset ansvar | SMBA | Company with Limited Liability | Limited Liability Company | - |
| 152 | Forening med begraenset ansvar | FMBA | Association with Limited Liability | Nonprofit Organization | - |
Non-Profits & Foundations
| Code | Danish Name | Abbreviation | English | Standardized | ISO 20275 |
|---|---|---|---|---|---|
| 90 | Fonde og andre selvejende institutioner | โ | Foundations and Self-Governing Institutions | Nonprofit Organization | - |
| 100 | Erhvervsdrivende fond | โ | Commercial Foundation | Nonprofit Organization | - |
| 110 | Forening | โ | Association | Nonprofit Organization | - |
| 115 | Frivillig forening | FFO | Voluntary Association | Nonprofit Organization | - |
Foreign Entities & Branches
| Code | Danish Name | English | Standardized | ISO 20275 |
|---|---|---|---|---|
| 170 | Filial af udenlandsk aktieselskab, kommanditaktieselskab | Branch of Foreign Public Ltd. Co. | Branch or Representative Office | - |
| 180 | Filial af udenlandsk anpartsselskab eller selskab | Branch of Foreign Private Ltd. Co. | Branch or Representative Office | - |
| 190 | Filial af udenlandsk virksomhed med begraenset ansvar | Branch of Foreign Ltd. Liability Co. | Branch or Representative Office | - |
| 200 | Filial af anden udenlandsk virksomhedsform | Branch of Other Foreign Entity | Branch or Representative Office | - |
| 210 | Anden udenlandsk virksomhed | Other Foreign Entity | Branch or Representative Office | - |
| 220 | Fast forretningssted af Europaeisk okonomisk Firmagruppe | Permanent Est. of EEIG | Branch or Representative Office | - |
| 520 | Gronlandsk afdeling af udenlandsk selskab eller virksomhed | Greenlandic Branch of Foreign Co. | Branch or Representative Office | - |
European Legal Forms
| Code | Danish Name | English | Standardized | ISO 20275 |
|---|---|---|---|---|
| 160 | Europaeisk Okonomisk Firmagruppe | European Economic Interest Grouping (EEIG) | Partnership | - |
| 195 | SCE-selskab | European Cooperative Society (SCE) | Cooperative | - |
| 290 | SE-selskab | European Company (Societas Europaea) | Corporation | JXKX |
| 291 | Filial af SE-selskab | Branch of European Company (SE) | Branch or Representative Office | - |
Public & Special Entities
| Code | Danish Name | English | Standardized | ISO 20275 |
|---|---|---|---|---|
| 230 | Statslig administrativ enhed | State Administrative Unit | Government-Owned Entity | - |
| 235 | Selvstaendig offentlig virksomhed | Independent Public Enterprise | Government-Owned Entity | - |
| 245 | Region | Region | Government-Owned Entity | - |
| 250 | Primaerkommune | Municipality | Government-Owned Entity | - |
| 260 | Folkekirkelige Institutioner | Church Institutions | Government-Owned Entity | - |
| 285 | Saerlig finansiel virksomhed | Special Financial Undertaking | Corporation | - |
Other
| Code | Danish Name | English | Standardized | ISO 20275 |
|---|---|---|---|---|
| 20 | Dodsbo | Estate of Deceased | Other | - |
| 270 | Enhed under oprettelse i Erhvervsstyrelsen | Entity Being Registered | Other | - |
| 280 | Ovrige virksomhedsformer | Other Legal Forms | Other | - |
| 990 | Uoplyst virksomhedsform | Undisclosed Legal Form | Other | - |
Legal Representatives
Legal representatives are extracted deterministically from the CVRdeltagerRelation data. Persons associated with organizations of type LEDELSESORGAN (management body) are classified as legal representatives. Their roles are extracted from the FUNKTION attribute within medlemsData.
The classification of a role as legal representative vs. other key person and the English translation are AI-enriched after deterministic extraction.
Common Management Roles
Common Management Roles
| Danish Role (FUNKTION) | English Translation |
|---|---|
| DIREKTOR | Director |
| ADMINISTRERENDE DIREKTOR | Managing Director / CEO |
| FORMAND | Chairman |
| NAESTFORMAND | Deputy Chairman |
| BESTYRELSESMEDLEM | Board Member |
Supervisory & Board Roles
Supervisory & Board Roles
| Danish Role (FUNKTION) | English Translation |
|---|---|
| BESTYRELSESFORMAND | Chairman of the Board |
| BESTYRELSESMEDLEM | Board Member |
| SUPPLEANT | Alternate / Substitute |
| REVISOR | Auditor |
| REVISORSUPPLEANT | Alternate Auditor |
Ownership & Partner Roles
Ownership & Partner Roles
| Danish Role (FUNKTION) | English Translation |
|---|---|
| Reel ejer | Beneficial Owner (used for UBO identification) |
| Legalt ejer | Legal Owner |
| FULDT ANSVARLIG DELTAGER | Fully Liable Partner |
| STIFTER | Founder |
Role enrichment (English translation, standardized role, ISO 5009 code) is AI-enriched. The local Danish role name (
FUNKTION value) is always preserved verbatim. Both current and historical roles are included, with startDate and endDate fields to indicate tenure periods. Entries without endDate are current.Other Key Persons
Persons in the CVRdeltagerRelation associated with LEDELSESORGAN organizations who do not hold statutory authority (e.g., auditors, alternate members) are classified as other key persons. The distinction between legal representative and other key person is AI-enriched based on the role context.
Shareholders
Shareholders are extracted deterministically from the CVRdeltagerRelation data. Persons or companies associated with organizations of type REGISTER are evaluated for ownership. The system explicitly excludes beneficial owners (those with FUNKTION = "Reel ejer") from the shareholder list.
| Source | When Used | Data Extracted |
|---|---|---|
| deltagerRelation (REGISTER orgs) | Always | Entities with EJERANDEL or EJERANDEL_PROCENT attributes |
| Field | Description | Source |
|---|---|---|
sharePercentage | Ownership percentage | EJERANDEL / EJERANDEL_PROCENT (stored as decimal, e.g., 0.25 = 25%) |
type | Individual or Company | Determined from enhedstype (PERSON = individual, otherwise company) |
CVR stores ownership percentages as decimals (0.25 = 25%). The system automatically converts these to percentages. Only current ownerships (no end date or future end date) are included. Beneficial owners (
Reel ejer) are excluded from the shareholder list and appear only in the UBO data point. Both individual and corporate shareholders are supported.Activity Code Mapping
Denmark uses the DB07 (Dansk Branchekode 2007) classification, which aligns closely with the European NACE Rev. 2 standard. The system maps activity codes across three levels:| Classification | Source | Example | AI Inferred? |
|---|---|---|---|
| DBR | CVR hovedbranche.branchekode | 620100 | No (official) |
| NACE | Same as DBR (codes are compatible) | 620100 | No (formal mapping) |
| ISIC | Derived from NACE or AI | 6201 | Sometimes |
AI Enrichment: When ISIC codes cannot be derived from NACE via formal mapping tables, the system uses an LLM to match activity descriptions to ISIC Rev. 4 codes. Every activity item includes an
isAIInferred flag to distinguish official vs. AI-derived codes. DBR and NACE codes are never AI-inferred for Denmark.Data Availability
Data Availability Matrix
| Data Type | Commercial Companies | Sole Entrepreneurs | Non-Profits | Notes |
|---|---|---|---|---|
| Company Profile | โ Async | โ Async | โ Async | Full data from CVR |
| Legal Representatives | โ | โ | โ | From LEDELSESORGAN relations |
| Shareholders | โ | โ | โ ๏ธ Limited | From REGISTER relations with ownership data |
| Ultimate Beneficial Owners | โ | โ | โ ๏ธ Limited | From REGISTER relations with Reel ejer function |
| Establishments | โ | โ | โ | From produktionsenheder (P-numbers) |
| Activity Codes | โ | โ | โ | DBR + NACE + ISIC |
Documents by Company Type
| Document Type | API Category | Format | SKU | Availability | Notes |
|---|---|---|---|---|---|
| CVR Erhvervsudtog (Trade Register Extract) | tradeRegisterExtract | DNK_REGISTER_EXTRACT | โ Always available | Certified CVR extract (~2 min delivery) | |
| Financial Statements (Arsrapport) | financialStatements[] | XBRL/XHTML/PDF | DNK_FINANCIAL_STATEMENTS | โ When filed | Annual/periodic reports with period data |
| Official Publications | officialPublications[] | PDF/ZIP | DNK_PUBLICATIONS | โ When filed | Corporate documents, AI-classified by type |
Financial Document Formats: Danish financial statements can be in XBRL (machine-readable), XHTML (human-readable), or PDF format. Each document includes period information (
startDate and endDate) for the fiscal year it covers. The system detects the actual file format from magic bytes because CVR MIME types can be inaccurate.Example API Responses
All examples use placeholder data. Query:POST /company with { "id": "<id>", "countryCode": "DK", "dataPoints": ["companyProfile"] }
Active ApS (Source: CVR) โ with shareholders
Active ApS (Source: CVR) โ with shareholders
Active A/S (Source: CVR) โ corporation with board
Active A/S (Source: CVR) โ corporation with board
Closed Sole Proprietorship (Source: CVR)
Closed Sole Proprietorship (Source: CVR)
active: false, status OPHORT. Legal representatives may have endDate set. Sole proprietorships typically do not have shareholders or UBO data.Nonprofit โ Voluntary Association (Source: CVR)
Nonprofit โ Voluntary Association (Source: CVR)
LEDELSESORGAN management data.UBO Response (dedicated datapoint)
UBO Response (dedicated datapoint)
Query with Note: UBOs are always individuals (never corporate entities). They are identified by
"dataPoints": ["ultimateBeneficialOwners"]:FUNKTION = "Reel ejer" in the CVR REGISTER organizations. Ownership and voting rights percentages are derived from the CVR EJERANDEL data. The beneficial ownership percentage may differ from the legal shareholding percentage.Available Documents (company example)
Available Documents (company example)
Documents are returned when
"dataPoints": ["availableDocuments"] is requested.| API Category | Document | Notes |
|---|---|---|
tradeRegisterExtract | CVR Erhvervsudtog PDF | Always available (~2 min delivery) |
financialStatements[] | Annual reports (XBRL/XHTML/PDF) | When filed, with period data |
officialPublications[] | Corporate documents (articles, decisions) | When filed, AI-classified |
Data Source Priority & Routing
For a given entity, all data comes from a single source: the CVR โ Denmark does not have multiple competing registries. Financial documents are the only exception, sourced from the separate ERST publication index.Data Flow:
- Company Profile โ CVR Elasticsearch API (
distribution.virk.dk:8443/cvr-re) via authenticated API call - Financial Statements โ ERST Offentliggorelsesindeks (
distribution.virk.dk/offentliggoerelser) via proxied API call - Official Publications & Trade Register Extract โ CVR Gateway (
datacvr.virk.dk/gateway) via Cloudflare bypass (ZenRows)
Ultimate Beneficial Owners
UBOs are extracted from the same CVR data as shareholders but are filtered specifically for individuals withFUNKTION = "Reel ejer" (beneficial owner). UBO ownership percentages may differ from legal shareholding percentages.
| Field | Description | Source |
|---|---|---|
ownershipPercentage | Beneficial ownership percentage | EJERANDEL / EJERANDEL_PROCENT from the โReel ejerโ org entry |
votingRightsPercentage | Voting rights percentage | Same as ownership (assumed equal) |
control.types | Control types | ownership-of-shares and voting-rights |