# German Company Register Search (Handelsregister) (`echocall/german-company-register-search`) Actor

Search the official German company register (Handelsregister) by name. Get HRB/HRA register numbers, court, legal form, seat & status. For KYC, due diligence & lead enrichment.

- **URL**: https://apify.com/echocall/german-company-register-search.md
- **Developed by:** [Kristian Gasic](https://apify.com/echocall) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 company founds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## German Company Register Search (Handelsregister)

**Search Germany's official company register and get structured, verified company records: register number (HRB/HRA), responsible court, legal form, registered seat, and status. Built for KYC, due diligence, lead enrichment, and B2B data pipelines.**

This Actor queries the official German register portal - the authoritative legal source for every registered company in Germany (per Section 9 HGB, this data is public by law).

***

### What you get per company

| Field | Example | Description |
|---|---|---|
| `companyName` | "Mustermann Bau GmbH" | Official registered name |
| `registerId` | "HRB 174601" | Register type + number |
| `court` | "Amtsgericht München" | Responsible register court |
| `state` | "Bayern" | Federal state |
| `seat` | "München" | Registered seat (city) |
| `status` | "active" / "deleted" | Current register status |
| `legalFormHint` | "GmbH" | Detected legal form (GmbH, AG, UG, KG, e.V., eG, ...) |
| `searchTerm` | "Mustermann Bau" | Which of your searches produced this record |

***

### Use cases

**KYC & compliance** - verify that a company legally exists, is still active, and find its official register number for contracts and invoices.

**Lead enrichment** - you have company names from LinkedIn, trade fairs, or web scraping? Enrich them with official register data and filter out shell entries or deleted companies.

**Due diligence** - check counterparties before signing. Include deleted companies to see a name's full history.

**Sales prospecting** - search by keyword (e.g. "Solar", "Logistik", "Software") and discover registered companies in your target industry, complete with location and legal form.

**Data pipelines** - batch up to 50 searches per run, export as Excel, CSV, or JSON, or push directly into your CRM via API, Make, Zapier, or n8n.

***

### How to use

1. Enter one or more **search terms** - full company names, partial names, or keywords
2. Pick a **match mode**: contain all keywords (broad) or exact company name (precise)
3. Optionally include **deleted companies** for history checks
4. Run - results appear as a clean table, ready for export

#### Example input

```json
{
  "searchTerms": ["Volkswagen Aktiengesellschaft", "Mustermann Bau"],
  "keywordOption": "all",
  "resultsPerSearch": 25,
  "includeDeleted": false
}
```

***

### Why the built-in rate limiting?

The official portal enforces strict request limits. This Actor handles that for you: searches run sequentially with a configurable delay (default 6 seconds) and automatic backoff on temporary blocks. That makes runs slightly slower - but reliable. For large batches, schedule multiple runs.

***

### FAQ

**Is this legal?** Yes. German company register data is public by law (Section 9 HGB - "Die Einsichtnahme in das Handelsregister ... ist jedem zu Informationszwecken gestattet"). Since 2022 the portal is free to use without registration. This Actor only reads the public search results any visitor sees.

**Which registers are covered?** All German register types that appear in the portal search: HRB (companies), HRA (partnerships), VR (associations), GnR (cooperatives), PR (partnerships), GsR.

**Does it return financial statements or documents?** No - this Actor focuses on fast, structured register records. Document retrieval (AD/CD printouts) may come as a separate feature; request it via an issue if you need it.

**How fresh is the data?** Live - every run queries the official register at that moment.

**Can I search all of Germany at once?** Yes, searches cover all 16 federal states and all register courts by default.

***

### Pricing

Pay-per-event: a small fee per company record found. No results = no result fees. No subscription, no minimum.

***

### Support

Missing a field or need a feature (register court filter, legal form filter, document retrieval)? Open an issue on this page - actively maintained.

# Actor input Schema

## `searchTerms` (type: `array`):

One search per entry. Use full or partial company names, e.g. 'Siemens', 'Mustermann Bau GmbH'. Up to 50 searches per run.

## `keywordOption` (type: `string`):

'All keywords' finds companies containing every word. 'Exact company name' matches the precise name.

## `resultsPerSearch` (type: `integer`):

Maximum companies returned per search term (10-100).

## `includeDeleted` (type: `boolean`):

Also return companies that have been removed from the register (useful for due diligence and history checks).

## `delayBetweenSearchesSecs` (type: `integer`):

The official portal enforces strict rate limits. Lowering this below 6 seconds increases the risk of temporary blocks.

## Actor input object example

```json
{
  "searchTerms": [
    "Volkswagen Aktiengesellschaft",
    "Siemens Aktiengesellschaft"
  ],
  "keywordOption": "all",
  "resultsPerSearch": 25,
  "includeDeleted": false,
  "delayBetweenSearchesSecs": 6
}
```

# 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 = {
    "searchTerms": [
        "Volkswagen Aktiengesellschaft",
        "Siemens Aktiengesellschaft"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("echocall/german-company-register-search").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 = { "searchTerms": [
        "Volkswagen Aktiengesellschaft",
        "Siemens Aktiengesellschaft",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("echocall/german-company-register-search").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 '{
  "searchTerms": [
    "Volkswagen Aktiengesellschaft",
    "Siemens Aktiengesellschaft"
  ]
}' |
apify call echocall/german-company-register-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,echocall/german-company-register-search"
        }
    }
}

```

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/NpA3QtOf18zIySrVs/builds/cgR8lhVbgIhDTCGjf/openapi.json
