Skip to main content

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 absent fields are now present, a few fields have been renamed, 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, address structure, capital / shareholder structure, and representative role titles). Search for Denmark is not affected by this upgrade.

Key improvements

  • registrationAuthority now reads “Danish Business Authority” (previously “Det Centrale Virksomhedsregister”) — a clearer label for consumers building multi-jurisdiction UIs.
  • legalForm.original now returns the full Danish legal-form name (e.g. “Aktieselskab”) instead of the abbreviation (e.g. “A/S”); a new legalForm.normalized field provides the English translation (e.g. “Public Limited Company”) for most entity types.
  • Address structure has been redesigned. streetName, streetNumber, city, municipality, and rawAddressLines are new; region has been replaced by municipality; buildingName is now reserved for a real building name or c/o prefix (previously it held the street line); country is now a full English name rather than an ISO-2 code.
  • Several new top-level fields are populated: registrationDate, previousNames, dissolutionDate (for dissolved entities only), and (Enhanced Profile only) contactDetails, totalCapital.
  • In Enhanced Profile, foundationDate has been replaced by registrationDate.
  • In Enhanced Profile, the capital structure has been redesigned to surface share classes and voting rights, and shareholder percentages are now expressed as ranges.
  • In Enhanced Profile, representatives.corporations[] has been replaced by representatives.individuals[], with natural-person representatives correctly typed as "Person". Role vocabulary has been upgraded from broad Danish categories to specific English position titles, and appointment dates (startDate) and active status (isActive) are now exposed.

Lite Profile changes

Lite Profile has been upgraded with a redesigned address structure, several newly populated top-level fields, and improved values for legal form, legal status, and the registration authority.

Response structure changes

Before:
After:

Field-by-field changes

Notes

  • legalForm.original now emits the full Danish legal-form name (Aktieselskab, Anpartsselskab, Kommanditselskab, Erhvervsdrivende fond, Filial af udenlandsk virksomhed med begrænset ansvar), replacing the previous abbreviations (A/S, APS, K/S, EFO, FBA). Consumers doing case-sensitive or exact-match comparisons on this field must accommodate both forms.
  • legalForm.normalized provides an English translation (Public Limited Company, Private Limited Company, Limited Partnership) for Aktieselskab, Anpartsselskab, and Kommanditselskab. The field is absent for Erhvervsdrivende fond (EFO) and Filial af udenlandsk virksomhed (FBA) — consumers should handle both the populated and absent cases.
  • Address restructuring is the most structurally significant Lite Profile change. The previous shape stored the street line in buildingName and combined postcode with city in postcode. The new shape separates streetName, streetNumber, city, postcode, and (where applicable) buildingName into distinct fields. Integrations that extracted values by parsing fullAddress or buildingName should switch to the typed fields.
  • legalStatus.original value changes depend on the underlying registry status. "NORMAL" 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 legalStatus.normalized field continues to provide a stable Active / Inactive classifier for programmatic use.
  • dissolutionDate is only present when the entity has been dissolved. Active entities do not return this field.

Enhanced Profile changes

Enhanced Profile inherits all the Lite Profile changes listed above, plus the additional improvements described here. The most significant structural improvements are to capital, representatives, and the replacement of foundationDate with registrationDate.

Response structure changes

Before:
After:

Company-level field changes

Enhanced Profile inherits every Lite Profile change (address restructuring, legalForm.original / legalForm.normalized, legalStatus.original, registrationAuthority, previousNames, registrationDate, dissolutionDate). Additional Enhanced-only changes: Note on foundationDate vs registrationDate: in Lite Profile, both fields are present and carry the same date value. In Enhanced Profile, foundationDate has been dropped and registrationDate is emitted in its place. Consumers that previously read foundationDate from Enhanced responses must switch to registrationDate.

Capital changes

The capital structure has been redesigned to surface share classes, voting rights, and percentage ranges. The aggregate share capital value has been lifted out to a new top-level totalCapital object.

Capital top-level field changes

For companies with multiple share classes, the capital[] array now contains one element per share class, each carrying its own classCode, classDescription, type, shareholdings[], and votingRights. For companies with a single unified share class (such as a typical Aktieselskab), the class-metadata fields are absent and capital[] contains a single element as before. For some entity types (Erhvervsdrivende fond / EFO), capital[] is no longer returned; only totalCapital is emitted. Integrations that previously relied on the capital[] array being present for these entities should fall back to totalCapital.

Shareholding percentage changes

Exact shareholder percentages are no longer emitted. Every shareholding record now carries the range quartet (percentageIsRange, percentageLowerLimit, percentageUpperLimit, percentageRange). Consumers that previously read percentage directly must switch to the range fields. percentageRange is a human-readable composite string (e.g. "100%" for a sole shareholder, "33.33-49.99%" for a banded shareholding, "Under 5%" for a below-disclosure-threshold shareholding).

Shareholder percentage 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 percentageRange carrying the canonical display string. The complete set of bands that may appear: Consumers should treat percentageRange 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.

Corporate-shareholder record changes

New: individual shareholders

Natural-person shareholders are now surfaced through a new shareholders.individuals[] array alongside the existing shareholders.corporations[]. Individual shareholders carry name, type: "Person", and a structured residential address object with type: "Residential Address". Identifier and registration fields are not emitted for individuals.
Previous responses classified all representatives and shareholders under corporations[] regardless of whether the entity was a company or a natural person.

Representatives changes

The representatives structure has been redesigned. representatives.corporations[] is no longer returned; natural-person representatives now appear under representatives.individuals[] with type: "Person". Role vocabulary, address structure, and activity-state fields have all changed.

Representative field changes

Role title mapping

Previous responses returned one of two broad Danish role categories ("Bestyrelse" for the board, "Direktion" for management) on role.original and did not populate role.normalized. Responses now carry a specific CVR position code on role.original and an English translation on role.normalized: The mapping from previous to new is not 1:1 — the two Danish categories split across five English titles. Integrations that previously matched on "Bestyrelse" or "Direktion" literals will no longer match any value and must be updated. For stable programmatic use, prefer the English values in role.normalized.

Representative count

Enhanced Profile now returns only currently-serving representatives, eliminating historical appointments that were previously returned alongside current ones. This yields a materially smaller but more accurate representatives list. Historical appointments are out of scope for Enhanced Profile. isActive is exposed on every representative record for consumers that need to filter explicitly.
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.

Representative idNumber

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

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 legalForm.normalized; the field is absent for these types.
  • Foreign-branch entities (FBA) previously had status.original: "Ophørt" when ceased; this is now "SLETTET".
  • Kommanditselskab (K/S) and Filial af udenlandsk virksomhed (FBA) typically do not return capital, totalCapital, representatives, or contactDetails in either the previous or the new response — consistent with their legal structure.
  • Erhvervsdrivende fond (EFO) previously returned capital via capital[]; the new response returns only totalCapital for this type (the capital[] array is not emitted).
  • Companies with multiple share classes (most commonly Anpartsselskab with A / B / C class structures) now have capital[] split into one element per share class, with classCode, classDescription, type, and per-class votingRights populated.
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

Lite Profile

Verify basic company details for Denmark

Enhanced Profile

Full company profile including representatives and shareholders