registercheckby openlaw group
API referenceCompanies

Retrieve the tree of a company's holders

GET
/companies/{company_id}/ownership-tree

The holders of this company as a tree: one node per shareholding, saying where it sits. depth is the level below the company you asked about, effective_percentage the share of that company held through the chain, and via_shareholding_id the holding a node is reached through. The shareholding in a node is the object GET /companies/{company_id}/shareholders lists, unchanged by how it was reached.

Today the tree holds the company's direct holders, each at depth 1, whatever depth you ask for: the holders of corporate holders are not resolved yet.

An empty nodes does not say whether no shareholder list is on file or whether it is not extracted yet: GET /companies/{company_id}/shareholders says which (extract.status). As there, asking starts the extraction when we hold no shareholder list for the company yet: at most one, for the company you asked about.

Costs 10 credits.

Authorization

bearerAuth
AuthorizationBearer <token>

Your API key, sent as Authorization: Bearer rc_live_….

In: header

Path Parameters

company_id*string

The company's id (cmp_…). The raw UUID /v1 published before is still read until 2026-12-31, and such a request is answered with Deprecation and Sunset. An id of another kind, or anything else, answers 400 validation_failed naming company_id.

Match^cmp_[0-7][0-9a-hjkmnp-tv-z]{25}$

Query Parameters

depth?integer

How many ownership levels to resolve.

Range1 <= value <= 3
Default1

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X GET "https://api.registercheck.de/v1/companies/cmp_1z3gn9wpvx9j59w8bd9w5rm72n/ownership-tree" \  -H "Authorization: Bearer $REGISTERCHECK_API_KEY"
{  "object": "ownership_tree",  "company": {    "object": "company",    "id": "cmp_1z3gn9wpvx9j59w8bd9w5rm72n",    "name": "Beispiel Analytics GmbH"  },  "nodes": [    {      "shareholding": {        "id": "shr_1b7h6nwvvt9e69t3gz58xmrqbe",        "object": "shareholding",        "company": {          "object": "company",          "id": "cmp_1z3gn9wpvx9j59w8bd9w5rm72n",          "name": "Beispiel Analytics GmbH"        },        "holder": {          "object": "person",          "id": null,          "name": "Dr. Erika Mustermann"        },        "type": "shareholder",        "percentage": 60,        "nominal_amount": {          "amount": "15000.00",          "currency": "EUR"        },        "liability_amount": null,        "match_confidence": null,        "source": {          "object": "document",          "id": "doc_3cfp79y2gv9gprwftabdp7v3mz",          "date": "2025-06-03",          "type": "shareholder_list"        }      },      "depth": 1,      "effective_percentage": 60,      "via_shareholding_id": null    },    {      "shareholding": {        "id": "shr_1w9nf6yymb9jerw3sa7d65tvkz",        "object": "shareholding",        "company": {          "object": "company",          "id": "cmp_1z3gn9wpvx9j59w8bd9w5rm72n",          "name": "Beispiel Analytics GmbH"        },        "holder": {          "object": "company",          "id": "cmp_4zhsyprpta9gyrwbrt1ee8tzkf",          "name": "Beispiel Beteiligungs GmbH"        },        "type": "shareholder",        "percentage": 40,        "nominal_amount": {          "amount": "10000.00",          "currency": "EUR"        },        "liability_amount": null,        "match_confidence": null,        "source": {          "object": "document",          "id": "doc_3cfp79y2gv9gprwftabdp7v3mz",          "date": "2025-06-03",          "type": "shareholder_list"        }      },      "depth": 1,      "effective_percentage": 40,      "via_shareholding_id": null    }  ]}