# German & DACH B2B Impressum, Contact & Legal Enricher (§ 5 DDG) (`agrunert/german-impressum-b2b-lead-enricher`) Actor

High-speed DACH & German Impressum Scraper (§ 5 DDG). Enrich B2B domains with CEOs (Geschäftsführer), de-obfuscated emails, phone numbers, HRB court & VAT ID (USt-IdNr.).

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

## Pricing

$5.00 / 1,000 company domain enricheds

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 & DACH B2B Impressum, Contact & Legal Enricher (§ 5 DDG)

[![Apify Actor](https://img.shields.io/badge/Apify-Actor-orange?logo=apify)](https://apify.com)
[![Pricing](https://img.shields.io/badge/Pricing-$0.005%20per%20domain-green)](https://apify.com)
[![DACH Region](https://img.shields.io/badge/Region-Germany%20•%20Austria%20•%20Switzerland-blue)](https://apify.com)
[![Fast Engine](https://img.shields.io/badge/Engine-Zero--Playwright%20Fast%20HTTP-blue)](https://apify.com)

The ultimate B2B lead generation, executive discovery, and corporate compliance enricher for **Germany, Austria, and Switzerland (DACH)**.

Feed a single domain or a bulk list of company websites, and automatically discover official statutory imprint pages (**§ 5 DDG / § 5 TMG in Germany, § 25 MedienG in Austria, Art. 3 UWG in Switzerland**). Extract verified **C-level executives & managing directors (*Geschäftsführer / Vorstand*)**, **direct corporate emails (with advanced de-obfuscation)**, **official commercial register filings (*Amtsgericht & HRB/HRA*)**, **VAT identification numbers (*USt-IdNr*)**, **postal addresses**, and **social media profiles**.

***

### 🎥 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?

In the DACH region, every commercial website is strictly required by federal law to publish an official imprint (*Impressum*) containing authoritative corporate governance data. However, scraping this data at scale is notoriously difficult:

- **Navigation Inconsistencies:** Imprint links are labeled in German (*Impressum, Anbieterkennzeichnung, Rechtliches, Pflichtangaben, Kontakt & Rechtliches*) or buried in nested footers.
- **Aggressive E-Mail Obfuscation:** To prevent spam, European businesses disguise email addresses using patterns like `info(at)firma.de`, `contact [at] company [dot] com`, `&#64;`, or dynamic inline JS.
- **SPA & Script Clutter:** Naive DOM parsers choke on Next.js/Nuxt image assets (`image@2x.png`), GTM scripts, or misidentify supervisory boards (*Aufsichtsrat*) as executive directors.
- **Register & Formatting Nuances:** Amtsgericht names and HRB numbers appear in bidirectional orders (*"Amtsgericht Köln, HRB 104617"* vs. *"HRB 48720, Local Court Mainz"*), while VAT IDs contain random grouping spaces (*"DE 81 36 17 001"*).

**This Actor solves it completely:**

- ⚡ **Zero-Playwright High-Speed Engine:** Powered by asynchronous `httpx` and `lxml`. Starts in milliseconds and crawls up to 20 domains concurrently without browser overhead.
- 💰 **Transparent Pay-Per-Event (PPE) Pricing:** Pay only **$0.005 USD per successfully enriched domain** ($5.00 per 1,000 domains). Unreachable sites, DNS errors, or empty results are **never charged**.
- 🛡️ **Advanced Email De-Obfuscation:** Decodes entity-escaped and obfuscated emails while filtering image paths (`@2x.png`), CSS/JS artifacts, and Sentry/Wix trackers.
- 🏛️ **100% Commercial Register KYB Compatibility:** Seamlessly outputs standardized `register_court`, `register_type`, and `register_number` ready for automated handoff to our **German Company KYB Actor #2**!
- 🤖 **Make.com, Zapier & n8n Ready:** Built-in single-URL parameter (`url`) alongside batch lists (`domains`) makes it a drop-in enrichment tool for your CRM and webhook workflows.

***

### 📋 Extracted Data Points

For every target website, this Actor extracts and standardizes:

| Field | Type | Description & Example |
| :--- | :--- | :--- |
| `domain` | `String` | Normalized root domain (e.g. `biontech.de`, `personio.de`) |
| `legal_company_name` | `String` | Official registered legal entity (e.g. `BioNTech SE`, `Personio SE & Co. KG`) |
| `legal_form` | `String` | Corporate structure (`GmbH`, `AG`, `SE`, `UG (haftungsbeschränkt)`, `GmbH & Co. KG`, etc.) |
| `representatives` | `Array<String>` | Authorized executives / managing directors (*Geschäftsführer*, *Vorstand*, *Inhaber*) |
| `emails` | `Array<String>` | De-obfuscated verified corporate contact emails |
| `phones` | `Array<String>` | Official telephone numbers (international & local formatting) |
| `street` | `String` | Registered headquarters street address & number |
| `postal_code` | `String` | 5-digit German or 4-digit Austrian/Swiss postal code (*PLZ*) |
| `city` | `String` | City of registered headquarters |
| `country` | `String` | Country of incorporation (*Deutschland*, *Österreich*, *Schweiz*) |
| `register_court` | `String` | Commercial register court (e.g. `Amtsgericht München`, `Amtsgericht Hamburg`) |
| `register_type` | `String` | Register category (`HRB`, `HRA`, `GnR`, `PR`, `VR`, `FN`) |
| `register_number` | `String` | Register file number (e.g. `HRB 188101`, `FN 501412 x`) |
| `vat_id` | `String` | Normalized VAT ID (e.g. `DE123456789`, `ATU12345678`, `CHE-123.456.789`) |
| `tax_number` | `String` | National tax reference number (*Steuernummer*) |
| `social_links` | `Object` | Corporate profiles (`linkedin`, `xing`, `twitter`, `facebook`, `instagram`, `github`) |
| `impressum_url` | `String` | Direct canonical URL of the discovered legal notice page |
| `status` | `String` | `SUCCESS`, `NO_IMPRESSUM`, `UNREACHABLE`, or `BLOCKED` |

***

### ⚙️ Input Parameters

| Parameter | Type | Default | Description |
| :--- | :--- | :--- | :--- |
| `domains` | `Array<String>` | `["biontech.de", "deepl.com", "personio.de"]` | List of corporate domains or full URLs to enrich in bulk. |
| `url` | `String` | `null` | Single domain or URL. Ideal for single-item webhook runs in Make, Zapier, or n8n. |
| `extract_contact_page` | `Boolean` | `true` | If true, checks dedicated contact pages (`/kontakt`, `/contact`) if email or phone is missing from the Impressum. |
| `max_concurrency` | `Integer` | `5` | Number of concurrent domain lookups (1 to 20). |
| `proxyConfiguration` | `Object` | `null` | Optional Apify proxy settings (Residential or Datacenter) to bypass strict corporate firewalls. |

***

### 📦 Sample Extracted Record

```json
{
  "domain": "personio.de",
  "input_url": "https://personio.de",
  "status": "SUCCESS",
  "impressum_found": true,
  "impressum_url": "https://www.personio.de/impressum/",
  "legal_company_name": "Personio SE & Co. KG",
  "legal_form": "SE & Co. KG",
  "representatives": [
    "Hanno Renner"
  ],
  "emails": [
    "info@personio.com"
  ],
  "phones": [
    "+49 (0) 89 262 000 017"
  ],
  "street": "Seidlstraße 3",
  "postal_code": "80335",
  "city": "München",
  "country": "Deutschland",
  "register_court": "Amtsgericht München",
  "register_type": "HRA",
  "register_number": "HRA 115934",
  "vat_id": "DE351718597",
  "tax_number": null,
  "social_links": {
    "linkedin": "https://www.linkedin.com/company/personio",
    "xing": null,
    "twitter": null,
    "facebook": "https://www.facebook.com/personio",
    "instagram": "https://www.instagram.com/personio",
    "github": null,
    "youtube": "https://www.youtube.com/c/PersonioHR"
  },
  "scraped_at": "2026-10-28T11:30:00.000Z"
}
```

***

### 🔒 Strict Pay-Per-Event (PPE) Guarantee

- Charged strictly at **$0.005 USD per successfully enriched domain** (`event_name: "domain-enriched"`).
- If a domain is unreachable (`DNS_ERROR`, `UNREACHABLE`), blocked by a WAF (`BLOCKED`), or yields no impressum and zero corporate data, **no charge is ever applied ($0.00)**.
- Empty inputs trigger an immediate zero-cost error exit.

***

### 🤖 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-impressum": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server", "--actors", "AGrunert/german-impressum-b2b-lead-enricher"],
      "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-impressum-b2b-lead-enricher&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-impressum-b2b-lead-enricher/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"domains":["personio.de","biontech.de","celonis.com"],"extract_contact_page":true,"max_concurrency":2}'
```

***

#### 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 with automatic 2-step chaining from Impressum legal notice extraction directly into our German KYB & Insolvency Scraper. 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) *(Current Actor)* | **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) | **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).

***

#### 💡 Multi-Actor Synergy: Direct Impressum-to-KYB Pipeline

```mermaid
flowchart LR
    A["Raw Domain List<br>(e.g. biontech.de)"] --> B["Actor #5: German Impressum Enricher<br>Extract HRB 48720 & Mainz"]
    B --> C["Actor #2: German KYB Scraper<br>Query Handelsregister (XJustiz) & Insolvenzen"]
    C --> D["Full KYB Due Diligence Report:<br>Share Capital, Owners & Solvency"]
```

1. **Step 1:** Pass your domain list to **German Impressum Enricher**. The Actor returns `register_court: "Amtsgericht Mainz"`, `register_number: "HRB 48720"`, and `legal_company_name: "BioNTech SE"`.
2. **Step 2:** Pipe `register_number` and `register_court` directly into **German Company KYB Actor #2** to pull official XJustiz shareholder capital, corporate purpose, historical managing directors, and live insolvency records!
3. **Step 3:** Generate tax-compliant B2B invoices using verified VAT IDs via our **German E-Invoice Suite**.

# Actor input Schema

## `domains` (type: `array`):

List of company domain names (e.g., 'biontech.de', 'personio.de', 'heckler-koch.com') or full website URLs to enrich.

## `url` (type: `string`):

Single target domain or website URL. Ideal for single-item webhook workflows in Make, Zapier, or n8n.

## `extract_contact_page` (type: `boolean`):

When enabled, checks dedicated contact pages (/kontakt, /contact) if direct email addresses or phone numbers are missing from the Impressum.

## `max_concurrency` (type: `integer`):

Number of concurrent domain lookups. Keep between 3 and 10 for optimal performance.

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

Optional proxy settings. Use Apify Proxy (Residential or Datacenter) if targeting domains behind strict WAFs.

## Actor input object example

```json
{
  "domains": [
    "biontech.de",
    "celonis.com",
    "deepl.com"
  ],
  "extract_contact_page": true,
  "max_concurrency": 5
}
```

# 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 = {
    "domains": [
        "biontech.de",
        "celonis.com",
        "deepl.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("agrunert/german-impressum-b2b-lead-enricher").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 = { "domains": [
        "biontech.de",
        "celonis.com",
        "deepl.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("agrunert/german-impressum-b2b-lead-enricher").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 '{
  "domains": [
    "biontech.de",
    "celonis.com",
    "deepl.com"
  ]
}' |
apify call agrunert/german-impressum-b2b-lead-enricher --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,agrunert/german-impressum-b2b-lead-enricher"
        }
    }
}
```

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/c87bdKYPneWMkYbjR/builds/g2mAP58sK5zZDDwXG/openapi.json
