Impressum Extractor: DACH Register, VAT ID and Directors avatar

Impressum Extractor: DACH Register, VAT ID and Directors

Pricing

Pay per event

Go to Apify Store
Impressum Extractor: DACH Register, VAT ID and Directors

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

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Security

Limited permissions

Share

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 status for 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) plus full_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), phones in E.164 format plus phones_raw as 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_url of the page the data came from, and the cleaned impressum_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

FieldTypeDefaultDescription
websiteslist of stringsbosch.deCompany websites, domains or URLs. One row per website.
maxPagesPerSiteinteger 2-63Pages requested per website: the homepage, the legal page and fallback paths.
languageauto, de, en, fr, itautoPreferred language of the legal page. Auto follows the homepage language.
maxResultsinteger100Maximum number of websites processed, which is the maximum number of rows.
maxConcurrencyinteger 1-205Websites processed in parallel.

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

statusMeaningCharged
okThe legal notice was found and read.Yes
no_impressum_foundThe site loaded, but no legal page was found within maxPagesPerSite.No
not_reachableThe 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)

EventDescriptionWhen it fires
impressum-resultOne website with a legal notice readOnce 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_reachable with js_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_found rows 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_numbers and additional_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.