# German Company KYB, Handelsregister & Insolvency Scraper (`agrunert/german-company-kyb-insolvency-scraper`) Actor

Official German Handelsregister (XJustiz 3.5.1) & Insolvency API Scraper. Extract managing directors (Geschäftsführer), share capital, HRB & live insolvency status.

- **URL**: https://apify.com/agrunert/german-company-kyb-insolvency-scraper.md
- **Developed by:** [André Grunert](https://apify.com/agrunert) (community)
- **Categories:** Business, Lead generation, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$25.00 / 1,000 company checkeds

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

## 🏛️ German Company KYB, Handelsregister & Insolvency Deep-Scraper

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-blue?logo=apify)](https://apify.com)
[![Pay-Per-Event](https://img.shields.io/badge/Pricing-Pay--Per--Event-green)](#pricing)
[![Python 3.12](https://img.shields.io/badge/Python-3.12-yellow?logo=python)](https://python.org)
[![XJustiz 3.5](https://img.shields.io/badge/Standards-XJustiz%203.5%20XML-purple)](https://www.xjustiz.de)

An automated, ultra-fast **B2B KYB (Know Your Business) & Compliance Scraper** for the German market. Supports both **single-company deep verification** and **high-volume bulk batch processing**.

In a single autonomous run, this Actor queries:

1. **The Official German Commercial Register ([handelsregister.de](https://www.handelsregister.de))**: Extracts company legal form, registration number (HRB / HRA / GnR / PR / VR), competent district court (*Amtsgericht*), status (*aktuell* / *gelöscht*), registered business address, subscribed share capital (*Stammkapital* / *Grundkapital*), business purpose (*Unternehmensgegenstand*), and the **current Managing Directors (*Geschäftsführer*), Board Members (*Vorstand*), and Signatories (*Prokuristen*)** directly from structured register XML (*SI - Strukturierter Registerinhalt*).
2. **The Official German Insolvency Registry ([insolvenzbekanntmachungen.de](https://neu.insolvenzbekanntmachungen.de))**: Checks whether any active or historical bankruptcy/insolvency proceedings exist for the company or debtor, retrieving court file numbers (*Aktenzeichen*) and court decree texts.
3. **Automated Risk Assessment**: Computes an instant risk signal (`CLEAR`, `WARNING_INSOLVENCY_FOUND`, or `NOT_FOUND_IN_REGISTER`).

***

### 🎥 48-Second Live Video Showcase (1080p HD)

[![Watch German B2B Data Suite Live Video Showcase](https://raw.githubusercontent.com/andregrunert-ctrl/german-b2b-data-suite/main/docs/b2b_showcase_banner.png)](https://youtu.be/ERydgz1hGk8)

*Part of the official German B2B Data Suite: Automate B2B lead generation, GDPR-compliant impressum enrichment (§ 5 DDG), real-time Handelsregister (XJustiz) & insolvency KYB audits, ZVG foreclosures, and public tenders via Apify, n8n, Make.com, or AI Agents (MCP).*

***

### ⚡ Why Use This Actor?

- **Zero-Browser Sub-Second Execution:** Built with an advanced async JSF & Jakarta Faces protocol engine (`httpx` + `lxml`). No heavy Chromium/Playwright container overhead—starts in **< 1 second** and consumes minimal RAM.
- **Bulk / Batch Processing:** Verify 10s or 100s of German companies in a single run with built-in rate-limiting protection (`request_delay_seconds`).
- **Deep Officer & Signatory Intelligence:** Retrieves not just names, but full names, birth dates, residential locations, exact corporate roles (*Geschäftsführer*, *Vorstand*, *Prokurist*), and specific representation authorities (*Einzelvertretung*, *Gesamtprokura*).
- **Official XJustiz 3.5.1 XML Extraction:** Automatically requests and decodes the structured register content (*Strukturierter Registerinhalt - SI*) provided by German judicial authorities.
- **Built-in Insolvency Screening:** Cross-references insolvency publications in real time to catch financially distressed or bankrupt counterparties early.
- **Fair Pay-Per-Event Pricing:** You only pay when a company check successfully delivers data ($0.025 per verified company). Failed searches or invalid inputs are never billed.

***

### 📥 Input Parameters

| Parameter | Type | Required | Default | Description |
| :--- | :--- | :--- | :--- | :--- |
| `company_name` | `String` | No\* | `"BioNTech SE"` | Legal or trade name of a single German entity (*provide either `company_name` or `companies`). |
| `companies` | `Array` | No* | `null` | **Batch list of German companies** to check in bulk (supports strings, pipe-separated values, or JSON objects). |
| `city` | `String` | No | `null` | Corporate seat / city to filter results (e.g. `"Mainz"`, `"München"`). |
| `register_number` | `String` | No | `null` | Commercial registration number (e.g. `"HRB 48720"` or `"48720"`). |
| `register_type` | `String` | No | `"ALL"` | Register type: `"ALL"`, `"HRB"`, `"HRA"`, `"GnR"`, `"PR"`, `"VR"`. |
| `include_insolvency_check` | `Boolean` | No | `true` | Queries `insolvenzbekanntmachungen.de` for debtor notices. |
| `include_financial_details` | `Boolean` | No | `true` | Downloads and parses official XJustiz SI/UT data for capital and officers. |
| `request_delay_seconds` | `Integer` | No | `1` | Polite delay between sequential company checks in seconds (0 to 10). |
| `proxyConfiguration` | `Object` | No | `null` | Apify proxy settings (recommended for large batch runs). |

***

#### Single Company Check Example

```json
{
  "company_name": "BioNTech SE",
  "city": "Mainz",
  "include_insolvency_check": true,
  "include_financial_details": true
}
```

***

#### Bulk / Batch Processing (Verify 100s of Companies per Run)

You can pass a list of companies to verify in batch using the `companies` parameter:

##### 1. Pipe-separated syntax (Name | City | Optional Register Number):

```json
{
  "companies": [
    "BioNTech SE | Mainz | HRB 48720",
    "Siemens AG | München",
    "SAP SE | Walldorf"
  ],
  "include_financial_details": true,
  "include_insolvency_check": true,
  "request_delay_seconds": 1
}
```

##### 2. Structured JSON Object syntax:

```json
{
  "companies": [
    { "company_name": "BioNTech SE", "city": "Mainz" },
    { "company_name": "Siemens AG", "city": "München" }
  ],
  "include_financial_details": true,
  "include_insolvency_check": true
}
```

***

### 📤 Output Format

The Actor pushes structured verification records to the **Apify Dataset** and persists raw XJustiz XML and the overall summary in the **Key-Value Store**:

```json
{
  "company_name": "BioNTech SE",
  "kyb_risk_status": "CLEAR",
  "register_court": "Amtsgericht Mainz",
  "register_type": "HRB",
  "register_number": "48720",
  "legal_form": "Europäische Aktiengesellschaft (SE)",
  "status": "aktuell",
  "seat": "Mainz",
  "address": "An der Goldgrube 12, 55131 Mainz",
  "share_capital": 259027487.0,
  "currency": "EUR",
  "business_purpose": "Die Erforschung und Entwicklung, die Herstellung und die Vermarktung von immunologischen und von RNA-basierten Arzneimitteln...",
  "officers_count": 11,
  "officers": [
    {
      "first_name": "Ugur",
      "last_name": "Sahin",
      "full_name": "Ugur Sahin",
      "role": "Vorstand",
      "city": "Mainz",
      "birth_date": "1965-09-19",
      "representation_authority": "Ist nur ein Vorstandsmitglied bestellt, so vertritt dieses alleine die Gesellschaft..."
    },
    {
      "first_name": "Özlem",
      "last_name": "Türeci",
      "full_name": "Özlem Türeci",
      "role": "Vorstand",
      "city": "Mainz",
      "birth_date": "1967-03-06",
      "representation_authority": "Ist nur ein Vorstandsmitglied bestellt, so vertritt dieses alleine die Gesellschaft..."
    }
  ],
  "has_insolvency_record": false,
  "insolvency_cases_count": 0,
  "scraped_at": "2026-10-27T12:30:00Z"
}
```

***

### 🔄 Integrations & Workflows

#### 1. Make.com / n8n Automation

Trigger this Actor during new customer onboarding (CRM, ERP, Stripe, or billing system) to verify VAT eligibility, signatory powers, and bankruptcy risk before signing contracts.

#### 2. AI Agents & Model Context Protocol (MCP)

Equip your autonomous agents with official German legal entity grounding:

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("agrunert/german-company-kyb-insolvency-scraper").call(run_input={
    "companies": [
        "BioNTech SE | Mainz",
        "Siemens AG | München"
    ]
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(f"Company: {item['company_name']}, Risk: {item['kyb_risk_status']}, Capital: {item.get('share_capital')}")
```

***

### 🤖 Plug-and-Play: AI Agents (MCP), n8n & Make.com

Our actors are built natively for the next generation of automation: seamless integration into **Claude Desktop**, **Cursor AI**, **AI Agent Frameworks (LangChain, AutoGen, CrewAI)**, and visual workflow builders like **n8n** and **Make.com**.

#### 1. AI Agents & Model Context Protocol (MCP)

Give your AI coding assistant or desktop agent real-time access to this actor using the official Apify MCP server.

##### Option A: Single-Actor MCP Setup (`claude_desktop_config.json` / Cursor)

Add this to your `%APPDATA%\Claude\claude_desktop_config.json` (Windows) or `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):

```json
{
  "mcpServers": {
    "apify-kyb": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server", "--actors", "AGrunert/german-company-kyb-insolvency-scraper"],
      "env": {
        "APIFY_TOKEN": "YOUR_APIFY_TOKEN"
      }
    }
  }
}
```

> **💡 Pro Tip – Equip your AI Agent with our Complete German B2B & Compliance Suite:**\
> Pass all 6 specialized DACH actors in a single command so your agent can discover B2B leads, extract Impressum data, verify commercial register & insolvency records, search tenders, monitor real estate foreclosures, and issue tax-compliant e-invoices autonomously:
>
> ```bash
> npx -y @apify/actors-mcp-server --actors AGrunert/german-b2b-leads-directory-scraper,AGrunert/german-impressum-b2b-lead-enricher,AGrunert/german-company-kyb-insolvency-scraper,AGrunert/german-public-tenders-vergabe-scraper,AGrunert/german-real-estate-foreclosure-zvg-scraper,AGrunert/german-e-invoice-zugferd-xrechnung-suite
> ```
>
> *Hosted SSE Endpoint (for Cursor / remote agents):*\
> `https://mcp.apify.com?actors=AGrunert/german-company-kyb-insolvency-scraper&token=YOUR_APIFY_TOKEN`

***

#### 2. 1-Click Synchronous API (cURL, n8n, Make.com)

No async job polling required! Call our synchronous endpoint directly in a single HTTP request node to run the actor and receive clean parsed dataset items immediately:

```bash
curl -X POST "https://api.apify.com/v2/acts/AGrunert~german-company-kyb-insolvency-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"company_name":"BioNTech SE","city":"Mainz","register_number":"HRB 48720","include_insolvency_check":true,"include_financial_details":true}'
```

***

#### 3. Schlüsselfertige Workflow-Vorlagen im Repository (`integrations/`)

In our GitHub repository and Actor build package, you will find pre-built, production-tested templates in the `integrations/` folder:

- **`integrations/n8n_workflow.json`**: Ready-to-import n8n workflow for automated commercial register verification, managing director extraction, and instant insolvency screening. Just copy-paste the JSON into your n8n canvas.
- **`integrations/make_com_blueprint.json`**: Official Make.com scenario blueprint with pre-configured HTTP request & data mapping.
- **`integrations/mcp_claude_cursor_config.json`**: Pre-configured MCP server manifest for Claude Desktop, Cursor AI, and Windsurf.

***

### 🔗 Complete German B2B, Compliance & PropTech Suite by AGrunert

Combine our specialized German business actors to build end-to-end automated pipelines for B2B lead generation, corporate due diligence, public procurement, real estate intelligence, and tax-compliant e-invoicing:

| Actor | Category & Pricing | Key Capabilities | Preconfigured Public Tasks |
| :--- | :--- | :--- | :--- |
| [**German B2B Leads, Crafts & Business Directory Scraper**](https://apify.com/AGrunert/german-b2b-leads-directory-scraper) | **Lead Generation**<br>`$0.008 / lead` ($8.00 / 1k) | Multi-query round-robin extraction across German business directories (`11880`, `Gelbe Seiten`), verified E.164 phone numbers (97.5% coverage), and domain verification (`require_website: true`). | • [German Crafts, Solar & Construction Lead Finder](https://apify.com/AGrunert/german-crafts-trades-lead-finder)<br>• [German B2B Company & Domain Finder](https://apify.com/AGrunert/german-b2b-domains-for-impressum-enrichment) |
| [**German & DACH B2B Impressum, Contact & Legal Enricher (§ 5 DDG)**](https://apify.com/AGrunert/german-impressum-b2b-lead-enricher) | **Data Enrichment**<br>`$0.005 / domain` ($5.00 / 1k) | Automatic legal notice discovery (§ 5 DDG / § 25 MedienG), de-obfuscation of executive emails, management board/CEOs, court & registration number (`HRB`), VAT ID (`DE...`), and social profiles. | • [German B2B Impressum, CEO & Contact Extractor](https://apify.com/AGrunert/german-b2b-impressum-contact-extractor)<br>• [DACH Website to Handelsregister & VAT ID Enricher](https://apify.com/AGrunert/impressum-to-handelsregister-kyb-enricher) |
| [**German Company KYB, Handelsregister & Insolvency Scraper**](https://apify.com/AGrunert/german-company-kyb-insolvency-scraper) *(Current Actor)* | **Risk & Compliance**<br>`$0.025 / check` ($25.00 / 1k) | Official XJustiz 3.5.1 extraction (directors, share capital, business purpose, court) + live insolvency check (`insolvenzbekanntmachungen.de`) with bulk company list support. | • [Complete German KYB Audit](https://apify.com/AGrunert/full-kyb-audit)<br>• [Fast German Insolvency Screener](https://apify.com/AGrunert/fast-insolvency-screener)<br>• [Bulk German Company KYB Batch Check](https://apify.com/AGrunert/bulk-kyb-batch-check) |
| [**German Public Tenders & Procurement Scraper (`service.bund.de`)**](https://apify.com/AGrunert/german-public-tenders-vergabe-scraper) | **B2B Tenders & Contracts**<br>`$0.010 / tender` ($10.00 / 1k) | Daily procurement monitoring across Bund, Länder & Kommunen; zero false positives (filters AI Bietercockpit boilerplates); direct `/unterlagen/` download URLs and submission deadlines (date + time). | • [German IT, Software & AI Public Tenders Monitor](https://apify.com/AGrunert/german-it-software-public-tenders)<br>• [German Construction & Facility Management Tenders](https://apify.com/AGrunert/german-construction-facility-tenders) |
| [**German Real Estate Foreclosure & ZVG-Portal Scraper**](https://apify.com/AGrunert/german-real-estate-foreclosure-zvg-scraper) | **PropTech & Real Estate**<br>`$0.010 / property` ($10.00 / 1k) | Bulk extraction of foreclosure auctions (`zvg-portal.de`) across all 16 states, multi-parcel market value parser (`float`), and direct PDF appraisal links (*Verkehrswertgutachten*). | • [German Foreclosure Real Estate Finder](https://apify.com/AGrunert/german-foreclosures-sample-search)<br>• [High-Value German Foreclosures (> 250k EUR)](https://apify.com/AGrunert/high-value-commercial-residential-foreclosures) |
| [**German E-Invoice (ZUGFeRD / Factur-X / XRechnung 3.0) Suite**](https://apify.com/AGrunert/german-e-invoice-zugferd-xrechnung-suite) | **Finance & Invoicing**<br>`$0.035 / invoice` ($35.00 / 1k) | Generate DIN-5008 compliant PDF/A-3 invoices from JSON, embed CII XML, and validate with official KoSIT Schematron & EN 16931 rules. | *Standalone API & Batch Suite* |

#### 💡 Multi-Actor Chain Workflows & Synergy Pipelines

- **Pipeline 1 (Top-of-Funnel Lead-to-Audit Engine):**\
  Discover companies & crafts via [**German B2B Directory Scraper**](https://apify.com/AGrunert/german-b2b-leads-directory-scraper) $\rightarrow$ Enrich managing directors, direct emails, and HRB numbers via [**German Impressum Enricher**](https://apify.com/AGrunert/german-impressum-b2b-lead-enricher) $\rightarrow$ Verify solvency, officers, and share capital via [**German KYB Scraper**](https://apify.com/AGrunert/german-company-kyb-insolvency-scraper).
- **Pipeline 2 (Public Tender Win to Compliant Billing):**\
  Monitor federal procurement opportunities via [**German Public Tenders Scraper**](https://apify.com/AGrunert/german-public-tenders-vergabe-scraper) $\rightarrow$ Win bid $\rightarrow$ Bill public authorities with compliant EN 16931 XRechnung 3.0 via [**German E-Invoice Suite**](https://apify.com/AGrunert/german-e-invoice-zugferd-xrechnung-suite).
- **Pipeline 3 (Real Estate Foreclosure Due Diligence):**\
  Scrape upcoming foreclosures via [**German Real Estate Foreclosure Scraper**](https://apify.com/AGrunert/german-real-estate-foreclosure-zvg-scraper) $\rightarrow$ Check creditor/owner companies via [**German KYB Scraper**](https://apify.com/AGrunert/german-company-kyb-insolvency-scraper).

***

### ⚖️ Compliance & Data Quality

- Data is sourced live and directly from official federal and state portals of the Federal Republic of Germany.
- Adheres to the German Handelsregister API conventions and rate-limiting recommendations.

# Actor input Schema

## `company_name` (type: `string`):

Full or partial legal name of a single German company (e.g. 'BioNTech SE', 'Siemens AG'). Leave empty if using 'companies' bulk list.

## `companies` (type: `array`):

Optional list of German companies to check in bulk. Each item can be a company name (e.g. 'SAP SE'), a pipe-separated string ('BioNTech SE | Mainz | HRB 48720'), or a JSON object with company_name, city, and register_number.

## `city` (type: `string`):

City where the company is headquartered to narrow down search results (e.g. 'Mainz', 'München').

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

Commercial register number with or without prefix (e.g. 'HRB 48720' or '48720').

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

Type of register (HRB for GmbH/AG/SE, HRA for OHG/KG/e.K., GnR for Genossenschaften, PR for Partnerschaften, VR for Vereine).

## `include_insolvency_check` (type: `boolean`):

Query official insolvenzbekanntmachungen.de to check if active or past insolvency proceedings exist for this debtor.

## `include_financial_details` (type: `boolean`):

Download and parse official structured register data (SI / XJustiz XML) for share capital, business purpose, and officers/board members.

## `request_delay_seconds` (type: `integer`):

Polite delay between sequential company checks to respect portal rate limits.

## `proxyConfiguration` (type: `object`):

Select proxies to be used by the Actor. Official German portals benefit from residential or German datacenter proxies during high-volume scraping.

## Actor input object example

```json
{
  "company_name": "BioNTech SE",
  "register_type": "ALL",
  "include_insolvency_check": true,
  "include_financial_details": true,
  "request_delay_seconds": 1
}
```

# Actor output Schema

## `datasetResults` (type: `string`):

No description

## `keyValueStore` (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 = {
    "company_name": "BioNTech SE"
};

// Run the Actor and wait for it to finish
const run = await client.actor("agrunert/german-company-kyb-insolvency-scraper").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 = { "company_name": "BioNTech SE" }

# Run the Actor and wait for it to finish
run = client.actor("agrunert/german-company-kyb-insolvency-scraper").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 '{
  "company_name": "BioNTech SE"
}' |
apify call agrunert/german-company-kyb-insolvency-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,agrunert/german-company-kyb-insolvency-scraper"
        }
    }
}
```

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/dWn8herWyfW3YCX6F/builds/Kdcdkxn55s4qllulj/openapi.json
