> ## Documentation Index
> Fetch the complete documentation index at: https://docs.topograph.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Denmark

> Country-specific identifiers, data sources, and implementation details

## 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.

<Card title="Denmark coverage, pricing, and sources" icon="arrow-up-right-from-square" href="https://topograph.co/pricing/dk">
  Open the current catalog for supported datapoints, documents, sources, identifiers, and availability.
</Card>

<Note>
  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.
</Note>

## Table of Contents

* [Data Sources](#data-sources)
* [Company Identifiers](#company-identifiers)
* [Search Capabilities](#search-capabilities)
* [Fast search data](#fast-search-data)
* [Quirks & Gotchas](#quirks--gotchas)
* [Mappings](#mappings)
* [Data Availability](#data-availability)
* [Example API Responses](#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.

<Note>
  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.
</Note>

## 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, the `identifiers` 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                |

<Tip>
  The CVR number and VAT number share the same 8 digits. The VAT number is simply prefixed with `DK`.
</Tip>

## Search Capabilities

| Search Type   | Pattern                   | Example    | Match Type | Expected Results                                                     |
| ------------- | ------------------------- | ---------- | ---------- | -------------------------------------------------------------------- |
| By CVR Number | 8 digits                  | `40715355` | Exact      | Exact match returned first (matchType: id); other results may follow |
| By Name       | Text string (min 3 chars) | `"Maersk"` | Fuzzy      | Multiple results (up to 20)                                          |

<Note>
  **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.
</Note>

## Fast search data

Denmark company data is **periodically synchronized** from the CVR Open Data (Elasticsearch) into a fast search index.

### Search

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:

| CVR Status       | Stored source data Status | Notes              |
| ---------------- | ------------------------- | ------------------ |
| NORMAL / Aktiv   | active                    | Operating normally |
| OPHORT           | inactive                  | Ceased operations  |
| UNDER\_AFVIKLING | inactive                  | Under dissolution  |
| KONKURS          | inactive                  | In bankruptcy      |
| Unknown / Other  | inactive                  | Default            |

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

| 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.                                                                                                                                                                                                                                                                                                                                       |
| **Management as beneficial owners**    | When a company has no registered beneficial owners (for example, when ownership runs through a foreign parent), Danish anti-money-laundering law treats the company's registered management as the beneficial owners. In that case `ultimateBeneficialOwners` returns the directors and board members, each marked in `control.description` as designated management with no ownership percentage. This applies to **active** companies only — closed or dissolving companies return no beneficial owners — and any appointed liquidator is excluded. |
| **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, activity code ISIC mapping, and role English translations use AI classification for unrecognized values. The local Danish values are always preserved verbatim.                                                                                                                                                                                                                                                                                                                                                               |
| **Protected document gateway**         | The `datacvr.virk.dk` gateway has additional access controls, so document downloads and articles retrieval can be slower than simple registry lookups.                                                                                                                                                                                                                                                                                                                                                                                                |

## Mappings

### Company Status

Company status is determined **deterministically** from the CVR `sammensatStatus` 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                               |

<Note>
  **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`.
</Note>

### Legal Forms

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.

<Note>
  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.
</Note>

#### Key Business Forms

| Code | Danish Name (langBeskrivelse)        | Abbreviation | English                     | Standardized              | ISO 20275 |
| ---- | ------------------------------------ | ------------ | --------------------------- | ------------------------- | --------- |
| 60   | Aktieselskab                         | A/S          | Public Limited Company      | Corporation               | -         |
| 80   | Anpartsselskab                       | ApS          | Private Limited Company     | Limited Liability Company | -         |
| 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 | -         |
| 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  | -         |
| 40   | Kommanditselskab               | K/S          | Limited Partnership         | Partnership  | -         |
| 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                     | -         |
| 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 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.

<AccordionGroup>
  <Accordion title="Common Management Roles">
    | Danish Role (FUNKTION)   | English Translation     |
    | ------------------------ | ----------------------- |
    | DIREKTOR                 | Director                |
    | ADMINISTRERENDE DIREKTOR | Managing Director / CEO |
    | FORMAND                  | Chairman                |
    | NAESTFORMAND             | Deputy Chairman         |
    | BESTYRELSESMEDLEM        | Board Member            |
  </Accordion>

  <Accordion title="Supervisory & Board Roles">
    | Danish Role (FUNKTION) | English Translation    |
    | ---------------------- | ---------------------- |
    | BESTYRELSESFORMAND     | Chairman of the Board  |
    | BESTYRELSESMEDLEM      | Board Member           |
    | SUPPLEANT              | Alternate / Substitute |
    | REVISOR                | Auditor                |
    | REVISORSUPPLEANT       | Alternate Auditor      |
  </Accordion>

  <Accordion title="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                                        |
  </Accordion>
</AccordionGroup>

<Note>
  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.
</Note>

### 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.

| 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) |

<Note>
  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.
</Note>

### 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:

```
DBR (Danish) → NACE Rev. 2 (European) → ISIC Rev. 4 (International)
```

| 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           |

<Note>
  **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.
</Note>

## 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                                   |

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

### Documents by Company Type

| Document Type                                  | API Category             | Format         | Catalog item               | Availability       | Notes                                      |
| ---------------------------------------------- | ------------------------ | -------------- | -------------------------- | ------------------ | ------------------------------------------ |
| **CVR Erhvervsudtog (Trade Register Extract)** | `tradeRegisterExtract`   | PDF            | `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 |

<Warning>
  **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.
</Warning>

<Note>
  **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.
</Note>

### Example API Responses

All examples use **placeholder data**. Query: `POST /v2/company` with `{ "id": "<id>", "countryCode": "DK", "dataPoints": ["company", "legalRepresentatives"] }`

<AccordionGroup>
  <Accordion title="Active ApS (Source: CVR), with shareholders">
    ```json theme={null}
    {
      "company": {
        "id": "12345678",
        "countryCode": "DK",
        "identifiers": { "cvr": "12345678", "enhedsNummer": "4001234567" },
        "legalName": "Nordisk Software ApS",
        "registrationDate": "2019-06-01",
        "incorporationDate": "2019-06-01",
        "activityDescription": "Udvikling af software og IT-losninger.",
        "status": { "localName": "NORMAL", "active": true, "statusDetails": { "status": "ACTIVE" } },
        "legalForm": { "localName": "Anpartsselskab", "standardized": "Limited Liability Company", "iso20275Code": "LR8H" },
        "capital": { "amount": 40000, "currency": "DKK", "formatted": "DKK 40.000" },
        "employeeCount": { "exact": 5, "isEstimate": false },
        "activities": {
          "DBR": [{ "code": "620100", "description": "Computerprogrammering", "isAIInferred": false }],
          "NACE": [{ "code": "620100", "description": "Computerprogrammering", "isAIInferred": false }],
          "ISIC": [{ "code": "6201", "description": "Computer programming activities", "isAIInferred": true }]
        },
        "legalAddress": { "addressLine1": "Vestergade 10", "city": "Kobenhavn", "postalCode": "1456", "countryCode": "DK" },
        "phones": ["+4512345678"],
        "website": "https://www.example.dk",
        "commercialNames": ["Nordisk IT Solutions"]
      },
      "legalRepresentatives": [
        {
          "type": "individual",
          "startDate": "2019-06-01",
          "role": { "localName": "DIREKTOR", "standardized": "Director" },
          "individual": {
            "name": { "fullName": "Lars Nielsen" },
            "residenceAddress": { "addressLine1": "Noerrebrogade 25", "city": "Kobenhavn", "countryCode": "DK" }
          }
        }
      ],
      "shareholders": [
        { "type": "individual", "sharePercentage": 100, "individual": { "name": { "fullName": "Lars Nielsen" } } }
      ],
      "establishments": [
        { "id": "1012345678", "name": "Nordisk Software ApS", "address": { "addressLine1": "Vestergade 10", "city": "Kobenhavn", "postalCode": "1456", "countryCode": "DK" } }
      ]
    }
    ```
  </Accordion>

  <Accordion title="Active A/S (Source: CVR), corporation with board">
    ```json theme={null}
    {
      "company": {
        "id": "87654321",
        "countryCode": "DK",
        "identifiers": { "cvr": "87654321", "enhedsNummer": "4009876543" },
        "legalName": "Dansk Industri Holding A/S",
        "registrationDate": "2005-01-15",
        "incorporationDate": "2005-01-15",
        "activityDescription": "Holdingselskab med kapitalandele i datterselskaber.",
        "status": { "localName": "NORMAL", "active": true, "statusDetails": { "status": "ACTIVE" } },
        "legalForm": { "localName": "Aktieselskab", "standardized": "Corporation", "iso20275Code": "8888" },
        "capital": { "amount": 500000, "currency": "DKK", "formatted": "DKK 500.000" },
        "employeeCount": { "exact": 120, "isEstimate": false },
        "activities": {
          "DBR": [{ "code": "642020", "description": "Ikke-finansielle holdingselskaber", "isAIInferred": false }],
          "NACE": [{ "code": "642020", "description": "Ikke-finansielle holdingselskaber", "isAIInferred": false }],
          "ISIC": [{ "code": "6420", "description": "Activities of holding companies", "isAIInferred": true }]
        },
        "legalAddress": { "addressLine1": "Bredgade 42", "city": "Kobenhavn K", "postalCode": "1260", "countryCode": "DK" },
        "website": "https://www.example-holding.dk"
      },
      "legalRepresentatives": [
        { "type": "individual", "startDate": "2005-01-15", "role": { "localName": "ADMINISTRERENDE DIREKTOR", "standardized": "Managing Director" }, "individual": { "name": { "fullName": "Henrik Andersen" } } },
        { "type": "individual", "startDate": "2010-06-01", "role": { "localName": "FORMAND", "standardized": "Chairman" }, "individual": { "name": { "fullName": "Birgitte Sorensen" } } },
        { "type": "individual", "startDate": "2015-03-20", "role": { "localName": "BESTYRELSESMEDLEM", "standardized": "Board Member" }, "individual": { "name": { "fullName": "Peter Christensen" } } }
      ],
      "shareholders": [
        { "type": "company", "sharePercentage": 60, "company": { "id": "11223344", "countryCode": "DK", "legalName": "Nordisk Kapital ApS" } },
        { "type": "individual", "sharePercentage": 40, "individual": { "name": { "fullName": "Henrik Andersen" } } }
      ],
      "establishments": [
        { "id": "1087654321", "name": "Dansk Industri Holding A/S", "address": { "addressLine1": "Bredgade 42", "city": "Kobenhavn K", "postalCode": "1260", "countryCode": "DK" } },
        { "id": "1087654322", "name": "Dansk Industri - Aarhus", "address": { "addressLine1": "Europaplads 8", "city": "Aarhus C", "postalCode": "8000", "countryCode": "DK" } }
      ]
    }
    ```
  </Accordion>

  <Accordion title="Closed Sole Proprietorship (Source: CVR)">
    ```json theme={null}
    {
      "company": {
        "id": "11223344",
        "countryCode": "DK",
        "identifiers": { "cvr": "11223344" },
        "legalName": "Gammel Handel (ophoert)",
        "registrationDate": "2010-03-15",
        "status": { "localName": "OPHORT", "active": false, "statusDetails": { "status": "CLOSED" } },
        "legalForm": { "localName": "Enkeltmandsvirksomhed", "standardized": "Sole Proprietorship", "iso20275Code": "SV8C" },
        "legalAddress": { "addressLine1": "Hovedgaden 5", "city": "Aarhus", "postalCode": "8000", "countryCode": "DK" }
      },
      "legalRepresentatives": [
        { "type": "individual", "startDate": "2010-03-15", "endDate": "2022-12-31", "role": { "localName": "DIREKTOR" }, "individual": { "name": { "fullName": "Morten Hansen" } } }
      ]
    }
    ```

    **Note:** Closed companies have `active: false`, status `OPHORT`. Legal representatives may have `endDate` set. Sole proprietorships typically do not have shareholders or UBO data.
  </Accordion>

  <Accordion title="Nonprofit, Voluntary Association (Source: CVR)">
    ```json theme={null}
    {
      "company": {
        "id": "55667788",
        "countryCode": "DK",
        "identifiers": { "cvr": "55667788" },
        "legalName": "Kobenhavns Idraetsforening",
        "registrationDate": "2015-08-20",
        "incorporationDate": "2015-08-20",
        "activityDescription": "Sportsaktiviteter i ovrigt.",
        "status": { "localName": "NORMAL", "active": true, "statusDetails": { "status": "ACTIVE" } },
        "legalForm": { "localName": "Frivillig forening", "standardized": "Nonprofit Organization" },
        "activities": {
          "DBR": [{ "code": "931900", "description": "Andre sportsaktiviteter", "isAIInferred": false }],
          "NACE": [{ "code": "931900", "description": "Andre sportsaktiviteter", "isAIInferred": false }],
          "ISIC": [{ "code": "9319", "description": "Other sports activities", "isAIInferred": true }]
        },
        "legalAddress": { "addressLine1": "Idraetvej 12", "city": "Kobenhavn", "postalCode": "2100", "countryCode": "DK" }
      },
      "legalRepresentatives": [
        { "type": "individual", "startDate": "2015-08-20", "role": { "localName": "FORMAND", "standardized": "Chairman" }, "individual": { "name": { "fullName": "Karen Pedersen" } } }
      ]
    }
    ```

    **Note:** Non-profits typically do not have shareholders or UBOs. Legal representatives are extracted from the same `LEDELSESORGAN` management data.
  </Accordion>

  <Accordion title="UBO Response (dedicated datapoint)">
    Query with `"dataPoints": ["ultimateBeneficialOwners"]`:

    ```json theme={null}
    {
      "ultimateBeneficialOwners": [
        {
          "name": { "fullName": "Lars Nielsen" },
          "residenceAddress": { "addressLine1": "Noerrebrogade 25", "city": "Kobenhavn", "countryCode": "DK" },
          "control": {
            "types": ["ownership-of-shares", "voting-rights"],
            "description": "Beneficial owner with 100% ownership",
            "details": [
              { "type": "shares", "percentageValue": 100, "nature": "direct" },
              { "type": "voting-rights", "percentageValue": 100, "nature": "direct" }
            ]
          }
        }
      ]
    }
    ```

    **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.
  </Accordion>

  <Accordion title="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           |
  </Accordion>
</AccordionGroup>

## 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.

<Note>
  **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.
</Note>

### 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.

<Note>
  **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.
</Note>

| 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`                        |

<Tip>
  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.
</Tip>
