registercheckby openlaw group
API referenceCompanies

Assemble a KYB report for a company

GET
/companies/{company_id}/kyb-report

A company's register entry, its current roles, its shareholders, the tree of its holders to depth 3, and references to the filings those were read from, assembled for this request.

as_of is when the report was assembled. Each section's data_date is the date of the register data in that section. id names this response. A new id is issued for every report, including when the caller sends the same request id again. The report is not stored, and asking again assembles it again.

ownership.beneficial_owners is not_included_yet. ownership.unresolved names why a figure cannot be stated for this company: stock_corporation for an AG, SE or KGaA, including one worded with a personally liable partner, and partnership_terms_unknown for a KG, including a partnership worded "& Co. KG" or "& Co. OHG".

documents names the shareholder list and the current and chronological register extracts, newest first, as /companies/{company_id}/documents lists them. It does not return the file. When the company's filings are not a list, documents.status is unavailable and the rest of the report is still returned.

Roles and shareholders are the first 100. When next_cursor is set, read the rest from /companies/{company_id}/roles and /companies/{company_id}/shareholders.

A part that cannot be completed — the company, the roles, the shareholders or the tree — answers 503, and nothing is charged. A shareholder list that is still being extracted answers 503 with Retry-After, and asking again does not start another extraction. A failure reading the company is a 503, not a 404. The check that drops a privacy-restricted person, when it cannot be completed, answers 500, as on the other company routes. No section of the report is returned on its own. A merged company id answers 301 to this report on the survivor.

The notice on every report is computed from register filings (shareholder lists and register entries). It is not an extract from the Transparenzregister, not the beneficial owners reported under §§ 19–20 GwG, and no substitute for an obliged entity's own due diligence.

Costs 50 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}$

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_01hxn3rys1fh58w4d1pb1x9s81/kyb-report" \  -H "Authorization: Bearer $REGISTERCHECK_API_KEY"
{  "object": "kyb_report",  "id": "kyb_0spwtbrp21bqf975kbw3sptezw",  "as_of": "2026-10-09T08:00:00Z",  "notice": "Computed from register filings (shareholder lists and register entries). Not an extract from the Transparenzregister, not the beneficial owners reported under §§ 19–20 GwG, and no substitute for an obliged entity's own due diligence.",  "company": {    "data_date": "2026-06-02",    "record": {      "id": "cmp_1z3gn9wpvx9j59w8bd9w5rm72n",      "object": "company",      "name": "Beispiel Analytics AG",      "status": "active",      "legal_form": "ag",      "register": {        "court": {          "code": "D2601",          "name": "Amtsgericht München"        },        "type": "HRB",        "number": "299999",        "formatted": "Amtsgericht München HRB 299999",        "country": "DE"      },      "address": null,      "purpose": null,      "capital": null,      "representation_rule": null,      "identifiers": {        "euid": null,        "lei": null      },      "industries": [],      "registration_date": null,      "founding_date": "2024-03-14",      "termination_date": null,      "last_register_entry_date": "2026-06-02",      "counts": {        "current_roles": 0,        "documents": 1,        "financial_statements": 0      }    }  },  "roles": {    "data_date": null,    "page": {      "object": "page",      "data": [],      "next_cursor": null    }  },  "shareholders": {    "data_date": null,    "page": {      "object": "page",      "data": [],      "next_cursor": null,      "extract": {        "status": "not_filed",        "fetched_at": null,        "document_id": null      }    }  },  "ownership": {    "data_date": null,    "tree": {      "object": "ownership_tree",      "company": {        "object": "company",        "id": "cmp_1z3gn9wpvx9j59w8bd9w5rm72n",        "name": "Beispiel Analytics AG"      },      "nodes": [],      "complete": false,      "truncated": false,      "truncated_reason": null,      "unresolved": [],      "list_reason": "no_shareholder_list"    },    "beneficial_owners": {      "status": "not_included_yet"    },    "unresolved": [      "stock_corporation"    ]  },  "documents": {    "status": "available",    "data_date": "2026-06-02",    "data": [      {        "object": "document",        "id": "doc_3cfp79y2gv9gprwftabdp7v3mz",        "type": "current_register_extract",        "published_date": "2026-06-02"      }    ]  }}