registercheckby openlaw group
API referenceCompanies

List who holds an interest in a company

GET
/companies/{company_id}/shareholders

The shareholdings in this company: the shareholders from the most recent shareholder list on file, and the partners of a partnership, its general partners (Komplementäre, general_partner) and its limited partners (Kommanditisten, limited_partner). An interest has the same id where its holder's side lists it: a person's at GET /persons/{person_id}/holdings, where the person is the holder, linked, and a company's shares at GET /companies/{company_id}/holdings. Here a person holder is named as the filing names them, not linked yet.

A Komplementär both represents the partnership and holds an interest in it, so they are a general_partner role at GET /companies/{company_id}/roles and, for as long as that role is current, a general_partner shareholding here. The register entry names the partner; no filing of shares stands behind it, so that shareholding's percentage and amounts are null, and so are the id, date and type of its source.

These are the direct holders. Who holds the holders is a question about a chain, not about a holding: GET /companies/{company_id}/ownership-tree answers it, and depth is a parameter there. Sent here, depth is a 400 that says so.

extract says where this data stands, so an empty list is never ambiguous: read from a filing (parsed), being read (processing), no shareholder list on file (not_filed), or a filing that could not be read (failed). A partnership files no shareholder list; while partners read from its register entry are listed, it says parsed.

If we hold no shareholder list for this company yet, asking for one starts the work: the response says extract.status: processing, and the same request a little later returns the holders. One call starts at most one extraction, 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

limit?integer

Page size, 1 to 100.

Range1 <= value <= 100
Default20
cursor?string

The next_cursor of the previous page; leave it out for the first page. Opaque: pass it back as it came. A cursor from another list, or from the same list with other filters, answers 400 validation_failed naming cursor.

Length1 <= length <= 2000

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/shareholders" \  -H "Authorization: Bearer $REGISTERCHECK_API_KEY"
{  "object": "page",  "next_cursor": null,  "extract": {    "status": "parsed",    "fetched_at": null,    "document_id": "doc_3cfp79y2gv9gprwftabdp7v3mz"  },  "data": [    {      "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"      }    },    {      "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"      }    }  ]}