Impressum Extractor: DACH Register, VAT ID and Directors
Pricing
Pay per event
Impressum Extractor: DACH Register, VAT ID and Directors
Paste company websites, get the legal notice (Impressum) as structured data: company name, legal form, address, register court and number, VAT id, managing directors, responsible person, e-mail and phone. Germany, Austria, Switzerland.
Pricing
Pay per event
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Impressum Extractor - DACH Company Legal Notice, Register, VAT ID, Directors
Paste a list of company websites and get the legal notice (Impressum) of each one as structured data: company name, legal form, address, register court and number, VAT id, managing directors, responsible person, e-mail and phone. Built for Germany, Austria and Switzerland. One row per website, ready for lead generation, company data enrichment and KYC onboarding checks.
No login, no API key and no proxy setup required.
Features
- One row per website, in input order, with a clear
statusfor every site - Legal identity:
company_name,legal_form(GmbH, AG, KG, GmbH & Co. KG, UG, e.K., SE, eG, e.V., GesmbH, OG, Sàrl, SA, Sagl and more) - Address split into
street,postal_code,city,country(DE, AT, CH, LI) plusfull_address - People:
managing_directors,representatives(name plus the role wording as published),supervisory_board_chair - Register data:
register_court,register_type(HRB, HRA, GnR, PR, VR, FN, ZVR, UID),register_number, and other register numbers named on the same page - Tax data:
vat_id(USt-IdNr, ATU, CHE MWST),tax_number,share_capital, and other VAT ids named on the same page - Contact data:
emails(protected and "(at)" spellings decoded),phonesin E.164 format plusphones_rawas written,fax - Responsibility and supervision:
responsible_for_content(V.i.S.d.P., section 18 MStV),publisher,supervisory_authority,chamber,professional_rules,business_purpose impressum_urlof the page the data came from, and the cleanedimpressum_text(first 8,000 characters)- German, English, French and Italian legal pages (Impressum, Imprint, Legal notice, Rechtliche Hinweise, Mentions légales, Note legali)
- Missing fields are
null(single values) or[](lists), so every row has the same shape - Pay only for rows where the legal notice was found
Sample input
{"websites": ["bosch.de", "wienenergie.at"],"maxPagesPerSite": 3,"language": "auto","maxResults": 100}
Domains and URLs are both fine, with or without https:// and www. Paths and tracking parameters are ignored, duplicates are removed. An e-mail address is reduced to its domain.
Sample output
{"website": "https://www.bosch.de","status": "ok","status_detail": null,"impressum_url": "https://www.bosch.de/impressum/","company_name": "Robert Bosch GmbH","legal_form": "GmbH","street": "Robert-Bosch-Platz 1","postal_code": "70839","city": "Gerlingen-Schillerhöhe","country": "DE","full_address": "Robert-Bosch-Platz 1, 70839 Gerlingen-Schillerhöhe","managing_directors": ["Dr. Christian Fischer", "Dr. Markus Forschner", "Stefan Grosch", "Dr. Markus Heyn", "Dr. Frank Meyer", "Katja von Raven", "Dr. Tanja Rückert"],"register_court": "Amtsgericht Stuttgart","register_type": "HRB","register_number": "14000","vat_id": "DE811128135","emails": ["kontakt@bosch.de"],"phones": ["+4971140040990"],"phones_raw": ["+49 711 400 40990"],"responsible_for_content": "Dr. Michael Schmidtke","pages_fetched": 2,"scraped_at": "2026-11-04T16:00:00Z"}
(The output above is shortened; every row carries all fields listed in the dataset schema.)
Input fields
| Field | Type | Default | Description |
|---|---|---|---|
websites | list of strings | bosch.de | Company websites, domains or URLs. One row per website. |
maxPagesPerSite | integer 2-6 | 3 | Pages requested per website: the homepage, the legal page and fallback paths. |
language | auto, de, en, fr, it | auto | Preferred language of the legal page. Auto follows the homepage language. |
maxResults | integer | 100 | Maximum number of websites processed, which is the maximum number of rows. |
maxConcurrency | integer 1-20 | 5 | Websites processed in parallel. |
How the legal page is found
The actor reads the homepage and looks for a link labelled Impressum, Imprint, Legal notice, Rechtliche Hinweise, Rechtliches, Mentions légales, Note legali or Kontakt & Impressum, preferring links in the footer and links on the same site. If there is no such link it tries the common paths /impressum, /imprint, /de/impressum, /legal and /legal-notice. A privacy policy is not accepted as a legal notice.
FAQ
The homepage itself shows the register number or VAT ID, but there is no legal page. What do I get?
A row with status: ok and impressum_url set to the homepage. status_detail says "legal data found on the homepage". The row is charged.
The homepage and the legal page both return 403 or a block page. What do I get?
A row with status: not_reachable (for example http_403). It is not charged.
The homepage is blocked (403) but the legal page is open. What do I get?
After a 401, 403, 429 or 5xx on the homepage the actor still tries the usual legal paths such as /impressum and /service/impressum. If one of them returns a legal notice, the row is ok and charged. A 404 on a guessed path never counts as a legal notice.
The Impressum link is not a normal link in the page. Footers that ship their links as JSON (common on JavaScript sites) are read too.
Status values
status | Meaning | Charged |
|---|---|---|
ok | The legal notice was found and read. | Yes |
no_impressum_found | The site loaded, but no legal page was found within maxPagesPerSite. | No |
not_reachable | The site or its legal page could not be read. | No |
status_detail explains every status other than ok: http_403, http_404, js_required, bot_challenge, cookie_wall, consent_redirect, off_site_redirect, empty_response, timeout, dns_error, connection_failed, tls_error, legal_page_<reason> (url) when the legal page itself could not be read, or no legal page found (checked N pages).
Pricing (Pay-per-event)
| Event | Description | When it fires |
|---|---|---|
impressum-result | One website with a legal notice read | Once per row with status: ok, after the row is delivered |
Price: $0.001 per run start plus $0.003 per Impressum found ($3.00 per 1,000 results). Rows with no_impressum_found or not_reachable are free. The actor stops cleanly when your maximum total charge is reached.
Limits
- Websites that only show their content after JavaScript runs come back as
not_reachablewithjs_required. The actor does not run scripts. - Cookie walls, consent pages and bot challenges are not clicked through or worked around. These sites come back as
not_reachable(cookie_wall,consent_redirect,bot_challenge). - Switzerland has no general Impressum duty. Many Swiss sites publish little or nothing, so expect more
no_impressum_foundrows and sparser fields there. - Fields are read from the text of the notice. If a site leaves placeholders such as "[bitte ergänzen]", those fields stay
null. - Sites that publish several legal entities on one page return the first one in the main fields and the others in
additional_register_numbersandadditional_vat_ids. - The data is what the website publishes. You are responsible for lawful use of personal data such as names, e-mail addresses and phone numbers (GDPR, UWG and national marketing rules).
Use with AI agents (MCP)
This actor works with the Apify MCP server, so AI assistants can call it as a tool. Actor id: nanoscrape/impressum-extractor.
Endpoint: https://mcp.apify.com?tools=nanoscrape/impressum-extractor
Example prompt: "Get the register number, VAT id and managing directors for bosch.de and wienenergie.at."
Support
Questions, bugs and feature requests: contact@nanoscrape.com or open an issue via the Apify Console.
Built by NanoScrape.