# Handelsregister API (`radeance/handelsregister-api`) Actor

Access valuable key company data from the German Commercial Register in realtime from Handelsregister.de: shareholders, executives, addresses, court details, and official documents. Ideal for LegalTech, compliance, and due diligence workflows.

- **URL**: https://apify.com/radeance/handelsregister-api.md
- **Developed by:** [Radeance](https://apify.com/radeance) (community)
- **Categories:** Automation, Integrations, Developer tools
- **Stats:** 247 total users, 9 monthly users, 100.0% runs succeeded, 15 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $0.01 / actor start per 1 gb

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## 💎 Handelsregister API

This powerful & efficient API is designed to **effortlessly** extract comprehensive **German business data** from the **German Commercial Register (Handelsregister)**.
<br><br>Whether you're a **business analyst**, **compliance officer**, **investment researcher**, or **legal professional**, this API helps you uncover **detailed company information** including **legal forms**, **representatives**, **business address**, **business purposes**, **share capital**, **registered addresses**, **court information**, **founding dates**, and **official document retrieval**.
<br><br>Perfect for researching any German company **across all 16 federal states**, it provides **real-time business intelligence**, corporate structures, management changes, financial data, and **compliance verification** with lightning-fast response times.

One of its best features is its **performance** & **reliability** while **extracting business data points in seconds**, giving you enterprise-level company intelligence from Germany's official commercial register without the usual slow response times.

### ❶ Key Features

- **🏢 Comprehensive Business Data Extraction:**
  <br>

  - ✅ Scrapes detailed company information from Handelsregister.de with advanced search capabilities
    <br>
  - ✅ Extracts complete corporate data including legal forms, share capital, business purposes, and management details **automatically**
    <br>
  - ✅ Provides key business metrics such as company status, founding dates, registered offices, court information, and executive profiles.
    <br><br>

- **📋 Executive & Management Intelligence:**
  <br>

  - ✅ Retrieves valuable information about company representatives, management roles, and corporate structure
    <br>
  - ✅ Includes representattives details for comprehensive due diligence
    <br><br>

- **🔖 Official Document Access:**
  <br>

  - ✅ Provides direct access to official court documents including current printouts, chronological records, and structured content
    <br>
  - ✅ Supports multiple document formats (PDF, XML) for comprehensive legal research
    <br>
  - ✅ Includes document availability status and download URLs for immediate access
    <br><br>

- **📍 Advanced Search & Filtering:**
  <br>

  - ✅ Allows searching by company name, registration number, or court jurisdiction
    <br>
  - ✅ Supports filtering by Identifiers like EUID
    <br>
  - ✅ Flexible search options for exact matches or broad company research
    <br><br>

- **📈 Flexible Data Output:**
  <br>
  - ✅ Outputs data in various formats including CSV, XLSX, JSON, JSONL, XML, and RSS

### ❷ Output

#### Basic Company Search Output

```json
{
    "company_name": "adidas AG",
    "status": "active",
    "court_state": "BY",
    "court_info": "District court Fürth HRB 3868",
    "court_name": "District court Fürth",
    "register_type": "HRB",
    "register_number": "3868",
    "register_number_numeric": 3868,
    "registered_office": "Herzogenaurach"
}
```

#### Deep Company Search Output

```json
{
    "identifier": "DE-HRB-R3306-66773",
    "euid": "DER3306.HRB66773",
    "company_name": "REWE Markt GmbH",
    "status": "active",
    "legal_form": "GmbH",
    "business_purpose": "(a) der Groß- und Einzelhandel sowie der E-Commerce-Handel (Internethandel) mit sowie die Be- und Verarbeitung von Waren aller Art (einschließlich Betriebs- und Geschäftseinrichtungen und einzelnen Einrichtungsgegenständen), insbesondere Lebensmitteln aller Art, sowie sonstige Handels- und Dienstleistungen, insbesondere die Lagerhaltung, der Transport und die Erbringung von sonstigen Logistikdienstleistungen, (b) der Betrieb von Gastronomie aller Art, (c) die Entwicklung, Planung und Errichtung von gewerblich genutzten Immobilien, auch als Generalübernehmer, (d) der Erwerb, das Halten und die Verwaltung von Beteiligungen, insbesondere die Führung und Verwaltung von Unternehmen, die in den unter lit. (a) - (c) bezeichneten Geschäftsfeldern tätig sind.",
    "founding_date": "2009-08-05T00:00:00",
    "share_capital": 200000100.0,
    "share_capital_currency": "EUR",
    "headquarters": "Köln",
    "representatives": [
        {
            "full_name": "Daniela Büchel",
            "role": "Executive Management",
            "birth_date": "1973-02-26",
            "city": "Frechen"
        },
        {
            "full_name": "Telerik Schischmanow",
            "role": "Executive Management",
            "birth_date": "1975-02-11",
            "city": "Siegburg"
        },
        {
            "full_name": "Christoph Eltze",
            "role": "Executive Management",
            "birth_date": "1973-07-15",
            "city": "Köln"
        },
        {
            "full_name": "Thomas Nonn",
            "role": "Executive Management",
            "birth_date": "1964-04-28",
            "city": "Overath"
        },
        {
            "full_name": "Peter Maly",
            "role": "Executive Management",
            "birth_date": "1968-05-06",
            "city": "Bonn"
        }
    ],
    "address": {
        "street": "Domstraße",
        "house_number": "20",
        "postal_code": "50668",
        "city": "Köln",
        "country": "Germany",
        "full_address": "Domstraße 20, 50668 Köln"
    },
    "court_info": "District court Köln HRB 66773",
    "court_name": "District court Köln",
    "court_code": "R3306",
    "court_state": "NW",
    "register_type": "HRB",
    "register_number": "66773",
    "register_number_numeric": 66773,
    "registered_office": "Köln",
    "documents": [
        {
            "filename": "NW-Köln_HRB_66773+SI-20250803220411.xml",
            "available": true,
            "document_code": "SI",
            "document_type": "structured_content",
            "content": null
        },
        {
            "filename": "NW-Köln_HRB_66773+AD-20250803220411.pdf",
            "available": true,
            "document_code": "AD",
            "document_type": "current_printout",
            "content": null
        },
        {
            "filename": "NW-Köln_HRB_66773+CD-20250803220411.pdf",
            "available": true,
            "document_code": "CD",
            "document_type": "chronological_printout",
            "content": null
        },
        {
            "filename": "NW-Köln_HRB_66773+HD-20250803220411.pdf",
            "available": false,
            "document_code": "HD",
            "document_type": "historical_printout",
            "content": null
        }
    ],
    "number_of_entries": 73,
    "last_entry_date": "2025-03-18T00:00:00"
}
```

### ❸ Input

#### Search parameters

<img src="https://i.imgur.com/ePAAT9m.png" alt="MOZ Search Parameters Input Image" style="border-radius: 15px;" />
<br>

| Parameter                     | Type           | Default              | Description |
| ----------------------------- | -------------- | -------------------- | ----------- |
| `identifier`                  | string         | —                    | Company EU-ID or Register Identifier for precise company lookups. Supports EU-ID formats such as `DEF1234R.HRB123456B` and register identifiers such as `DE-HRB-F1234R-123456`. |
| `keyword`                     | string         | —                    | Company name or partial keyword to search for matching businesses in the German Commercial Register (e.g. `ADIDAS AG`). |
| `register_type`               | string         | `HRB`                | Register type to search. Options include `HRA` (Handelsregister Abteilung A), `HRB` (Handelsregister Abteilung B), `GnR` (Genossenschaftsregister), `PR` (Partnerschaftsregister), `VR` (Vereinsregister), and `GsR` (Gesellschaftsregister). |
| `register_number`             | string         | —                    | Specific register number for direct lookup (e.g. `3868`). Leave empty when searching by `identifier` or `keyword`. |
| `register_court`              | string         | `all`                | Register court to search. Select a specific German register court or use `all` to search across all available courts. |
| `include_company_details`     | boolean        | `true`               | Includes detailed company information such as business purpose, founding date, share capital, headquarters, legal status, and other corporate details. |
| `include_representatives`     | boolean        | `true`               | Includes company representatives such as managing directors, shareholders, board members, and executives, including available names, roles, birth dates, and locations. |
| `include_address`             | boolean        | `true`               | Includes company headquarters address information such as street, house number, postal code, city, country, and formatted address. |
| `include_documents`           | boolean        | `false`              | Retrieves and stores available official company documents in Apify Key-Value Storage for download and analysis. |
| `document_types`              | array (string) | `["current_printout"]` | Document types to retrieve. Options include `current_printout` (AD), `chronological_printout` (CD), `historical_printout` (HD), `shareholders_list` (SL), `partnership_agreement` (PA), `supervisory_board_list` (SB), and `structured_content` (SI). |
| `storage_name`                | string         | —                    | Custom Apify Key-Value Storage name for company documents. Use a unique name of 3–32 characters for longer retention. If omitted, documents are stored in the default storage and remain available for 7 days. |

#### JSON

```json
{
  "keyword": "REWE Markt GmbH",
  "register_type": "HRB",
  "register_number": "66773",
  "register_court": "köln",
  "include_company_details": true,
  "include_representatives": true,
  "include_address": true,
  "include_documents": true,
  "document_types": ["current_printout", "chronological_printout", "historical_printout", "structured_content"]
}
```

### ❹ Use Cases

- **Legal Professionals & Compliance Officers**:
  <br>To conduct thorough due diligence, verify company information, and access official business documents for legal proceedings.
- **Investment Analysts & Financial Researchers**:
  <br>To gather comprehensive corporate intelligence, analyze company structures, and assess business legitimacy for investment decisions.
- **Business Development Teams**:
  <br>To research potential partners, competitors, and market players with detailed corporate backgrounds and management information.
- **Credit & Risk Assessment**:
  <br>To verify business credentials, analyze company stability, and assess financial reliability through official registry data.
- **Market Research & Competitive Intelligence**:
  <br>To analyze **industry landscapes**, track corporate changes, and monitor competitor activities in the German market.
- **Developers & Data Scientists**:
  <br>To integrate German business data into applications for automated compliance checking, lead generation, and business intelligence tools.

### ❺ Pricing

The **Handelsregister API** is available on a pay per event basis. This means you only pay for the number of searches you perform, with no monthly fees or subscriptions required.

| **Event Type** | **Price (USD)** | **Description** |
|---|---|---|
| **Actor Start** | $0.01 per 1 GB Memory | Base cost for running the API actor |
| **Basic Result** | $0.025 per Result | Basic company information lookup |
| **Company Deep Search** | $0.10 per Result | In-depth company details (business purpose, share capital, etc.) |
| **Company Address** | $0.025 | Access company address information |
| **Company Representatives** | $0.025 | Access management and representative profiles |
| **Company Documents** | $0.025 | Access available company documents information |
| **Document Stored** | $0.05 per Document | Document stored in Storage |

**Example Cost Calculation:**

- Basic company lookup with basic information: $0.01 + $0.025 = **$0.035** per run
- Company deep search with extensive information: $0.01 + $0.025 + $0.10 = **$0.135** per run
- Full company profile with address, representatives, documents, no stored documents:
  $0.01 + $0.025 + $0.10 + $0.025 + $0.025 + 0,025 = **$0.21** per run
- Full company profile with address, representatives, documents and 2 documents stored:
  $0.01 + $0.025 + $0.10 + $0.025 + $0.025 + 0.025 + ($0.05 × 2) = **$0.31** per run

*Note: Pricing is transparent with no hidden fees. You only pay for the specific data components you request. If no results are retrieved you will only pay for the Actor Start.*

### ❻ Usage Limits

This service has different usage limits depending on your subscription status:

| User Type | Monthly Runs | Search Options | Reset Period |
|-----------|--------------|---------------------|--------------|
| **Free** | 50 runs | All available | 30 days |
| **Paid** | Unlimited | All available | N/A |

#### How Limits Work

- **Free users**: Limited to 50 runs per 30-day period from your first usage
- **Paid users**: No limits on the number of runs
- **All users**: Can select any combination of the search options in a single run
- Usage resets automatically 30 days after your first run (for free users)

### ❼ While the scraper is running

During the run, the actor will output log messages letting you know what is going on at any point. Each message always contains specific information about the process including which url / page the actor is working on.

If you provide invalid inputs to the actor, it will immediately stop with a failure state and output log messages explaining what is wrong. If you are unsure what went wrong feel free to open up an issue in the issue tab.

### ❽ Legality of web scraping and scraping of job listings

Our **Handelsregister API** is designed to ethically extract **only publicly available data and information**, and it **does not** scrape private user data such as personal email addresses or personal identifiers in accordance with the **GDPR** and other data protection regulations.

Our services are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our services, when used for ethical purposes by Apify users, are safe. However, you should be aware that your results could contain personal data. Personal data is protected by the GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers. You can also read this [blog post](https://blog.apify.com/is-web-scraping-legal/) on the legality of web scraping.

### ❾ Feedback and Support

**Your satisfaction** is **important** to us! Therefore we are constantly striving to enhance the performance of our Actors.

If you have any technical feedback or encounter any bugs with the Handelsregister API, please create an issue in the Actor’s Issues tab on the Apify Console.

You can also contact us directly for **general help** on **issues** or **integrations** at suppport@radeance.com. <br> For **custom projects**, **general suggestions** or **new use cases** feel free to reach out to us at business@radeance.com

# Changelog

This Actor's version history is a separate document: https://apify.com/radeance/handelsregister-api/changelog.md

# Actor input Schema

## `identifier` (type: `string`):

Supports EU-ID identifer like `DEF1234R.HRB123456B` or register identifier like `DE-HRB-F1234R-123456`

## `keyword` (type: `string`):

Supports company name or keyword to search for the company

## `register_type` (type: `string`):

Select the type of register to search in

## `register_number` (type: `string`):

Enter the register number if known, otherwise leave empty to search by identifier or keyword

## `register_court` (type: `string`):

Select a register court if known, otherwise leave on all to search by identifier or keyword

## `deep_search` (type: `boolean`):

Whether to include in-depth company information like `business_purpose`, `founding_date`, `share_capital`, `headquarters`..

## `include_representatives` (type: `boolean`):

Whether to include company representatives like `managing_directors`, `shareholders`, `board_members`. This only works if `deep_search` is set to true.

## `include_address` (type: `boolean`):

Whether to include company headquarter address information like `street`, `postal_code`, `city`, `country`. This only works if `deep_search` is set to true.

## `include_documents` (type: `boolean`):

Whether to include and store company documents information like `current_printout`, `chronological_printout`, `historical_printout` `structured_content` etc. to the Apify Key-Value Storage. This only works if `deep_search` is set to true.

## `document_types` (type: `array`):

Select the types of documents you need and to store in the Apify Key-Value Storage. Defaults to `current_printout`

## `storage_name` (type: `string`):

Store documents to a specified storage name. It is recommended to use a unique name for longer storage retention. If not provided, your documents will be available for 7 days.

## Actor input object example

```json
{
  "identifier": "DE-HRB-R3306-66773",
  "keyword": "REWE Markt GmbH",
  "register_type": "HRB",
  "register_number": "66773",
  "register_court": "köln",
  "deep_search": true,
  "include_representatives": true,
  "include_address": true,
  "include_documents": false,
  "document_types": [
    "current_printout"
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "identifier": "DE-HRB-R3306-66773",
    "keyword": "REWE Markt GmbH",
    "register_number": "66773",
    "register_court": "köln",
    "document_types": [
        "current_printout"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("radeance/handelsregister-api").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "identifier": "DE-HRB-R3306-66773",
    "keyword": "REWE Markt GmbH",
    "register_number": "66773",
    "register_court": "köln",
    "document_types": ["current_printout"],
}

# Run the Actor and wait for it to finish
run = client.actor("radeance/handelsregister-api").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "identifier": "DE-HRB-R3306-66773",
  "keyword": "REWE Markt GmbH",
  "register_number": "66773",
  "register_court": "köln",
  "document_types": [
    "current_printout"
  ]
}' |
apify call radeance/handelsregister-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,radeance/handelsregister-api"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/CZBHNvjaWtrEw9O9R/builds/bE2q8XHiqmX0ZgaSh/openapi.json
