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

# Denmark Company Data – Lite Profile and Enhanced Profile Updates

> Denmark (DK) Lite Profile and Enhanced Profile responses updated with richer data, clearer field structures, English-normalized vocabulary, and range-based shareholder percentages.

## Overview

We've completed a comprehensive review and upgrade of our Denmark (ISO code `DK`) company data mappings. You'll now see richer data, clearer field structures, and more consistent vocabulary across Lite Profile and Enhanced Profile responses.

Integrations do not need code changes — these are improvements within the existing API shape. Endpoint URLs, authentication, request parameters, and HTTP response envelopes are unchanged. However, the *content* of Lite Profile and Enhanced Profile responses has changed: many fields now carry improved values, some previously empty fields are now populated, a small number of always-empty fields have been removed, and several new fields have been added. We encourage customers to review the changes below to take advantage of the newly populated fields and improved values, and to re-verify any downstream logic that parses or pattern-matches on field values (particularly legal form codes, status strings, director role titles, address line structure, and shareholder percentages).

Search and Filing Search for Denmark are not affected by this upgrade.

### Key improvements

* `registrationAuthorityField` now reads **"Danish Business Authority"** (previously **"Det Centrale Virksomhedsregister"**) — a clearer label for consumers building multi-jurisdiction UIs.
* `legalFormField` now returns an English legal-form description (e.g. **"Public Limited Company"**) for most entity types, instead of the Danish abbreviation (e.g. **"A/S"**). Foundation (EFO) and foreign-branch (FBA) types continue to be returned in their full Danish form.
* Address structure has been simplified: the empty `lineField` array and the empty `addressLine2Field`–`addressLine4Field` slots have been removed; `cityTownField`, `typeField`, and a new `aliasesField` are now present.
* Several new top-level fields are populated: `registrationNumberField`, `registrationDateField`, `previousNamesField`.
* In Enhanced Profile, director role titles have moved from broad Danish categories (`"Bestyrelse"`, `"Direktion"`) to more granular English titles (`"Board Member"`, `"Chairman"`, `"Vice Chairman"`, `"CEO"`, `"Director"`), and director records now include an `appointedOnField` appointment date.
* Shareholder ownership is now expressed as **percentage ranges** (the range quartet described below) rather than a single point percentage, reflecting how the Danish Central Business Register (CVR) publishes ownership in bands.
* `legalFormSubTypeField` has been renamed to `legalFormDeclarationField` in Enhanced Profile (the Danish long-form legal type is still exposed under the new name) and is no longer emitted in Lite Profile.

## Lite Profile changes

Lite Profile has been upgraded with cleaner address parsing, several newly populated fields, and the removal of a small number of previously-always-empty fields.

### Response structure changes

**Before:**

```json theme={null}
{
  "companyProfileField": {
    "activityField": [
      {
        "codeField": "282900",
        "descriptionField": "Fremstilling af andre maskiner til generelle formål i.a.n."
      }
    ],
    "addressesField": [
      {
        "addressInOneLineField": "Eksempelvej, 10, 4900, Nakskov, LOLLAND, DK",
        "addressLine1Field": "Eksempelvej, 10",
        "addressLine2Field": "",
        "addressLine3Field": "",
        "addressLine4Field": "",
        "cityTownField": "",
        "countryField": "DK",
        "lineField": [
          {
            "lineField": "",
            "typeCodeField": "",
            "typeField": ""
          }
        ],
        "postcodeField": "4900, Nakskov",
        "regionStateField": "LOLLAND"
      }
    ],
    "codeField": "22756214",
    "foundationDateField": "1997-12-12",
    "legalFormField": "A/S",
    "legalFormSubTypeField": "Aktieselskab",
    "legalStatusField": "NORMAL",
    "nameField": "NORDIC EXAMPLE INDUSTRIES A/S",
    "normalizedLegalStatusField": "ACTIVE",
    "officialField": false,
    "registrationAuthorityField": "Det Centrale Virksomhedsregister"
  },
  "responseCodeField": "100",
  "transactionIdField": "0"
}
```

**After:**

```json theme={null}
{
  "companyProfileField": {
    "activityField": [
      {
        "classificationSchemeField": "DB07_NACErev2",
        "codeField": "282900",
        "descriptionField": "Fremstilling af andre maskiner til generelle formål i.a.n."
      }
    ],
    "addressesField": [
      {
        "addressInOneLineField": "Eksempelvej 10, 4900 Nakskov, Denmark",
        "addressLine1Field": "10 Eksempelvej",
        "cityTownField": "Nakskov",
        "countryField": "Denmark",
        "postcodeField": "4900",
        "regionStateField": "LOLLAND",
        "typeField": "Registered Address"
      }
    ],
    "aliasesField": [],
    "codeField": "22756214",
    "foundationDateField": "1997-12-12",
    "legalFormField": "Public Limited Company",
    "legalStatusField": "NORMAL",
    "nameField": "NORDIC EXAMPLE INDUSTRIES A/S",
    "normalizedLegalStatusField": "Active",
    "officialField": false,
    "previousNamesField": [
      "EXAMPLE SEPARATION SYSTEMS A/S"
    ],
    "registrationAuthorityField": "Danish Business Authority",
    "registrationDateField": "1997-12-12",
    "registrationNumberField": "22756214"
  },
  "responseCodeField": "100",
  "transactionIdField": "5591582"
}
```

### Field-by-field changes

| Field                                       | Change        | Before example                                         | After example                                                                                                                           |
| ------------------------------------------- | ------------- | ------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------- |
| `activityField[].classificationSchemeField` | Added         | *(absent)*                                             | `"DB07_NACErev2"`                                                                                                                       |
| `addressesField[].addressInOneLineField`    | Value format  | `"Eksempelvej, 10, 4900, Nakskov, LOLLAND, DK"`        | `"Eksempelvej 10, 4900 Nakskov, Denmark"`                                                                                               |
| `addressesField[].addressLine1Field`        | Value format  | `"Eksempelvej, 10"`                                    | `"10 Eksempelvej"`                                                                                                                      |
| `addressesField[].addressLine2Field`        | Removed       | `""` *(always empty)*                                  | *(absent)*                                                                                                                              |
| `addressesField[].addressLine3Field`        | Removed       | `""` *(always empty)*                                  | *(absent)*                                                                                                                              |
| `addressesField[].addressLine4Field`        | Removed       | `""` *(always empty)*                                  | *(absent)*                                                                                                                              |
| `addressesField[].cityTownField`            | Now populated | `""`                                                   | `"Nakskov"`                                                                                                                             |
| `addressesField[].countryField`             | Value format  | `"DK"`                                                 | `"Denmark"`                                                                                                                             |
| `addressesField[].lineField`                | Removed       | `[{"lineField":"","typeCodeField":"","typeField":""}]` | *(absent)*                                                                                                                              |
| `addressesField[].postcodeField`            | Value format  | `"4900, Nakskov"`                                      | `"4900"`                                                                                                                                |
| `addressesField[].typeField`                | Added         | *(absent)*                                             | `"Registered Address"`                                                                                                                  |
| `aliasesField`                              | Added         | *(absent)*                                             | `[]`                                                                                                                                    |
| `legalFormField`                            | Value format  | `"A/S"`                                                | `"Public Limited Company"` *(see note below)*                                                                                           |
| `legalFormSubTypeField`                     | Removed       | `"Aktieselskab"`                                       | *(absent — see Enhanced Profile for `legalFormDeclarationField`)*                                                                       |
| `legalStatusField`                          | Value format  | `"OPLØSTEFTERKONKURS"`, `"Ophørt"`                     | `"OPLØST EFTER KONKURS"`, `"SLETTET"` *(status values re-spaced / re-worded for dissolved or ceased entities; `"NORMAL"` is unchanged)* |
| `normalizedLegalStatusField`                | Value format  | `"ACTIVE"`, `"INACTIVE"`                               | `"Active"`, `"Inactive"` *(title-cased)*                                                                                                |
| `previousNamesField`                        | Added         | *(absent)*                                             | `["EXAMPLE SEPARATION SYSTEMS A/S"]`                                                                                                    |
| `registrationAuthorityField`                | Value format  | `"Det Centrale Virksomhedsregister"`                   | `"Danish Business Authority"`                                                                                                           |
| `registrationDateField`                     | Added         | *(absent)*                                             | `"1997-12-12"`                                                                                                                          |
| `registrationNumberField`                   | Added         | *(absent)*                                             | `"22756214"`                                                                                                                            |

### Notes

* **Address structure**: `addressLine2Field`, `addressLine3Field`, `addressLine4Field`, and the `lineField` sub-array were always empty in previous responses. They have been removed. The address is now expressed through `addressLine1Field`, `cityTownField`, `postcodeField`, `countryField`, `regionStateField`, and `typeField`. House number now precedes street in `addressLine1Field` (`"10 Eksempelvej"`).
* **`legalFormField`** is translated to English for most Danish company types (`A/S` → `Public Limited Company`, `APS` → `Private Limited Company`, `K/S` → `Limited Partnership`). Foundation (EFO) and foreign-branch (FBA) types remain in Danish (`Erhvervsdrivende fond`, `Filial af udenlandsk virksomhed med begrænset ansvar`). Consumers doing case-sensitive or exact-match comparisons on this field must accommodate both forms.
* **`legalStatusField`** value changes depend on the underlying registry status. `"NORMAL"` (active) is unchanged. Dissolved entities previously reported `"OPLØSTEFTERKONKURS"` (no whitespace); this is now `"OPLØST EFTER KONKURS"`. Foreign-branch entities that were previously `"Ophørt"` are now `"SLETTET"`. The `normalizedLegalStatusField` continues to provide a stable `Active` / `Inactive` classifier for programmatic use.
* **`registrationNumberField`** duplicates the existing `codeField` (the 8-digit Danish CVR). It is emitted as a separate key for consistency with other jurisdictions.
* **`aliasesField`** is populated as an empty array in every Denmark response observed. The field is present for structural consistency with other jurisdictions.

## Enhanced Profile changes

Enhanced Profile inherits all the Lite Profile changes listed above, plus the additional changes described here. The most significant improvements are to director records and shareholder records.

### Response structure changes

The Enhanced Profile example below uses a private limited company (ApS) with multiple shareholders across two share classes — this makes the range-based percentage fields and multi-class shareholding visible.

**Before:**

```json theme={null}
{
  "companyProfileField": {
    "codeField": "12345678",
    "directorAndShareDetailsField": {
      "directorsField": [
        {
          "address1Field": "Eksempelgade 12",
          "address3Field": "Nakskov",
          "address6Field": "DK",
          "directorNumberField": "1000000001",
          "nameField": "Jens Eksempel",
          "postcodeField": "8365",
          "titleField": "Direktion"
        }
      ],
      "shareHoldersField": [
        {
          "addressField": "Eksempelvej 10, KØBENHAVN, DK, 1200, København K",
          "idField": "22756214",
          "nameField": "NORDIC EXAMPLE INDUSTRIES A/S",
          "percentageField": "33.33",
          "percentageIsRangeField": false,
          "shareholderTypeField": "Virksomhed"
        }
      ]
    },
    "foundationDateField": "2015-05-01",
    "legalFormField": "APS",
    "legalFormSubTypeField": "Anpartsselskab",
    "legalStatusField": "NORMAL",
    "nameField": "EXAMPLE HOLDINGS ApS",
    "normalizedLegalStatusField": "ACTIVE",
    "officialField": false,
    "registrationAuthorityField": "Det Centrale Virksomhedsregister"
  }
}
```

**After:**

```json theme={null}
{
  "companyProfileField": {
    "activityField": [
      {
        "classificationSchemeField": "DB07_NACErev2",
        "codeField": "622000",
        "descriptionField": "Computerkonsulentbistand og forvaltning af computerfaciliteter",
        "typeField": "Primary"
      }
    ],
    "addressesField": [
      {
        "addressInOneLineField": "Eksempelvej 10, 1200 København K, Denmark",
        "addressLine1Field": "10 Eksempelvej",
        "cityTownField": "København K",
        "countryField": "Denmark",
        "postcodeField": "1200",
        "regionStateField": "KØBENHAVN",
        "typeField": "Registered Address"
      }
    ],
    "codeField": "12345678",
    "directorAndShareDetailsField": {
      "directorsField": [
        {
          "address1Field": "Eksempelgade 12",
          "address2Field": "Ebberup",
          "appointedOnField": "2024-08-27",
          "directorNumberField": "1000000002",
          "nameField": "Jens Eksempel",
          "postcodeField": "4034",
          "titleField": "CEO"
        }
      ],
      "shareHoldersField": [
        {
          "addressField": "Eksempelvej 10, 1200 København K, Denmark",
          "idField": "22756214",
          "nameField": "NORDIC EXAMPLE INDUSTRIES A/S",
          "percentageIsRangeField": true,
          "percentageLowerLimitField": "33.33%",
          "percentageRangeField": "33.33-49.99%",
          "percentageUpperLimitField": "49.99%",
          "shareClassField": "B+C",
          "shareholderTypeField": "Company",
          "totalShareValueField": 40000
        },
        {
          "addressField": "Eksempelgade 5, 1052 København K, Denmark",
          "nameField": "Jens Eksempel",
          "percentageIsRangeField": true,
          "percentageLowerLimitField": "0%",
          "percentageRangeField": "Under 5%",
          "percentageUpperLimitField": "4.99%",
          "shareClassField": "B+C",
          "shareholderTypeField": "Person"
        }
      ]
    },
    "legalFormDeclarationField": "Anpartsselskab",
    "legalFormField": "Private Limited Company",
    "legalStatusField": "NORMAL",
    "nameField": "EXAMPLE HOLDINGS ApS",
    "normalizedLegalStatusField": "Active",
    "officialField": false,
    "previousNamesField": [
      "ApS EXAMPLE nr. 2513"
    ],
    "registrationAuthorityField": "Danish Business Authority",
    "registrationDateField": "2015-05-01",
    "registrationNumberField": "12345678"
  }
}
```

### Company-level fields

All Lite Profile field changes (address structure, `legalFormField`, `legalStatusField`, `normalizedLegalStatusField`, `registrationAuthorityField`, `previousNamesField`, `registrationDateField`, `registrationNumberField`, `aliasesField`) apply identically to Enhanced Profile. Additional Enhanced-only changes:

| Field                            | Change  | Before example                                                          | After example                                   |
| -------------------------------- | ------- | ----------------------------------------------------------------------- | ----------------------------------------------- |
| `activityField[].typeField`      | Added   | *(absent)*                                                              | `"Primary"`                                     |
| `addressesField[].cityTownField` | Added   | *(absent in Enhanced)*                                                  | `"København K"`                                 |
| `faxNumberField`                 | Removed | `"08418858"` *(observed on entities that previously exposed the field)* | *(absent)*                                      |
| `legalFormSubTypeField`          | Renamed | `"legalFormSubTypeField": "Anpartsselskab"`                             | `"legalFormDeclarationField": "Anpartsselskab"` |

### Directors

The director record shape has changed materially. Address lines are re-indexed, the ISO-2 country code line has been removed, an appointment-date field has been added, and role titles are now English and more granular.

#### Director field changes

| Field                               | Change                     | Before example                                        | After example                                                            |
| ----------------------------------- | -------------------------- | ----------------------------------------------------- | ------------------------------------------------------------------------ |
| `directorsField[].address2Field`    | Now populated consistently | *(sporadic)*                                          | `"Frederikssund"`                                                        |
| `directorsField[].address3Field`    | Now populated consistently | *(sometimes absent)*                                  | `"Fakse Ladeplads"`                                                      |
| `directorsField[].address4Field`    | Added                      | *(absent)*                                            | `"Askeby"`                                                               |
| `directorsField[].address6Field`    | Removed                    | `"DK"`, `"ES"`, `"SE"`, `"NL"` *(ISO-2 country code)* | *(absent — no country field on director record)*                         |
| `directorsField[].appointedOnField` | Added                      | *(absent)*                                            | `"2023-02-03"`                                                           |
| `directorsField[].titleField`       | Value format               | `"Bestyrelse"`, `"Direktion"`                         | `"Board Member"`, `"Chairman"`, `"Vice Chairman"`, `"CEO"`, `"Director"` |

#### Director `titleField` — role title mapping

Director role titles have been upgraded from broad Danish role categories to more granular English position titles. The mapping is not 1:1 — the old `"Bestyrelse"` (board) category now splits across `"Board Member"`, `"Chairman"`, and `"Vice Chairman"`, and `"Direktion"` (management) splits across `"CEO"` and `"Director"`. Integrations that previously matched on `"Bestyrelse"` or `"Direktion"` literals will no longer match any title and must be updated to the new vocabulary.

| Previous category (Danish) | New titles (English)                              |
| -------------------------- | ------------------------------------------------- |
| `"Bestyrelse"`             | `"Board Member"`, `"Chairman"`, `"Vice Chairman"` |
| `"Direktion"`              | `"CEO"`, `"Director"`                             |

#### Director list size

Enhanced Profile now returns only currently-serving directors, eliminating historical appointments that were previously returned alongside current ones. This yields a materially smaller but more accurate `directorsField` array. Historical appointments are out of scope for Enhanced Profile. There is no change to the response structure when the `directorsField` is empty.

<Note>
  This change has already been promoted to production ahead of the wider release. Responses from the live V1 API already reflect the current-directors-only behaviour, so no separate preview testing is required for this item — it is included here for completeness.
</Note>

#### Director `directorNumberField`

Director identifiers now follow the CVR scheme; they will not match identifiers from previous responses. Downstream systems using these IDs for person-level deduplication should re-map on next refresh.

### Shareholders

Shareholder records now use structured English shareholder types, a standardised single-line address format, and range-based ownership percentages. A new optional `shareClassField` surfaces the share class where applicable, and `totalShareValueField` carries the nominal value of the holding.

#### Shareholder record comparison

**Before:**

```json theme={null}
{
  "addressField": "Eksempelvej 10, KØBENHAVN, DK, 1200, København K",
  "idField": "22756214",
  "nameField": "NORDIC EXAMPLE INDUSTRIES A/S",
  "percentageField": "33.33",
  "percentageIsRangeField": false,
  "shareholderTypeField": "Virksomhed"
}
```

**After:**

```json theme={null}
{
  "addressField": "Eksempelvej 10, 1200 København K, Denmark",
  "idField": "22756214",
  "nameField": "NORDIC EXAMPLE INDUSTRIES A/S",
  "percentageIsRangeField": true,
  "percentageLowerLimitField": "33.33%",
  "percentageRangeField": "33.33-49.99%",
  "percentageUpperLimitField": "49.99%",
  "shareClassField": "B+C",
  "shareholderTypeField": "Company",
  "totalShareValueField": 40000
}
```

#### Shareholder field changes

| Field                                           | Change           | Before example                             | After example                                                                      |
| ----------------------------------------------- | ---------------- | ------------------------------------------ | ---------------------------------------------------------------------------------- |
| `shareHoldersField[].addressField`              | Value format     | `"Albuen, 31, KOLDING, DK, 6000, Kolding"` | `"Albuen 31, 6000 Kolding, Denmark"`                                               |
| `shareHoldersField[].percentageField`           | Removed          | `"100"`, `"33.33"`                         | *(absent — replaced by the range fields)*                                          |
| `shareHoldersField[].percentageIsRangeField`    | Value format     | `false`                                    | `true`                                                                             |
| `shareHoldersField[].percentageLowerLimitField` | Added            | *(absent)*                                 | `"33.33%"`                                                                         |
| `shareHoldersField[].percentageUpperLimitField` | Added            | *(absent)*                                 | `"49.99%"`                                                                         |
| `shareHoldersField[].percentageRangeField`      | Added            | *(absent)*                                 | `"33.33-49.99%"`                                                                   |
| `shareHoldersField[].shareClassField`           | Added (optional) | *(absent)*                                 | `"A"`, `"B+C"` *(present when the holding is associated with a named share class)* |
| `shareHoldersField[].totalShareValueField`      | Added (optional) | *(absent)*                                 | `40000` *(nominal value of the holding, when reported)*                            |
| `shareHoldersField[].shareholderTypeField`      | Value format     | `"Virksomhed"`, `"Anden Deltager"`         | `"Company"`, `"Person"`                                                            |

#### `shareHoldersField` presence

When an entity has no shareholders, `directorAndShareDetailsField.shareHoldersField` is omitted from the response (previously it was returned as an empty array `[]`). Consumers iterating this key should guard against its absence.

#### Shareholder `idField`

For corporate shareholders registered in Denmark, `idField` carries the Danish company registration identifier. For natural-person shareholders, `idField` is omitted. Identifiers may not match values from previous responses; downstream systems using these IDs for deduplication should re-map on next refresh.

#### Shareholder percentage bands

Exact shareholder percentages are no longer emitted. Every shareholder record now carries the range quartet (`percentageIsRangeField`, `percentageLowerLimitField`, `percentageUpperLimitField`, `percentageRangeField`), reflecting how Danish ownership is disclosed in bands.

Shareholdings follow the official eleven-band enumeration published by the Danish Business Authority for the public ownership register (Det Offentlige Ejerregister). Upstream decimal values are converted to percentage-string edges in the response, with `percentageRangeField` carrying the canonical display string. The complete set of bands that may appear:

| Upstream CVR decimal | `percentageLowerLimitField` | `percentageUpperLimitField` | `percentageRangeField` |
| -------------------- | --------------------------- | --------------------------- | ---------------------- |
| `< 0.05`             | `"0%"`                      | `"4.99%"`                   | `"Under 5%"`           |
| `0.05`               | `"5%"`                      | `"9.99%"`                   | `"5-9.99%"`            |
| `0.1`                | `"10%"`                     | `"14.99%"`                  | `"10-14.99%"`          |
| `0.15`               | `"15%"`                     | `"19.99%"`                  | `"15-19.99%"`          |
| `0.2`                | `"20%"`                     | `"24.99%"`                  | `"20-24.99%"`          |
| `0.25`               | `"25%"`                     | `"33.32%"`                  | `"25-33.32%"`          |
| `0.3333`             | `"33.33%"`                  | `"49.99%"`                  | `"33.33-49.99%"`       |
| `0.5`                | `"50%"`                     | `"66.66%"`                  | `"50-66.66%"`          |
| `0.6666`             | `"66.67%"`                  | `"89.99%"`                  | `"66.67-89.99%"`       |
| `0.9`                | `"90%"`                     | `"99.99%"`                  | `"90-99.99%"`          |
| `1.0`                | `"100%"`                    | `"100%"`                    | `"100%"`               |

Consumers should treat `percentageRangeField` as the authoritative display string. The numeric lower/upper bounds are suitable for threshold comparisons (e.g. "25% or more") but callers should remember the bounds are band edges, not precise shareholdings — a `"33.33-49.99%"` holder owns somewhere in that range, not exactly 33.33%. The `"Under 5%"` band is the CVR disclosure floor; holdings below 5% are not reported at the individual level.

Reference: [Danish Business Authority — Public Ownership Register registration guide](https://virk.dk/myndigheder/stat/ERST/selvbetjening/Det_Offentlige_Ejerregister/vejledning-registrer-ejerforhold/).

## Entity-type coverage

All five Danish registered company types covered by Kyckr's Denmark integration are affected by this update:

* **Aktieselskab (A/S)** — Public Limited Company
* **Anpartsselskab (ApS)** — Private Limited Company
* **Kommanditselskab (K/S)** — Limited Partnership
* **Erhvervsdrivende fond (EFO)** — Commercial Foundation
* **Filial af udenlandsk virksomhed (FBA)** — Branch of a foreign company

The field-level changes described above apply consistently across all entity types. Entity-specific notes:

* **Foundations (EFO)** and **foreign-branch entities (FBA)** do not receive English translations in `legalFormField`; the value is the full Danish legal-form name.
* **Foreign-branch entities (FBA)** previously had `legalStatusField: "Ophørt"` when ceased; this is now `"SLETTET"`.
* **K/S and FBA** entities have empty or absent `directorsField` and `shareHoldersField` arrays, consistent with their legal structure. The structural changes to director/shareholder records do not manifest for these types.

Some CVR-registered entities are not corporate shareholding structures and therefore return no ownership data (for example embassies, partnerships (I/S), and sole traders). For these, the Enhanced Profile returns no shareholder records — an expected result rather than an error.

## Additional resources

<CardGroup cols={2}>
  <Card title="Lite Profile" icon="file-lines" href="/company-v1/guides/lite-profile">
    Verify basic company details for Denmark
  </Card>

  <Card title="Enhanced Profile" icon="building" href="/company-v1/guides/enhanced-profile">
    Full company profile including representatives and shareholders
  </Card>
</CardGroup>
