Documents
Which documents exist and in which format.
With fetch-document you download official documents from the register as a file. Pass the company's entity_id in company_id and choose a document_type. Each delivered document costs 15 credits.
Document types
There are five document types. Write the values for document_type exactly as in the table, including upper and lower case. The example request fetches the Aktueller Abdruck of Hetzner Online GmbH, Ansbach HRB 6089.
| document_type | Document | Format |
|---|---|---|
| AD | Aktueller Abdruck (current printout)All entries that apply today. The classic register extract. | |
| CD | Chronologischer Abdruck (chronological printout)All entries in chronological order, including deleted ones, since the register has been kept electronically. | |
| SI | Strukturierter Registerinhalt (structured register content)The register content as XML in the XJustiz standard, good for machine processing. | XML |
| shareholders_list | Gesellschafterliste (shareholder list)The shareholder list with their shares, as the GmbH files it with the register. | |
| articles_of_association | Gesellschaftsvertrag or Satzung (articles of association)The contract that governs the company. For a GmbH it is called Gesellschaftsvertrag, for an AG and eG Satzung. |
curl -G "https://handelsregister.ai/api/v1/fetch-document" \ -H "x-api-key: YOUR_API_KEY" \ --data-urlencode 'company_id=94eb910fef13f94585c48c263fa446d4' \ --data-urlencode 'document_type=AD'
import requests response = requests.get( "https://handelsregister.ai/api/v1/fetch-document", headers={"x-api-key": "YOUR_API_KEY"}, params={ "company_id": "94eb910fef13f94585c48c263fa446d4", "document_type": "AD", }, ) data = response.json()
const url = new URL("https://handelsregister.ai/api/v1/fetch-document"); url.searchParams.append("company_id", "94eb910fef13f94585c48c263fa446d4"); url.searchParams.append("document_type", "AD"); const response = await fetch(url, { headers: { "x-api-key": "YOUR_API_KEY" }, }); const data = await response.json();
Documents by legal form
Aktueller Abdruck, Chronologischer Abdruck and Strukturierter Registerinhalt exist for every registered company. Which filed documents exist beyond that depends on the legal form.
| Legal form | AD, CD, SI | Shareholder list | Articles of association |
|---|---|---|---|
| GmbH, UG | yes | yes, mandatory | yes, the Gesellschaftsvertrag |
| AG, SE, KGaA | yes | no | yes, the Satzung |
| eG | yes | no | yes, the Satzung |
| KG, GmbH & Co. KG, OHG | yes | no | usually not |
| PartG, PartG mbB | yes | no | usually not |
| e.K. | yes | no | usually not |
A shareholder list exists only for GmbH and UG. For other legal forms and missing documents the API answers with 404 and charges nothing.
Formats
The response is the file itself, not JSON. You recognize the type by the Content-Type header, the file name by the Content-Disposition header.
The file name contains the entity_id, the document type and the fetch date, e.g. document_94eb910fef13f94585c48c263fa446d4_AD_2026-11-01.pdf.
Shareholder lists and articles are often scanned pages, some without a text layer. To get the text you then need OCR.
Some documents are only available from the register as a TIFF image. The API then answers with 415 and charges nothing.
In our example of Hetzner Online GmbH the files had these sizes: Aktueller Abdruck about 35 KB, Strukturierter Registerinhalt about 14 KB, Gesellschaftsvertrag about 450 KB.
async=true. If the register does not answer in time, you get 504 with Retry-After. Nothing is charged then.