FlowKI Club
← Kategorie Kategorie B2B & Lead-Generation
industry19. April 20266 min Lesezeit

500 B2B-Leads in einer Woche generiert — legal, mit KI, ohne LinkedIn-Scraping

Ja, es geht. Nein, es ist kein LinkedIn-Bot. Öffentliche Register, Firmen-Webseiten, saubere Anreicherung — hier der Workflow mit echten Zahlen und den drei rechtlichen Linien die ich nie überschritten habe.

Quelle: Handelsregister des Bundes

Was dieser Artikel nicht ist

Es gibt online ungefähr 3000 Artikel und YouTube-Videos mit dem Titel "Lead-Gen mit KI." Die meisten enden in einem der folgenden Szenarien:

  • LinkedIn-Automatisierungs-Tools die nach zwei Wochen gebannt werden
  • E-Mail-Scraper die IP-Blacklists produzieren
  • "Tools" die im Hintergrund gegen DSGVO verstoßen und deine Kunden in die Haftung bringen

Das hier ist keins davon. Das hier ist der Workflow den ich für einen Kunden (B2B-SaaS für deutsche Mittelständler) im März 2026 aufgebaut und produktiv laufen habe. 500 qualifizierte Leads in einer Woche, rechtlich sauber, inklusive Anreicherungs-Daten die das Sales-Team tatsächlich nutzt.

Das Ziel — Scope präzise definieren

Der Kunde wollte: deutsche Mittelständler mit 20-200 Mitarbeitern im DACH-Raum, in bestimmten Branchen (Maschinenbau, Metallverarbeitung, spezialisierter Handel), mit E-Mail-Kontakt zur Geschäftsführung oder IT-Leitung.

Das ist kein "jede Firma." Das ist spezifisches Targeting. Und das ist der erste Schlüssel — je enger dein Filter, desto besser die Ergebnisse und desto weniger rechtliche Grauzone.

Die Datenquellen — alles öffentlich

Drei Haupt-Quellen, alle legal zugänglich, alle bewusst ohne LinkedIn:

1. Handelsregister des Bundes

Seit August 2022 ist der Abruf aus dem Handelsregister kostenlos (vorher 4,50 € pro Auszug). Das ist der Goldstandard für deutsche Firmendaten.

Was du bekommst: Firmennamen, Rechtsform, Sitz, Geschäftsführung, Handelsregisternummer, oft auch Geschäftszweck. Das ist extrem valide weil es aus amtlichen Quellen kommt.

Nicht drin: E-Mail-Adressen, Telefonnummern, Mitarbeiterzahlen.

2. Firmenwebseiten (die Firmen selbst)

Jede Firma hat eine Webseite, und jede Webseite hat ein Impressum. Im Impressum stehen alle Pflichtangaben nach TMG / DDG (Digitale-Dienste-Gesetz): Firmenname, Anschrift, Geschäftsführung, Handelsregister, E-Mail, Telefon.

Eine Firma die sich beschwert, dass du ihre Impressums-Daten liest, hat einen rechtlichen Problem-Fall — nicht du. Das Impressum ist explizit zum Kontaktiert-Werden da.

3. Anreicherungs-Quellen

Für Mitarbeiter-Zahlen und Branchen-Einordnung: öffentliche Statistikportale, Wikipedia bei größeren Firmen, offene XING-Firmenprofile (die publik sind, nicht Scraping hinter Login).

Was ich nicht genutzt habe: LinkedIn-Scraping, Hunter.io/Apollo.io, E-Mail-Permutations-Tools, Cold-Data-Dumps von dubiosen Anbietern.

Die Pipeline — Schritt für Schritt

Schritt 1 — Branchenliste generieren

Die WZ-2008-Codes (Wirtschaftszweig-Klassifikation des Statistischen Bundesamts) sind die offizielle Branchen-Taxonomie. Für "Maschinenbau" ist das z.B. 28.xx, "Metallverarbeitung" 25.xx.

Mit diesen Codes kann ich im Handelsregister gezielt filtern. Die Handelsregister-API gibt für einzelne Anfragen das direkt raus, aber für Batch-Operationen nutzt man den Common Register Portal der EU (BRIS / EBR).

Schritt 2 — Firmenliste aus Handelsregister

Python-Script das 1000 Firmen pro WZ-Kategorie zieht:

import requests
from bs4 import BeautifulSoup
import time

def fetch_firms_by_branche(wz_code, page=1):
    # Handelsregister-Portal hat APIs und HTML-Scraping-Endpoints
    # Hier vereinfacht, die echte Implementierung braucht Respekt vor Rate-Limits
    url = f"https://www.handelsregister.de/rp_web/search-advanced.xhtml"
    params = {"wz": wz_code, "page": page, "size": 100}
    response = requests.get(url, params=params, headers={"User-Agent": "Research-Bot 1.0"})
    # Parse HTML, extract firm details
    return parse_handelsregister_response(response.text)

# Rate-Limit respektieren: max 1 Request pro 2 Sekunden
for wz in ["28.21", "28.22", "25.11", "25.21"]:
    firms = []
    for page in range(1, 11):
        firms.extend(fetch_firms_by_branche(wz, page))
        time.sleep(2)

Rate-Limiting ist nicht optional. Respekt gegenüber öffentlichen Services — und Selbstschutz, weil Scraping mit zu viel Gas zu temporären IP-Sperren führt.

Ergebnis dieses Schritts: ~3000 Roh-Firmen mit Namen, Sitz, Geschäftsführung.

Schritt 3 — Webseiten-URL finden

Das Handelsregister gibt keine URLs. Also:

# Claude Haiku hilft hier: Firmenname + Sitz → wahrscheinliche URL
import requests

def find_firm_website(firm_name, city):
    # DuckDuckGo Search (hat öffentliche API)
    query = f'"{firm_name}" {city} impressum'
    r = requests.get(f"https://api.duckduckgo.com/?q={query}&format=json")
    # Erste drei Treffer nehmen, eigenes Filter-Script prüfen
    results = r.json()["RelatedTopics"][:3]
    return results

Claude Haiku kriegt die Liste der drei Treffer und entscheidet welche wahrscheinlich die Firmen-Webseite ist (statt z.B. ein Branchen-Verzeichnis-Eintrag). Das funktioniert in ~85 Prozent der Fälle beim ersten Anlauf.

Schritt 4 — Impressum parsen

Playwright rendert die Webseite (weil viele Seiten JavaScript-generiert sind), sucht das Impressum (meist unter /impressum, /imprint, /kontakt), extrahiert die Pflichtangaben.

from playwright.async_api import async_playwright

async def scrape_impressum(url):
    async with async_playwright() as p:
        browser = await p.chromium.launch()
        page = await browser.new_page()
        await page.goto(url + "/impressum", timeout=15000)
        content = await page.content()
        await browser.close()
        
        # Claude Haiku parst das HTML und extrahiert strukturiert
        return parse_with_claude(content)

Der Claude-Prompt für die Extraktion:

"Hier ist das HTML eines deutschen Firmen-Impressums. Extrahiere bitte als JSON:

  • firmenname_exakt (wie im Impressum geschrieben)
  • geschaeftsfuehrung (Liste von Namen)
  • email_generell
  • email_specific (z.B. info@, kontakt@, ceo@)
  • telefon
  • handelsregister_nummer Wenn eine Info nicht im Impressum steht, gib null zurück."

Schritt 5 — Anreicherung mit Mitarbeiterzahl und weiteren Daten

Für Firmen-Größe nutze ich eine Kombination: Wikipedia-Artikel bei größeren Namen, XING-Firmenprofil-Scraping (die öffentlichen Seiten), eigene Heuristiken über Webseiten-Merkmale (wer zeigt 20+ Team-Mitglieder hat wahrscheinlich 50+ Mitarbeiter).

Claude Opus hilft hier beim Zusammenführen unterschiedlicher Signale zu einer fundierten Schätzung.

Schritt 6 — Dedup und Qualitätskontrolle

Duplikate (dieselbe Firma unter unterschiedlichen Schreibweisen) raus. E-Mails verifizieren (nur formell — ich verifiziere nicht durch Testmail, das wäre schon wieder kritischer).

Finale Liste: 500 qualifizierte B2B-Leads mit validierten Daten.

Die Zahlen nach einer Woche

| Schritt | Zeit aufwand | Output | |---|---|---| | Branchen-Definition mit Kunde | 2h | 4 Ziel-WZ-Codes | | Handelsregister-Extraktion | 8h (über 3 Tage verteilt) | 3200 Roh-Firmen | | Webseiten-URL-Findung | 4h (Batch-Jobs) | 2850 erfolgreich | | Impressum-Parsing | 6h | 2100 vollständige Datensätze | | Anreicherung | 4h | 2100 mit Größenschätzung | | Filterung auf 20-200 MA | 2h | 680 passende | | Dedup + Qualität | 3h | 500 finale Leads |

Gesamt: ~29 Stunden Arbeitszeit über 7 Tage verteilt. Viel davon lief parallel während ich anderes gemacht habe.

Kosten: ~40 € API-Kosten für Claude + Suchanfragen + Hetzner-VM für die Scheduled Jobs.

Die drei Linien die ich nicht überschritten habe

Erstens — kein LinkedIn-Scraping. LinkedIn hat klare Nutzungsbedingungen gegen automatisiertes Abziehen von Daten. Auch wenn rechtlich umstritten: Die Plattform banned dich, die Accounts deiner Kunden sind in Gefahr, und das hiQ-Labs-vs-LinkedIn-Urteil aus den USA gilt in Deutschland nicht 1:1.

Zweitens — keine E-Mail-Permutations-Tools. "firstname.lastname@company.com" ist ein verbreitetes Muster. Aber Tools die tausende solcher Permutationen testen um zu sehen welche existieren, erzeugen spam-ähnliches Verhalten das Mail-Server zurecht blockieren. Außerdem rechtlich: Du behandelst Personendaten die du nicht rechtmäßig erhoben hast.

Dritts — keine automatisierten Cold-E-Mails. Die 500 Leads zu haben ist noch kein Outreach. Die anschließende Kommunikation braucht eigene rechtliche Würdigung. In Deutschland ist Cold-E-Mail im B2B-Bereich in engen Grenzen erlaubt (§ 7 UWG — Handwerker darf sich beim Maschinenbauer melden weil geschäftlicher Bezug), aber nicht pauschal.

Der Artikel zu konkreten Outreach-Strategien mit KI kommt separat.

Was nicht klappt hat

  • Bayerisches Unternehmensregister ist teilweise anders strukturiert als das bundeseinheitliche — erfordert eigenes Parsing
  • Sehr kleine Firmen (unter 10 Mitarbeiter) sind oft keine juristischen Personen und erscheinen nicht im Handelsregister — die fallen raus
  • Bestimmte Branchen (freie Berufe, Handwerk) sind oft Personengesellschaften und nicht immer im HR — für die braucht man die Handwerkskammer-Register, die wieder anders strukturiert sind

Wer profitiert von so einem Ansatz

  • B2B-SaaS-Firmen mit klarem Ideal-Customer-Profile
  • Agenturen und Beratungen die spezifische Branchen ansprechen
  • Industrie-Zulieferer die Hersteller-Firmen erreichen wollen

Nicht empfohlen für:

  • Massen-Akquise ohne klaren Fit (das scheitert immer)
  • Privatkunden-Geschäft (das ist ganz andere Datenlage + rechtliche Situation)
  • Hyperregional mit sehr kleinen Firmen (besser: persönliche Akquise)

Weiterlesen

Für die anschließende Outreach-Phase: Outreach-Copy mit Claude — 4 Templates. Für die DSGVO-Grenzen im Detail: DSGVO beim B2B-Scraping. Für konkrete Automation-Setups die du kennen solltest wenn du selbst Lead-Gen betreibst: n8n plus KI für Mittelständler.

Eigener Lead-Gen-Use-Case im Bau? Zone "Lead-Gen & B2B" im Discord. Konkrete Fälle, nicht allgemeines Geschwätz.

Wie wir diesen Artikel geprüft haben

Tests am
Woche vom 2026-03-24 bis 2026-03-31, für einen echten Kundenauftrag
Hardware
MacBook Pro M3 Max, Hetzner VM für Scheduled Jobs
Software
Python 3.12, Claude Haiku + Opus via API, Playwright für Webseiten-Rendering, DuckDuckGo-Search-API
KI-Einsatz
Claude Haiku für Kategorisierung und Anreicherung, Opus für Entscheidungs-Kanten. Kein automatisches Outreach — nur Daten-Aufbereitung.
Weiterlesen

Mehr aus Kategorie B2B & Lead-Generation