Impressum & EU Legal Notice Extractor — Company & VAT Data
Pricing
from $1.70 / 1,000 results
Impressum & EU Legal Notice Extractor — Company & VAT Data
Turn a list of domains into structured company data from Impressum, Mentions légales, Aviso legal and other EU legal-notice pages: legal company name, VAT / USt-IdNr, managing director, registration number, court, address, email and phone. Fast, keyless B2B lead & KYB enrichment.
Pricing
from $1.70 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
109
Total users
39
Monthly active users
4 days ago
Last modified
Categories
Features
Share
Impressum & EU Legal Notice Extractor — Company Name, VAT, Managing Director, Commercial Register & Contacts
Turn any list of domains, URLs, or email addresses into verified B2B company records extracted directly from each website's mandatory European legal notice — the German Impressum (§ 5 DDG / TMG), Austrian Offenlegung (§ 25 MedienG / ECG), Swiss Impressum (UWG), French Mentions légales, Spanish Aviso legal, Italian Note legali, and Dutch Colofon.
For every domain you scrape Impressum data into one clean, deduplicated row: legal company name (GmbH, AG, UG, GmbH & Co. KG, SAS, S.L., S.r.l., B.V.), EU/EFTA VAT ID (USt-IdNr. / UID), managing director (Geschäftsführer / Vorstand), commercial register number (Handelsregister HRB/HRA, SIREN, KvK, REA), register court (Amtsgericht), full street and postal address, direct email addresses, and phone number. No login, no API key, no browser overhead.
Export to JSON, CSV, Excel (XLSX), XML, or the Apify REST API.
Built for DACH & European B2B lead generation agencies, SDR/RevOps teams, KYB/KYC compliance officers, M&A analysts, and CRM data enrichment pipelines that need the real legal entity and decision-maker behind every domain.
⚡ At a glance
| Feature | Details |
|---|---|
| Target Pages | German/Austrian/Swiss Impressum, French Mentions légales, Spanish Aviso legal, Italian Note legali, Dutch Colofon, UK/EU Imprint / Legal Notice, plus /kontakt & /contact fallback |
| Accepted Inputs | Bare domains (heise.de), full URLs (https://www.heise.de/kontakt), or email addresses (info@heise.de) — automatically normalized and deduplicated |
| Core Extracted Fields | companyName, managingDirector, vatId, registrationNumber, registerCourt, address, emails, phone, legalPageUrl, legalPageType, foundVia |
| Supported Legal Forms | GmbH, GmbH & Co. KG, GmbH & Co. KGaA, UG (haftungsbeschränkt), AG, SE, OHG, KG, GbR, e.K., SAS, SASU, SARL, S.A., S.L., S.L.U., B.V., N.V., S.p.A., S.r.l., Ltd, AB, Oy, A/S, Sp. z o.o. |
| VAT Format Coverage | All 27 EU Member States + Switzerland & UK (DE, ATU, CHE, FR, IT, ES, NL, BE, PL, SE, DK, FI, IE, PT, CZ, HU, RO, BG, HR, SI, SK, LT, LV, EE, LU, MT, CY, EL, GB) |
| Scale & Speed | Parallel lookup pool (up to 100 concurrent workers); processes 1,000+ domains in minutes with 0 duplicates |
| Empty-Input Behavior | Running with {} automatically processes a curated sample of 20 German & European companies |
| Authentication | None required — 100% keyless |
| Export Formats | JSON, JSONL, CSV, Excel (XLSX), HTML table, XML, RSS, and REST API |
🔎 Why scrape Impressum & EU legal-notice pages for B2B intelligence?
Across the DACH region (Germany, Austria, Switzerland) and the European Union, nearly every commercial website is required by law to publish a complete corporate disclosure page:
- Germany (
§ 5 DDG, formerly§ 5 TMG): Mandatory Impressum disclosing the full legal entity name (Firmenname), legal form (Rechtsform), authorized representatives (Vertretungsberechtigte / Geschäftsführer / Vorstand), full street address (ladungsfähige Anschrift), phone/email contact, commercial register court (Registergericht) and number (HandelsregisternummerHRB/HRA), and VAT identification number (Umsatzsteuer-IdentifikationsnummerUSt-IdNr.). - Austria (
§ 5 ECG&§ 25 MedienG): Mandatory Impressum / Offenlegung withFirmenbuchnummer(FN),Firmenbuchgericht,UID-Nummer(ATU...), and managing directors. - Switzerland (
Art. 3 Abs. 1 lit. s UWG): Mandatory corporate identity, postal address, contact email, andCHE-xxx.xxx.xxxUID. - France (
LCEN), Spain (LSSI-CE), Italy (Codice Civile), Netherlands (Burgerlijk Wetboek): Mandatory Mentions légales, Aviso legal, Note legali, and Colofon withSIREN/SIRET/RCS,NIF/CIF,Partita IVA/REA, andKvK/BTWnumbers.
While generic website email scrapers crawl dozens of random subpages only to return noisy newsletter addresses or broken links, this Impressum scraper goes straight to the legally mandated corporate disclosure page and extracts the structured legal entity record.
Key business benefits
- Decision-maker identification (
Geschäftsführer/Vorstand): Stop pitching genericinfo@inboxes without a name. Address your DACH outbound sequences to the legally registered managing director or board member. - Instant KYB & vendor verification: Cross-check
companyName,vatId,registrationNumber, andregisterCourtbefore onboarding merchants, suppliers, or B2B customers. - CRM deduplication & account mapping: Resolve thousands of brand domains, product microsites, and regional TLDs (
.de,.at,.ch,.eu,.com) to their parentGmbHorAGlegal entity. - High-speed bulk enrichment: Enrich 1,000 to 100,000+ domains exported from Google Maps, LinkedIn, Crunchbase, BuiltWith, or exhibition directories in a single automated run.
✨ Key features
- ✅ 3-stage page discovery engine:
- Footer & page link detection (
footer-link): Scans homepage links in 7 European languages (Impressum,Imprint,Mentions légales,Aviso legal,Note legali,Colofon,Legal notice,Dati societari,Juridische informatie). - Direct path probing (
common-path): Automatically probes 18 standard legal-notice URL paths (/impressum,/de/impressum,/imprint,/legal-notice,/mentions-legales,/aviso-legal,/note-legali,/colofon, etc.) and validates legal content signatures when SPAs hide footer links. - Contact page fallback (
contact-page): WhencontactPageFallback: trueand no formal Impressum exists (e.g. non-EU domains), falls back to/kontaktor/contactso you still capture verified email and phone contacts.
- Footer & page link detection (
- ✅ Smart company name & legal form parser: Accurately extracts German and European corporate entities while stripping surrounding sentence noise, copyright prefixes, and template placeholders (
Max Mustermann,Musterfirma). - ✅ Named executive extraction: Captures the person name(s) listed after
Geschäftsführer,Geschäftsführung,Vorstand,Vertreten durch,Inhaber,Managing Director,Gérant,Amministratore Unico/Delegato, orBestuurder. - ✅ Format-first EU & EFTA VAT validation: Recognizes all 29 European VAT/UID patterns (
DE123456789,ATU12345678,CHE-123.456.789,FRXX123456789,IT12345678901,NL123456789B01, etc.) plus labeled tax numbers. - ✅ Commercial register & court extraction: Captures German
HRB/HRAnumbers,Amtsgericht/Registergerichtcities, FrenchRCS/SIREN, DutchKvK, and ItalianREA/Registro Imprese. - ✅ Automatic input normalization & 0-duplicate guarantee: Paste bare domains, full
https://URLs, orname@company.deemail addresses — all inputs are normalized to canonical root domains and deduplicated before crawling.
🎯 Use cases
1. DACH B2B outbound sales & cold outreach
German, Austrian, and Swiss outbound campaigns perform dramatically better when personalized with the managing director's name (Geschäftsführer), local city, and exact legal entity name. Feed your prospect domain list into this extractor and push enriched rows straight into HubSpot, Lemlist, Instantly, Smartlead, or Salesforce.
2. KYB, KYC & merchant onboarding automation
Fintechs, payment processors, marketplaces, and B2B SaaS platforms use this Actor to automatically verify a corporate applicant's website Impressum against their submitted USt-IdNr., Handelsregisternummer (HRB/HRA), and Amtsgericht.
3. Enriching e-commerce & agency lead lists
Combine store lists (Shopify, Shopware, WooCommerce, Magento) with Impressum extraction to uncover the operating GmbH or UG, warehouse/headquarters postal code, phone number, and owner name behind online shops.
4. M&A deal sourcing & private-company mapping
Private equity analysts and corporate development teams map fragmented Mittelstand industries across Germany, Austria, and Switzerland by turning trade-association member links or regional directories into structured firmographic tables.
5. CRM data hygiene & account consolidation
Clean up legacy CRM databases where reps entered bare domains or brand names. Populate missing billing addresses, VAT numbers, and official legal names in bulk.
📥 Input parameters
All input fields are optional. Running with an empty input ({}) automatically processes a built-in sample of 20 German and European company domains so you can inspect the output structure right away.
| Parameter | Type | Default | Description |
|---|---|---|---|
domains | array<string> | Sample of 20 EU domains | Companies to enrich — one per line. Accepts bare domains (heise.de), full URLs (https://www.heise.de/kontakt), or email addresses (info@heise.de). Automatically normalized and deduplicated. |
contactPageFallback | boolean | true | When no legal-notice page is found, also check /kontakt and /contact pages so you still capture email and phone numbers. |
maxItems | integer | 0 (prefill 100) | Stop after processing this many domains. Set 0 to process your entire domain list without limit (supports 1,000+ domains per run). |
maxConcurrency | integer | 20 | Number of domains processed in parallel (1–100). Increase to 40–60 for large multi-thousand domain lists. |
proxyConfiguration | object | { "useApifyProxy": false } | Optional Apify Proxy configuration. Off by default for maximum speed and zero proxy cost; enable if specific target hosts rate-limit direct connections. |
Example input — DACH B2B lead enrichment
{"domains": ["heise.de","golem.de","contabo.com","hetzner.com","sevdesk.de","personio.de","sipgate.de","shopware.com"],"contactPageFallback": true,"maxItems": 0,"maxConcurrency": 25,"proxyConfiguration": {"useApifyProxy": false}}
Example input — 1,000+ domain bulk enrichment run
{"domains": ["https://www.westwing.de/de/","info@verivox.de","flaconi.de","doctolib.fr","bol.com"],"contactPageFallback": true,"maxItems": 5000,"maxConcurrency": 50,"proxyConfiguration": {"useApifyProxy": false}}
📤 Output schema & field reference
Each domain produces one structured JSON record. Fields are organized into four logical groups:
🏢 Corporate Identity & Legal Registration
| Field | Type | Coverage | Description |
|---|---|---|---|
domain | string | 🟢 High (100%) | Normalized root domain processed (e.g. westwing.de, hetzner.com). Primary deduplication key. |
companyName | string | 🟢 High (DACH ~80%+) | Official legal entity name including corporate suffix (e.g. Westwing GmbH, Hetzner Online GmbH). |
managingDirector | string | 🟢 High (DACH ~70%+) | Authorized managing director(s), board member(s), or owner (Geschäftsführer, Vorstand, Inhaber). |
vatId | string | 🟢 High (DACH ~75%+) | Validated EU/EFTA VAT identification number (USt-IdNr., UID, TVA, P.IVA, BTW), e.g. DE815289147. |
registrationNumber | string | 🟡 Conditional (~65%) | Commercial register entry (Handelsregisternummer such as HRB 191901, HRA 51246, SIREN, KvK). |
registerCourt | string | 🟡 Conditional (~60%) | Registering court or chamber (Amtsgericht München, Mannheim, Charlottenburg, Tribunal de Commerce). |
📍 Address & Direct Contact Details
| Field | Type | Coverage | Description |
|---|---|---|---|
address | string | 🟢 High (~85%) | Full street address, postal code, and city (e.g. Moosacher Str. 88, 80809 München). |
emails | string | 🟢 High (~80%) | Up to 5 deduplicated email addresses found on the legal/contact page, comma-separated (filtered for image/Sentry noise). |
phone | string | 🟢 High (~75%) | Direct telephone number extracted from tel: links or labeled Tel / Telefon / Phone lines. |
🔗 Discovery & Run Metadata
| Field | Type | Coverage | Description |
|---|---|---|---|
legalPageUrl | string | 🟢 High (~95%) | Exact URL of the Impressum, legal notice, or contact page that was parsed. |
legalPageType | string | 🟢 High (~95%) | 'legal-notice' when extracted from an Impressum/legal page, or 'contact' when contact fallback was used. |
foundVia | string | 🟢 High (~95%) | Discovery method: 'footer-link', 'common-path', or 'contact-page'. |
error | string | 🟡 Conditional | Empty string "" on success; diagnostic note when a host is unreachable or renders exclusively via client-side JS. |
scrapedAt | string | 🟢 High (100%) | ISO-8601 UTC timestamp of extraction. |
Sample output records
[{"domain": "westwing.de","companyName": "Westwing GmbH","address": "Moosacher Str. 88, 80809 München","emails": "impressum@westwing.de, service@westwing.de","phone": "+49 (89) 550 544 -0","vatId": "DE815289147","managingDirector": "Dr. Andreas Hoerning","registrationNumber": "HRB 191901","registerCourt": "München","legalPageUrl": "https://www.westwing.de/i/imprint/","legalPageType": "legal-notice","foundVia": "footer-link","error": "","scrapedAt": "2026-11-10T02:00:00.000Z"},{"domain": "verivox.de","companyName": "Verivox GmbH","address": "Max-Jarecki-Straße 21, 69115 Heidelberg","emails": "finanzen@verivox.de, versicherungen@verivox.de","phone": "+49 6221 777 00 50","vatId": "DE464574039","managingDirector": "Daniel Puschmann","registrationNumber": "HRB 754408","registerCourt": "Mannheim","legalPageUrl": "https://www.verivox.de/impressum/","legalPageType": "legal-notice","foundVia": "footer-link","error": "","scrapedAt": "2026-11-10T02:00:00.000Z"}]
🔁 Bulk processing & 1,000+ domain scale
Unlike search scrapers that paginate through a single directory, this Actor operates as a high-throughput parallel domain enrichment engine:
- Zero artificial caps: Set
maxItems: 0(the default) to process 1,000, 10,000, or 100,000+ domains in a single run. - Fast fail on dead hosts: Unreachable or expired domains fail fast on the initial check without wasting time probing fallback paths, keeping bulk runs snappy.
- Automatic deduplication: If your input list contains
https://www.hetzner.com/de/,hetzner.com, andinfo@hetzner.com, the normalizer collapses them into a singlehetzner.comlookup — guaranteeing 0 duplicate rows. - Configurable concurrency: Tune
maxConcurrencybetween20and100to match your throughput targets.
⚙️ How to use & integrate
1. Run in the Apify Console
- Open the Impressum & EU Legal Notice Extractor on Apify.
- Paste your list of domains, URLs, or emails into Domains to look up.
- Leave Max results at
0to process your full list (or set100for a quick test). - Click Start and download your enriched dataset as CSV, Excel, or JSON.
2. Run via Python SDK
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("haketa/impressum-legal-notice-extractor").call(run_input={"domains": ["heise.de","golem.de","contabo.com","hetzner.com","sevdesk.de","personio.de"],"contactPageFallback": True,"maxItems": 0,"maxConcurrency": 30,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{item['domain']} -> {item['companyName']} | CEO: {item['managingDirector']} | VAT: {item['vatId']} | {item['emails']}")
3. Run via Node.js SDK
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('haketa/impressum-legal-notice-extractor').call({domains: ['heise.de', 'hetzner.com', 'sevdesk.de', 'shopware.com'],contactPageFallback: true,maxItems: 0,maxConcurrency: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.table(items.map(({ domain, companyName, managingDirector, vatId, emails }) => ({domain, companyName, managingDirector, vatId, emails,})));
4. Connect to Make, Zapier, n8n, Clay, or HubSpot
- Clay / n8n / Make: Trigger the Actor via HTTP webhook whenever new leads enter your pipeline, and map
companyName,managingDirector,vatId, andphoneback to your CRM. - Google Sheets: Export directly to Google Sheets or schedule weekly enrichment jobs.
💡 Pro tips for maximum extraction rates
- Focus on
.de,.at,.ch,.fr,.it,.es,.nl, and.eubusiness domains: DACH websites have the strictest Impressum laws (§ 5 DDG), delivering the highest fill rates onmanagingDirector,vatId,registrationNumber, andregisterCourt. - Keep
contactPageFallback: trueenabled: For international.comdomains that don't publish a German-style Impressum, the fallback still captures verified email addresses and phone numbers from/contactor/kontakt. - Use
vatIdandregistrationNumberas unique join keys: When enriching CRM accounts, joining onvatId(DE...,ATU...,CHE...) orregistrationNumber(HRB ...) eliminates duplicate accounts across multiple brand domains. - Enable Apify Proxy only when needed: Direct requests work for 95%+ of corporate websites and use zero proxy bandwidth. If a small subset of domains sits behind strict firewall rules, re-run just those domains with
useApifyProxy: true.
❓ Frequently Asked Questions
Which countries and legal-notice types are supported?
The extractor is optimized for Germany, Austria, and Switzerland (DACH) (Impressum / Offenlegung), and also supports France (Mentions légales), Spain (Aviso legal), Italy (Note legali / Dati societari), Netherlands & Belgium (Colofon / Juridische informatie), and English-language Imprint / Legal Notice pages across all 27 EU member states and the UK.
Can I paste full URLs or email addresses instead of bare domains?
Yes. You can paste https://www.company.de/en/about, company.de, or contact@company.de. The Actor automatically normalizes every entry to its bare domain (company.de) and removes duplicates before running.
How many domains can I enrich in a single run?
There is no hard cap. Set maxItems: 0 to process 1,000, 10,000, or 100,000+ domains. With maxConcurrency: 40, the Actor processes roughly 1,000 domains in 15–20 minutes on standard compute.
Why are some fields empty on certain domains?
Legal disclosure requirements vary by legal form and country. For example, a sole proprietor (Einzelunternehmen) or small partnership (GbR) does not have a Handelsregisternummer (HRB) or Amtsgericht, and some non-DACH sites only list company name, address, and email without a VAT ID. If a site renders its entire legal notice inside a client-side image or canvas, the error field notes that no static fields were found.
Does this require a proxy or third-party API key?
No API keys or logins are required, and proxy is off by default so runs are fast and economical.
How does the extractor distinguish between a real managing director and random page text?
The parser locates the statutory representative label (Geschäftsführer, Geschäftsführung, Vorstand, Vertreten durch, Inhaber, Managing Director, Gérant, Amministratore, Bestuurder) and validates that the extracted value starts with an uppercase personal name, contains both given and family name tokens, excludes corporate suffixes or street patterns, and strips academic/parenthetical noise.
Can I enrich a list of 10,000+ domains from Google Maps or LinkedIn Sales Navigator?
Yes. Export your prospect website column from Google Maps, Apollo, Clay, Crunchbase, or LinkedIn Sales Navigator, paste the URLs directly into domains, set maxItems: 0 and maxConcurrency: 50, and export the resulting CSV/XLSX with companyName, managingDirector, vatId, registrationNumber, address, emails, and phone.
🌍 Supported European legal-notice standards by country
| Country / Region | Legal Notice Term | Statutory Basis | Typical Register & Tax Identifiers Extracted |
|---|---|---|---|
| 🇩🇪 Germany | Impressum / Anbieterkennzeichnung | § 5 DDG (ex-§ 5 TMG), § 18 MStV | USt-IdNr. (DE + 9 digits), Handelsregister (HRB / HRA), Amtsgericht, Geschäftsführer / Vorstand |
| 🇦🇹 Austria | Impressum / Offenlegung | § 5 ECG, § 25 MedienG, § 14 UGB | UID-Nummer (ATU + 8 digits), Firmenbuchnummer (FN), Handelsgericht / Landesgericht |
| 🇨🇭 Switzerland | Impressum | Art. 3 Abs. 1 lit. s UWG | UID / MWST (CHE-xxx.xxx.xxx), Handelsregisteramt, Geschäftsführer / Verwaltungsrat |
| 🇫🇷 France | Mentions légales | Art. 6 LCEN | N° TVA intracommunautaire (FR + 11 chars), SIREN / SIRET, RCS + Greffe (Tribunal de Commerce), Gérant / Président |
| 🇪🇸 Spain | Aviso legal | Art. 10 LSSI-CE | NIF / CIF (ES + 9 chars), Registro Mercantil, Administrador |
| 🇮🇹 Italy | Note legali / Dati societari | Art. 2250 Codice Civile | Partita IVA (IT + 11 digits), Registro Imprese, REA, Amministratore Unico / Delegato |
| 🇳🇱 Netherlands | Colofon / Juridische informatie | Art. 3:15d BW | BTW-nummer (NL + 9 digits + Bxx), KvK-nummer (Kamer van Koophandel), Bestuurder |
| 🇧🇪 Belgium | Mentions légales / Wettelijke vermeldingen | Code de droit économique | TVA / BTW (BE0 + 9 digits), BCE / KBO, Gérant / Zaakvoerder |
| 🇬🇧 United Kingdom & IE | Imprint / Legal Notice / Legal Disclosure | Companies Act 2006 | VAT Reg No (GB / IE), Company Registration No, Directors |
🛠️ Ready-to-run workflow recipes
Recipe 1: Enriching a German Mittelstand prospect list for cold email & phone outreach
{"domains": ["https://www.personio.de","https://www.sevdesk.de","https://www.lexoffice.de","https://www.shopware.com","https://www.hetzner.com","https://www.contabo.com"],"contactPageFallback": true,"maxItems": 0,"maxConcurrency": 30}
Recipe 2: High-speed KYB VAT & Commercial Register verification
{"domains": ["westwing.de","verivox.de","flaconi.de","doctolib.fr","bol.com","ionos.de"],"contactPageFallback": false,"maxItems": 0,"maxConcurrency": 40}
🔗 Related B2B & company intelligence scrapers
Pair the Impressum & EU Legal Notice Extractor with these company and lead-generation Actors:
- Dun & Bradstreet Scraper — Companies, DUNS & Revenue
- North Data Scraper — European Company Register & Financials
- Unternehmensregister Scraper — German Commercial Register
- OpenCorporates Scraper — Global Corporate Registry Data
- WLW (Wer liefert was) Scraper — DACH B2B Suppliers
- Europages Scraper — European B2B Supplier Directory
📋 Changelog
- v1.2 (2026-11) — Unlocked 1,000+ domain scale & faster execution: Added fast-fail handling on unreachable root hosts so dead domains never probe fallback paths, reduced per-probe timeouts for faster batch throughput, expanded built-in DACH/EU sample domains for zero-input runs, and enhanced README documentation with field coverage tables.
- v1.1 (2026-08) — Improved German company name and
Geschäftsführerextraction accuracy; added filters against template placeholder names (Max Mustermann) and mid-sentence fragments. - v1.0 (2026-05) — Initial release with 3-stage legal page discovery (
footer-link,common-path,contact-page), 29 EU/EFTA VAT formats, commercial register (HRB/HRA/Amtsgericht) extraction, and parallel concurrency pool.