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 registers operated by the Danish Business Authority (Erhvervsstyrelsen). For a given entity, company data comes from the CVR, and the Danish VAT number is verified against VIES. 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.
  • VIES (EU VAT Information Exchange System) — Secondary source for the company datapoint. It verifies the Danish VAT number and returns it in taxId with its verification status.
The CVR records every field with a validity period (gyldigFra / gyldigTil). Topograph returns the values that are current today.

Company Identifiers

company.identifiers.euid is an optional European Unique Identifier. Domestic A/S and ApS companies. Example: DKCVR.25450442. It is returned as an output identifier and cannot be used as a search input. See EUID coverage and interpretation.

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 response returns VAT without the DK prefix. Search accepts either 40715355 or DK40715355.

Search Capabilities

Name search combines exact, fuzzy, prefix and former-name matching, with exact matches ranked first. Searches by CVR number are exact and faster.

Fast search data

Denmark company data is periodically synchronized from the CVR open data into a fast search index. Search queries hit the fast search index first for instant results, with automatic fallback to the live CVR 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. No entities are excluded. For the authoritative company status, request the company datapoint, which reads the live CVR.

Onboarding Mode

In onboarding mode, requests for the company datapoint use the live CVR, not the fast search dataset. 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. status.localName carries the readable Danish label, and statusDetails carries the standardized status and, for closed companies, the closure reason.
Status determination logic: (1) Use sammensatStatus if available; (2) Fall back to the current virksomhedsstatus entry; (3) Check livsforloeb (lifespan): if the latest lifespan period has an end date, status is Ophørt. A value outside this list returns status UNKNOWN, with the register’s raw value kept in localName.
Denmark uses the virksomhedsformkode from the CVR. The system returns the full description (langBeskrivelse) rather than the abbreviation (kortBeskrivelse). The English translation and standardized type are mapped deterministically from the code for all 41 CVR legal forms, and the ISO 20275 (ELF) code is added when one matches.
The local Danish legal form name (langBeskrivelse) is always preserved verbatim. For an unrecognized code, AI-based classification is used as fallback.

Key Business Forms

Sole Proprietorships

Partnerships

Cooperatives & Limited Liability Associations

Non-Profits, Foundations & Trusts

Foreign Entities & Branches

Public & Special Entities

Other

Legal representatives are extracted deterministically from the CVR deltagerRelation data. Persons and companies in organizations of type LEDELSESORGAN (management body: executive board, board of directors, liquidator) and FULDT_ANSVARLIG_DELTAGERE (fully liable partners of partnerships) are returned as legal representatives. Their roles are read from the FUNKTION attribute within medlemsData. Only current roles are returned. The English translation and standardized role are mapped deterministically for known roles. Unmapped roles are AI-enriched, and the local Danish value is always preserved in role.localName.
Role enrichment (ISO 5009 code) is AI-enriched. In onboarding mode, roles carry localName only. Ceased roles are not returned, and endDate is set only when a role has a known future end date.

Other Key Persons

Denmark does not return other key persons. Auditors are not part of the CVR management data used for legal representatives.

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 Dansk Branchekode 2025 (DB25), the Danish extension of NACE Rev. 2.1. The CVR moved from DB07 to DB25 on 1 January 2025. The system maps activity codes across three levels:
AI Enrichment: When a code cannot be derived through the formal correspondence tables, the system uses an LLM to match the activity description to a standard code. Every activity item includes an isAIInferred flag to distinguish official vs. AI-derived codes. DBR codes are never AI-inferred.
Main activity flag: The CVR publishes one main branch per company (the hovedbranche), so the returned DBR and NACE code is flagged with isMainActivity: true, and the derived ISIC code inherits the flag.

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 on demand as a PDF. Estimated delivery time is approximately 120 seconds (2 minutes). The extract is included with company data; see the pricing page for billing.
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, local status Ophørt. Roles that ended when the company closed are not returned, so closed companies often have no legal representatives. Sole proprietorships typically do not have shareholders or UBO data.
Note: Non-profits typically do not have shareholders. 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 and returned in control.details[].percentageValue. A beneficial owner registered through a role, without an ownership stake, carries control.types: ["significant-influence-or-control"] and no percentage. 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, company data comes from the CVR. Denmark does not have multiple competing registers. VIES is a secondary source that verifies the VAT number on the company datapoint, and financial statements come from the separate ERST publication index.
Data Flow:
  1. Company Profile, legal representatives, shareholders, establishments and UBOs — CVR
  2. VAT verification — VIES
  3. Financial Statements — ERST Offentliggorelsesindeks
  4. Official Publications & Trade Register Extract — CVR
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), so you can fetch UBO data independently of the full company profile.