Skip to main content

Start here

This guide contains public integration notes for Denmark. Use it for identifier formats, search behavior, and country-specific caveats. The live source of truth for coverage, pricing, data sources, documents, legal forms, roles, and status values is the pricing page.

Denmark coverage, pricing, and sources

Open the current catalog for supported datapoints, documents, sources, identifiers, and availability.
Country details below are preserved as integration notes. If a table or example conflicts with the live pricing page, use the pricing page as the source of truth and contact support.

Table of Contents

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

Identifiers in API Response

Once you retrieve company data, the identifiers object contains all available identifiers for that entity:
The CVR number and VAT number share the same 8 digits. The VAT number is simply prefixed with DK.

Search Capabilities

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.

Fast search data

Denmark company data is periodically synchronized from the CVR Open Data (Elasticsearch) into a fast search index. Search queries hit the fast search index first for instant results, with automatic fallback to the live CVR Elasticsearch API if the fast search index misses.

Companies in fast search data

The fast search index contains all Danish entities from the CVR, regardless of status. Company status is mapped during conversion: No entities are excluded; all statuses are included in the fast search index to support comprehensive search coverage.

Onboarding Mode

In onboarding mode, requests for the company datapoint use the live CVR API, not the fast search dataset. Denmark already had a fast onboarding path via the live CVR Elasticsearch API before the batch pipeline was added. Data is always real-time from the CVR.

Quirks & Gotchas

Mappings

Company Status

Company status is determined deterministically from the CVR sammensatStatus field and lifespan data. The AI enrichment step adds standardized status mapping.
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.
Denmark uses the virksomhedsformkode from the CVR. The system returns the full description (langBeskrivelse) rather than the abbreviation (kortBeskrivelse). Legal form standardization (English translation, standardized type) is applied deterministically for known codes; for unrecognized codes, AI-based classification is used as fallback. ISO 20275 (ELF) codes will be populated in a future update.
Legal forms are classified from official registry data. For known codes, standardized classification is applied directly; for unrecognized codes, AI-based classification is used as fallback. The local Danish legal form name (langBeskrivelse) is always preserved verbatim.

Key Business Forms

Sole Proprietorships

Partnerships

Cooperatives & Limited Liability Associations

Non-Profits & Foundations

Foreign Entities & Branches

Public & Special Entities

Other

Legal representatives are extracted deterministically from the CVR deltagerRelation 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.
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 CVR deltagerRelation 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 CVR deltagerRelation 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.
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:
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

Legend: ✅ Available | ❌ Not Available | ⚠️ Conditionally Available | Async = Asynchronous processing

Documents by Company Type

Trade Register Extract Delivery: The CVR Erhvervsudtog is generated via web scraping with JS rendering and converted to PDF. Estimated delivery time is approximately 120 seconds (2 minutes). Parallel retrieval attempts are used for reliability.
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 /v2/company with { "id": "<id>", "countryCode": "DK", "dataPoints": ["company", "legalRepresentatives"] }
Note: Closed companies have active: false, status OPHORT. Legal representatives may have endDate set. Sole proprietorships typically do not have shareholders or UBO data.
Note: Non-profits typically do not have shareholders or UBOs. Legal representatives are extracted from the same LEDELSESORGAN management data.
Query with "dataPoints": ["ultimateBeneficialOwners"]:
Note: UBOs are always individuals (never corporate entities). They are identified by 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.When a company has no registered beneficial owners, the registered management is returned instead (see below). These entries carry control.types: ["significant-influence-or-control"] and no ownership percentage, and control.description notes they are designated management.
Documents are returned when "dataPoints": ["availableDocuments"] is requested.

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:
  1. Company Profile — CVR Elasticsearch API (distribution.virk.dk:8443/cvr-re) via authenticated API call
  2. Financial Statements — ERST Offentliggorelsesindeks (distribution.virk.dk/offentliggoerelser) via proxied API call
  3. Official Publications & Trade Register Extract — CVR Gateway (datacvr.virk.dk/gateway)
Shared data fetch: The company profile, legal representatives, shareholders, and UBOs all share the same raw CVR data fetch. CVR data is fetched only once per request, regardless of how many data points need it.

Ultimate Beneficial Owners

UBOs are extracted from the same CVR data as shareholders but are filtered specifically for individuals with FUNKTION = "Reel ejer" (beneficial owner). UBO ownership percentages may differ from legal shareholding percentages.
When a company has no registered beneficial owners. Under Danish anti-money-laundering law, if no beneficial owner can be identified — a common case when ownership runs up through a foreign parent — the company’s registered management is recorded as the beneficial owners. Topograph mirrors this: when there are no beneficial owners to return, ultimateBeneficialOwners falls back to the company’s current directors and board members, each with control.types: ["significant-influence-or-control"], no ownership percentage, and a control.description indicating they are designated management.Two safeguards keep this faithful to the register:
  • Active companies only. The management substitution is applied only to companies that are currently active. Companies that are closed or being wound up return no beneficial owners (their management is no longer current).
  • Liquidators excluded. A liquidator appointed to dissolve a company is never returned as a beneficial owner.
UBOs are available as a separate data point (ultimateBeneficialOwners) with its own catalog item (DNK_UBO_DATA). This allows fetching UBO data independently of the full company profile.