registercheckby openlaw group
Understand the data

Ownership

Shareholders, shareholdings and what the register can and cannot tell you.

What the register holds

Germany has no register of beneficial owners you can simply read. Ownership comes from the shareholder list (Gesellschafterliste), which a GmbH must file whenever its shareholders change.

This has three consequences you must design around:

  1. It is a document, not a field. The list is a PDF. What the API returns is what was extracted from it.
  2. It is only as fresh as the last filing. A company whose shareholders last changed in 2014 has a 2014 list, and that is correct.
  3. Not every legal form has one. An AG files no shareholder list; a sole trader (e.K.) has no shareholders. An empty response is frequently the right answer.

Reading ownership

GET /companies/{id}/shareholders returns the shareholders, and for partnerships the general and limited partners:

{
  "id": "c359aa06-…",
  "name": "Enduro Reise & Training GmbH",
  "shareholders": [
    {
      "name": "Spitz, Manfred Fritz",
      "is_company": false,
      "share_amount": 25000,
      "share_percentage": 100.0,
      "source_document_date": "2014-03-11"
    }
  ],
  "limited_partners": [],
  "general_partners": []
}

source_document_date is the date of the list the figures came from. Always show it. A percentage without its as-of date is a claim you cannot support.

Shareholders that are companies

Where a shareholder is itself a company, is_company is true. Follow the chain by resolving that shareholder's name through /search/companies and reading its shareholders in turn.

The reverse direction — GET /companies/{id}/holdings — returns the companies in which this company is recorded as a shareholder.

There is no depth limit and no cycle detection on our side. German group structures contain cycles. Cap your own traversal depth and keep a visited set.

When we hold no list yet

Asking for shareholders starts the work by itself. If we hold no shareholder list for this company, the response says availability: processing with no owners, and the same request a little later returns them. One call starts at most one extraction, for the company you asked about — depth does not multiply it.

That is also why availability matters more than an empty data array: not_filed means no list exists to read, processing means one is being read now, and only available means what you see is what is on file.

Rebuilding the history of past lists is a job, which is not available yet. Either way, a rebuild re-reads filed documents; it cannot invent a list that was never filed.

What you cannot get

  • Beneficial owners (UBO) as a resolved answer. The Transparenzregister is not public data and is not in this API. You can walk the shareholder chain yourself and reach a natural person in most cases, but that is your inference, not a register fact.
  • Share transfers between filings. Only the filed snapshots exist.
  • Shareholdings in an AG. Not filed, therefore not available.

On this page