API Dokumentation

Die DACH Enrichment API extrahiert Firmendaten aus deutschen Impressum-Seiten. Input: Domain → Output: Name, Adresse, E-Mail, Telefon, Geschäftsführer, USt-ID und mehr.

Basis-URL
https://api.dach-enrichment.de/api

Authentifizierung

Alle API-Anfragen benötigen einen API-Key als Bearer-Token im Authorization Header.

HTTP Header
Authorization: Bearer dach_sk_your_api_key_here

API Keys erstellen Sie unter API Keys. Behandeln Sie Ihren Key wie ein Passwort — teilen Sie ihn nicht.

Fehler-Codes

CodeBedeutung
400Ungültige Anfrage (z.B. fehlende Domain)
401Ungültiger oder fehlender API-Key
402Keine Credits vorhanden — bitte upgraden
422Validierungsfehler im Request-Body
500Interner Fehler beim Enrichment

Rate Limits

PlanRequests/MinConcurrent
Free51
Starter202
Growth605
Scale20010
POST /enrich

Enricht eine einzelne Domain. Gecachte Anfragen (24h TTL) kosten 0 Credits.

Request Body

ParameterTypPflichtBeschreibung
domain string required Domain ohne Protokoll (z.B. siemens.com)
Request
curl -X POST https://api.dach-enrichment.de/api/enrich \ -H "Authorization: Bearer dach_sk_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"domain": "siemens.com"}'
Response 200
{ "success": true, "cached": false, "credits_used": 1, "credits_remaining": 499, "processing_time_ms": 3241, "data": { → siehe CompanyData } }
POST /bulk/upload Growth+

Lädt eine CSV-Datei mit Domains hoch. Max. 500 Domains pro Job. Verarbeitung läuft asynchron im Hintergrund.

Request (multipart/form-data)

ParameterTypBeschreibung
file CSV file Erste Spalte = Domain. UTF-8, max 500 Zeilen.
Response 200
{ "job_id": 42, "total_domains": 150, "message": "150 Domains werden verarbeitet." }
GET /bulk/{job_id}/status

Gibt den aktuellen Status eines Bulk-Jobs zurück. Pollen Sie alle 2–5 Sekunden.

Response 200
{ "job_id": 42, "status": "processing", // pending | processing | completed | failed "total_domains": 150, "completed": 73, "failed": 2, "credits_used": 73, "progress_percent": 50, "ready": false }
GET /bulk/{job_id}/download

Gibt die fertige CSV-Datei zurück. Nur verfügbar wenn status == "completed".

GET /auth/me

Gibt Account-Informationen zurück — nützlich zum Prüfen von Credits.

Response 200
{ "email": "you@company.de", "subscription_tier": "growth", "credits_remaining": 2341, "is_active": true }

CompanyData Schema

Das data-Objekt in jeder Enrich-Antwort.

FeldTypBeschreibung
company_namestringFirmenname
legal_formstringz.B. GmbH, AG, GbR
streetstringStraße + Hausnummer
postal_codestringPostleitzahl
citystringStadt
countrystringLändercode (z.B. DE)
phone_numbersstring[]Telefonnummern
emailsobject[][{email, role, confidence}]
vat_idstringUmsatzsteuer-ID
commercial_registerstringHRB / HRA Nummer
rolesobject{managing_director, ceo, cto, …}
data_sourcesstring[]z.B. ["regex", "llm", "json_ld"]

cURL Beispiel

Single Domain Enrichment
curl -X POST https://api.dach-enrichment.de/api/enrich \ -H "Authorization: Bearer dach_sk_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"domain":"bmw.de"}' | python3 -m json.tool

Python Beispiel

enrichment.py
import requests API_KEY = "dach_sk_YOUR_KEY" BASE_URL = "https://api.dach-enrichment.de/api" HEADERS = {"Authorization": f"Bearer {API_KEY}"} # Single enrichment r = requests.post( f"{BASE_URL}/enrich", headers=HEADERS, json={"domain": "siemens.com"} ) data = r.json()["data"] print(data["company_name"], data["emails"]) # Bulk from list domains = ["bmw.de", "sap.com", "bosch.de"] csv_content = "domain\n" + "\n".join(domains) r = requests.post( f"{BASE_URL}/bulk/upload", headers=HEADERS, files={"file": ("domains.csv", csv_content, "text/csv")} ) job_id = r.json()["job_id"] print(f"Job {job_id} gestartet")

Node.js Beispiel

enrich.js
const API_KEY = 'dach_sk_YOUR_KEY'; const BASE_URL = 'https://api.dach-enrichment.de/api'; async function enrich(domain) { const res = await fetch(`${BASE_URL}/enrich`, { method: 'POST', headers: { 'Authorization': `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ domain }) }); const data = await res.json(); return data.data; } enrich('volkswagen.de').then(d => console.log(d.company_name, d.emails) );