> ## Documentation Index
> Fetch the complete documentation index at: https://docs.openregister.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Company historical owners

## Retrieve the historical ownership changes of a company

Get the full ownership history of a company across all filed documents. Unlike the current owners endpoint, this endpoint returns ownership data from every shareholder list (Gesellschafterliste) ever filed, allowing you to trace how ownership has changed over time.

**Cost:** 25 credits

### Async Processing

This endpoint may need to process data before it can return a result. Depending on the state of the data, you will receive one of two responses:

| Status         | Meaning                                                                               |
| -------------- | ------------------------------------------------------------------------------------- |
| `200 OK`       | Data is ready — the response body contains the full ownership history.                |
| `202 Accepted` | Processing is still in progress. Re-call the same endpoint until you receive a `200`. |

<Info>
  When you receive a `202`, wait **30 seconds** before retrying. Re-call the same endpoint with the same `company_id`. There is no separate job ID — simply poll until you get a `200`.

  **`202` responses are not billed.** Credits are only deducted when the endpoint returns `200` with data.
</Info>

### Supported Legal Forms

Historical ownership data is available for:

* **GmbH** (Gesellschaft mit beschränkter Haftung) - Limited liability company

### Ownership Data Structure

The response includes ownership snapshots across all filed documents. Each snapshot contains the document date, the owners at that point in time, their ownership stake (as percentage and/or nominal shares), and share capital. For corporate shareholders, you'll receive the company ID to retrieve further details.

### Use Cases

**Ownership Analysis:** Understand who has controlled a company over time and identify indirect ownership through corporate shareholders. Map ownership chains to reveal corporate structures.

**Funding Rounds:** Analyze funding rounds and understand who invested when — trace new shareholders entering the cap table and stake changes over time to reconstruct the company's funding history.

**Risk Assessment:** Identify concentration of ownership, related party transactions, or complex ownership structures that may require additional scrutiny.

**Network Mapping:** Track ownership connections between companies over time to identify business groups, family holdings, or corporate networks.


## OpenAPI

````yaml GET /v1/company/{company_id}/owners/historical
openapi: 3.1.0
info:
  title: OpenRegister API
  version: 2.5.0
  description: >
    API for accessing comprehensive company data from official registers.

    This API provides access to company information, shareholder data, financial
    reports, and contact details.
servers:
  - url: https://api.openregister.de
    description: Production
security:
  - BearerAuth: []
paths:
  /v1/company/{company_id}/owners/historical:
    get:
      tags:
        - v1
      summary: Get historical owner changes
      operationId: getHistoricalOwners
      parameters:
        - name: company_id
          in: path
          required: true
          description: |
            Unique company identifier.
            Example: DE-HRB-F1103-267645
          schema:
            type: string
      responses:
        '200':
          description: Successfully retrieved historical owner changes
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HistoricalOwnersResponse'
        '202':
          description: >-
            Accepted - Historical owners are being processed, retry this request
            shortly
        '400':
          description: Bad Request - Invalid parameters provided
        '401':
          description: Unauthorized - Authentication required
        '402':
          description: Payment Required - Insufficient credits for this request
        '404':
          description: Not Found - Company ID doesn't exist or has no owner history
        '429':
          description: Too Many Requests - Rate limit exceeded
        '500':
          description: >-
            Internal Server Error - An error occurred while processing the
            request
      x-codeSamples:
        - lang: JavaScript
          source: >-
            import Openregister from 'openregister';


            const client = new Openregister({
              apiKey: process.env['OPENREGISTER_API_KEY'], // This is the default and can be omitted
            });


            const response = await
            client.company.getHistoricalOwnersV1('company_id');


            console.log(response.owners);
        - lang: Python
          source: |-
            import os
            from openregister import Openregister

            client = Openregister(
                api_key=os.environ.get("OPENREGISTER_API_KEY"),  # This is the default and can be omitted
            )
            response = client.company.get_historical_owners_v1(
                "company_id",
            )
            print(response.owners)
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/oregister/openregister-go\"\n\t\"github.com/oregister/openregister-go/option\"\n)\n\nfunc main() {\n\tclient := openregister.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tresponse, err := client.Company.GetHistoricalOwnersV1(context.TODO(), \"company_id\")\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", response.Owners)\n}\n"
        - lang: CLI
          source: |-
            openregister company get-historical-owners-v1 \
              --api-key 'My API Key' \
              --company-id company_id
components:
  schemas:
    HistoricalOwnersResponse:
      type: object
      properties:
        owners:
          type: array
          items:
            $ref: '#/components/schemas/OwnerHistory'
      required:
        - owners
    OwnerHistory:
      type: object
      properties:
        id:
          type: string
          description: >
            Unique identifier for the owner. For companies, this is the company
            register ID

            (e.g. DE-HRB-F1103-267645) which can be used to look up the company.
            For natural

            persons, this is the entity UUID. For other entity types (foreign
            companies,

            foundations, etc.), this is empty.
        name:
          type: string
          description: Name of the owner
        entity_type:
          $ref: '#/components/schemas/OwnerHistoryEntityType'
        country:
          type: string
          description: Country of the owner
        ownership_history:
          type: array
          items:
            $ref: '#/components/schemas/OwnershipEntry'
          description: Historical ownership data across all documents
        first_appearance:
          type: string
          format: date-time
          description: Date when this owner first appeared
        last_appearance:
          type: string
          format: date-time
          description: Date when this owner last appeared (null if still active)
        status:
          $ref: '#/components/schemas/OwnerHistoryStatus'
      required:
        - id
        - name
        - entity_type
        - ownership_history
        - first_appearance
        - status
    OwnerHistoryEntityType:
      type: string
      description: Type of the owner entity
      enum:
        - natural_person
        - german_company
        - foreign_company
        - german_government_entity
        - german_foundation
        - german_multiple_shareholder
    OwnershipEntry:
      type: object
      properties:
        document_id:
          type: string
          format: uuid
          description: Document where this ownership data was found
        document_date:
          type: string
          format: date-time
          description: Date of the document
        nominal_shares:
          type: integer
          format: int64
          description: Nominal value of shares in this document
        percentage_shares:
          type: number
          format: double
          description: Percentage ownership in this document
      required:
        - document_id
        - document_date
        - nominal_shares
        - percentage_shares
    OwnerHistoryStatus:
      type: string
      description: Current status of the owner
      enum:
        - active
        - removed
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: |
        API Key Authentication
        Provide your API key as a Bearer token in the Authorization header.

````