---
title: "/companies/{cvr}/beneficial-owners"
method: GET
path: "/v1/companies/{cvr}/beneficial-owners"
tags: ["Companies"]
---

# /companies/{cvr}/beneficial-owners

`GET /v1/companies/{cvr}/beneficial-owners`

## Request

- Base URL: `https://api.companydata.dk` (the document declares no server; this is the origin it was published from)
- URL: `https://api.companydata.dk/v1/companies/{cvr}/beneficial-owners`
- Auth: HTTP bearer

Resolve the ultimate (beneficial) owners of a company.

Walks the ownership chain upward through company owners, multiplying the
ownership stake along every path, and returns the ultimate person owners
with their effective percentage (summed across all paths). Where a chain
ends at a foreign entity (ANDEN_DELTAGER), a company we can't resolve
further, or the depth limit, that owner is returned as a leaf with a
`leaf_reason`.

This is the company-rooted counterpart to
`/v1/participants/{unit_number}/indirect-ownership`, which is rooted on a
person and walks downward. Use this one to answer "who really owns this
company" in a single call.

## Path parameters

- `cvr` string, required

## Query parameters

- `max_depth` integer: Maximum ownership levels to walk upward
- `min_percent` number: Minimum effective ownership to include (0.01 = 1%)

## Response `200`

Successful Response

- BeneficialOwnersResponse
  - `cvr` string, required
  - `name` string, nullable
  - `beneficial_owners` BeneficialOwner[], required
    - `unit_number` integer, nullable: enhedsNummer of the ultimate owner (null for an unresolved company leaf)
    - `cvr` string, nullable: CVR, set only when the chain ends at a company we can't resolve further
    - `name` string, nullable
    - `type` string, nullable: PERSON | ANDEN_DELTAGER | VIRKSOMHED
    - `is_person` boolean: True for an ultimate individual owner
    - `effective_ownership_percent` number, required: Effective stake summed across all paths (0.5 = 50%)
    - `leaf_reason` string, nullable: Why the chain ends here: person_or_other | no_further_owners | max_depth | cycle
    - `paths` array[]: Ownership paths from the company up to this owner
      - BeneficialOwnerPathStep[]
        - `cvr` string, nullable
        - `unit_number` integer, nullable
        - `name` string, nullable
        - `type` string, nullable
        - `ownership_percent` number, nullable
  - `max_depth_used` integer, required
  - `truncated` boolean

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/companydata/apis/companydata-dk-api.md) · [All operations](https://skmtc.dev/companydata/apis/companydata-dk-api/llms.txt) · [OpenAPI document](https://skmtc.dev/companydata/apis/companydata-dk-api/revisions/1cc6c361ae64?raw)
