ParseForge Scrapers

German Impressum Scraper - Leads from DE, AT & CH Websites

parseforge/german-impressum-scraper

Lead generationAutomationDeveloper tools

Extract Impressum data from German, Austrian and Swiss websites: directors, email, phone, address, HRB, VAT ID. Google search built in. CSV, Excel, JSON, XML.

Run this scraper See the API call
Total runs
4
Bookmarked
0
Last modified
2 days ago

This scraper was last updated on .

What does the German Impressum Scraper - Leads from DE, AT & CH Websites return?

ParseForge Banner

🇩🇪 German Impressum Scraper

🚀 Export B2B leads from German, Austrian and Swiss Impressum pages in seconds. 39 fields per company: legal name, legal form, managing directors, email, phone in E.164, full address, Handelsregister number and court, VAT ID and social profiles. Start from a URL list or straight from Google.

Every business website in Germany, Austria and Switzerland has to publish an Impressum (legal notice) with the company's legal name, address, contact details, the people who represent it and its register entries. This Actor finds that page on each website, reads it, and returns the data as clean, structured rows. Give it your own website list, or type Google search terms such as dachdecker köln and it turns every organic result into a lead.

In a test on 95 websites found through Google across 12 trades and cities in all three countries, the Actor read a legal notice on 77 of them. On those 77 it returned a company name on 75, a street address on 76, an email on 68, a phone number on 67, a named managing director or owner on 51, a VAT ID on 50 and a commercial register number on 45. Every value is read from the page itself by a rule-based parser, with no AI guessing, so a name or number in your dataset is one the company published.

🎯 Target Audience 💡 Primary Use Cases
B2B sales and outbound teams selling into DACH Build lead lists with the managing director's name, email and phone
Lead generation and marketing agencies Turn "trade + city" Google searches into ready-to-call prospect lists
CRM and data teams Enrich a list of company websites with legal name, register number and VAT ID
Web agencies and legal-tech providers Find sites whose Impressum still cites the repealed Telemediengesetz
KYC, compliance and procurement Check a supplier's legal entity, register court and VAT ID from its own website

📋 What the German Impressum Scraper does

  • Opens each website, ranks its links and picks the Impressum page (Impressum, Imprint, Legal notice, Anbieterkennzeichnung, Offenlegung), then falls back to the usual paths and to the homepage itself for one-page sites.
  • Reads the company name and legal form (GmbH, UG (haftungsbeschränkt), AG, SE, GmbH & Co. KG, e.K., GbR, PartG mbB, OG, Swiss AG and 20 more), the address, phone, fax and every email address.
  • Names the people behind the company: managing directors, board members, owners, partners and the person responsible for content under § 18 MStV, with first name, last name, academic title and profession split out.
  • Extracts register data for all three countries: Handelsregister (HRB, HRA, PR, GnR, VR) with the register court, the Austrian Firmenbuch number (FN), the Swiss UID (CHE), and VAT IDs (DE, ATU, CHE MWST).
  • Searches Google Germany, Austria or Switzerland for your terms, pages through up to 100 results per term, and skips directories, marketplaces and portals so your list contains real companies.
  • Decodes the ways sites hide emails from bots: info (at) firma.de, [at]/[dot], Cloudflare email protection and TYPO3 encrypted mailto links.

💡 Why it matters: the Impressum is the one place where a German company must publish who runs it and how to reach them, by law. That makes it a better lead source than directory listings: the name on the row is the legally responsible person, and the address and register number are the company's own.

🎬 Full Demo (🚧 Coming soon)

📊 Output

Field Description
🖼 imageUrl Website preview image (og:image or icon)
🏢 companyName / ⚖️ legalForm Legal company name and the legal form read from it
🌐 website / 🔤 domain / 📜 imprintUrl Homepage, domain and the Impressum page that was read
📧 email / 📨 emails / 📬 emailMxValid Main email (company domain first), every email on the page, and whether the email domain has a mail server
📞 phone / ☎️ phoneE164 / 📠 fax Phone as printed, phone in international E.164 format, fax
🏠 street / 🔢 postalCode / 🏙️ city / 🇩🇪 countryCode / 📍 fullAddress Postal address split into parts, country DE, AT or CH
👤 contactName / 🙂 contactFirstName / 🪪 contactLastName / 🎓 contactAcademicTitle / 🧑‍💼 contactRole The primary person: first managing director, board member, owner, partner or content responsible
👥 managingDirectors Every person named, each with fullName, firstName, lastName, salutation, academicTitle, profession and role
✍️ contentResponsible Person responsible for content under § 18 MStV
🗂️ registerType / #️⃣ registerNumber / 🏛️ registerCourt HRB, HRA, PR, GnR, VR (DE), FN (AT) or UID (CH), the number and the register court
🧾 vatId USt-IdNr., Austrian UID or Swiss MWST number
🛡️ supervisoryAuthority / 🏫 chamber / 🎖️ professionalTitle Regulated professions: supervisory authority, chamber and statutory professional title
🪑 supervisoryBoardChair Chair of the supervisory board (AG, SE, large GmbH)
📘 legalBasis / 🕰️ citesRepealedTmg The law the Impressum cites, and for German sites whether it still cites the Telemediengesetz that was replaced by the DDG in May 2024
🔗 socialLinks LinkedIn company page, Xing, Facebook, Instagram, YouTube, X, TikTok and Pinterest
🔎 searchTerm / 📥 inputUrl The Google term that found the site, and the original input
🕒 scrapedAt When the row was collected
❌ error Always null on data rows

Values a company does not publish come back as Not Disclosed; values that cannot apply (for example the TMG check on an Austrian site) are N/A. No field is ever null except error.

Sample records

A roofer found with the search term dachdecker köln:

{
  "imageUrl": "https://plueck-bedachungen.de/assets/images/12-1-2000x1125.png",
  "companyName": "Kristian Plück Bedachungen GmbH",
  "legalForm": "GmbH",
  "website": "https://plueck-bedachungen.de/",
  "domain": "plueck-bedachungen.de",
  "imprintUrl": "https://plueck-bedachungen.de/impressum.html",
  "email": "info@plueck-bedachungen.de",
  "emailMxValid": "Yes",
  "emails": ["info@plueck-bedachungen.de"],
  "phone": "0221-7407779",
  "phoneE164": "+492217407779",
  "fax": "0221-9742306",
  "street": "Schmiedegasse 36",
  "postalCode": "50735",
  "city": "Köln",
  "countryCode": "DE",
  "fullAddress": "Schmiedegasse 36, 50735 Köln",
  "contactName": "Kristian Plück",
  "contactFirstName": "Kristian",
  "contactLastName": "Plück",
  "contactAcademicTitle": "Not Disclosed",
  "contactRole": "Owner",
  "contentResponsible": "Not Disclosed",
  "registerType": "HRB",
  "registerNumber": "HRB 106413",
  "registerCourt": "Amtsgericht Köln",
  "vatId": "DE344813864",
  "supervisoryAuthority": "Not Disclosed",
  "chamber": "Not Disclosed",
  "professionalTitle": "Not Disclosed",
  "supervisoryBoardChair": "Not Disclosed",
  "legalBasis": "Not Disclosed",
  "citesRepealedTmg": "Yes",
  "socialLinks": {
    "linkedin": "Not Disclosed",
    "xing": "Not Disclosed",
    "facebook": "https://www.facebook.com/people/Kristian-Plück-Bedachungen-GmbH/100070663999650",
    "instagram": "https://www.instagram.com/k.plueck_bedachungen_gmbh",
    "youtube": "Not Disclosed",
    "x": "Not Disclosed",
    "tiktok": "Not Disclosed",
    "pinterest": "Not Disclosed"
  },
  "managingDirectors": [
    {
      "fullName": "Kristian Plück",
      "firstName": "Kristian",
      "lastName": "Plück",
      "salutation": "Herr",
      "academicTitle": "Not Disclosed",
      "profession": "Not Disclosed",
      "role": "Owner"
    }
  ],
  "searchTerm": "dachdecker köln",
  "inputUrl": "https://plueck-bedachungen.de/",
  "scrapedAt": "2026-09-28T22:55:08.615Z",
  "error": null
}

A tax advisory partnership from a URL list (partnership register, § 5 DDG):

{
  "companyName": "Senn und Partner Steuerberater",
  "website": "https://steuerberater-senn.de/",
  "imprintUrl": "https://steuerberater-senn.de/impressum",
  "email": "info@steuerberater-senn.de",
  "emailMxValid": "Yes",
  "phone": "+49 (0) 89 4 523 526 0",
  "phoneE164": "+498945235260",
  "fax": "+49 (0) 89 4 523 526 26",
  "fullAddress": "Sonnenstr. 19, Zugang 1, 80331 München",
  "countryCode": "DE",
  "contactName": "Thomas Senn",
  "contactRole": "Legal Representative",
  "registerType": "PR",
  "registerNumber": "PR 2170",
  "registerCourt": "Amtsgericht München",
  "vatId": "DE341245509",
  "legalBasis": "§ 5 DDG",
  "managingDirectors": [
    {
      "fullName": "Thomas Senn",
      "firstName": "Thomas",
      "lastName": "Senn",
      "salutation": "Not Disclosed",
      "academicTitle": "Not Disclosed",
      "profession": "Steuerberater",
      "role": "Legal Representative"
    }
  ]
}

An Austrian company with a Firmenbuch number and ATU VAT ID:

{
  "companyName": "Gecheckt GmbH",
  "legalForm": "GmbH",
  "email": "info@gecheckt.at",
  "phoneE164": "+4314420067",
  "fullAddress": "Mariahilfer Straße 32, 1070 Wien",
  "countryCode": "AT",
  "contactName": "Jure Kodzoman",
  "registerType": "FN",
  "registerNumber": "FN 628985d",
  "registerCourt": "Handelsgericht Wien",
  "vatId": "ATU80839167",
  "citesRepealedTmg": "N/A"
}

The second and third samples are trimmed for readability; real rows carry all 39 fields.

✨ Why choose this Actor

  • Germany, Austria and Switzerland. Handelsregister, Firmenbuch and Swiss UID numbers, DE, ATU and CHE MWST VAT IDs, and the Austrian "postcode, city, street" address format are all understood.
  • Google search built in, one flat price. Type steuerberater münchen and get leads. There is no extra fee per Google page, per website visited or per email check: you pay per lead delivered.
  • The right company's data. Impressum pages also list the chamber, the supervisory authority, the insurer and the web agency, each with their own address and phone. The Actor recognises those blocks and keeps them out of the company fields.
  • Every person, split and labelled. First name, last name, academic title, profession and role for every managing director, board member, owner or partner, including names written inside sentences ("wird durch den Vorstand ... vertreten").
  • Ready for your dialer and CRM. Phones in E.164, the address split into street, postcode and city, and a free MX check on each email domain.
  • No AI guessing. A rule-based parser reads what the page says. When a value is not on the page you get Not Disclosed, never an invented one.

📈 How it compares to alternatives

This Actor Typical Impressum scrapers
Countries Germany, Austria, Switzerland Germany
Lead discovery Google search built in (DE, AT or CH market), directories skipped URL list only, or search billed per results page
Billing One event per lead delivered Per website visited plus per result, plus search and validation fees
People Every director, owner, board member and partner, with title, profession and role One contact person, or names without roles
Register data HRB/HRA/PR/GnR/VR + court, FN, CHE UID, VAT ID Register number and VAT ID
Phone As printed and in E.164 As printed
Email check Free MX lookup per domain Paid add-on, or none
Extraction Rule-based, values read from the page Often LLM-based

Ceiling of the public surface: the Actor reads what each website publishes over plain HTTP. On a realistic mix of Google results it reads a legal notice on about 8 of 10 websites. The rest are sites that only render their Impressum with JavaScript, block automated visitors, or have no Impressum at all; they are listed in the run's FAILED_WEBSITES record and are never charged. Google returns at most 100 results per search term, so for large lists combine a trade with many cities. Deliverability of a mailbox is not verified: emailMxValid tells you whether the email's domain can receive mail at all.

🚀 How to use

  1. Create a free Apify account and get $5 of free monthly usage credit.
  2. Open the German Impressum Scraper page and click Try for free.
  3. Paste your websites into Websites, or type one or more Google search terms such as zahnarzt berlin.
  4. Pick the Google country, set Max Items, and click Start.
  5. Download the leads as CSV, Excel, JSON or XML, or pull them through the API.

Example: 500 roofing companies in Cologne and Düsseldorf that publish an email address.

{
  "searchTerms": ["dachdecker köln", "dachdecker düsseldorf", "bedachungen köln"],
  "googleCountry": "de",
  "resultsPerSearchTerm": 100,
  "onlyWithEmail": true,
  "maxItems": 500
}

💼 Business use cases

Outbound sales into DACH

Search "<your target trade> <city>" for every city in your territory, keep onlyWithEmail on, and import contactFirstName, contactLastName, email and phoneE164 straight into your sequencer. The contact is the managing director or owner, the person who signs.

CRM enrichment

Run your existing account list of websites through the Actor to add the legal entity name, legal form, register number, register court and VAT ID, then match accounts to the commercial register or your ERP by registerNumber.

Agency prospecting

Web and legal-tech agencies can filter citesRepealedTmg = Yes to find German companies whose Impressum still cites the Telemediengesetz, a concrete reason to reach out about a website update.

Supplier and partner checks

Before onboarding a supplier, confirm from its own website the legal entity, who represents it, where it is registered and its VAT ID, and keep the imprintUrl as your source.

🔌 Automating German Impressum Scraper

  • Make / Zapier: run the Actor on a schedule and send new leads to HubSpot, Pipedrive, Salesforce or Google Sheets.
  • Slack: post a message with each run's new companies for your sales channel.
  • Airbyte: load the dataset into your warehouse and join it with your CRM.
  • GitHub Actions: call the Apify API from a workflow to refresh a lead file every week.
  • Google Drive: export every run as an Excel file into a shared folder.

🌟 Beyond business use cases

  • Research: study the legal forms, register courts and professional regulation of small businesses across a region.
  • Personal: check who really runs an online shop before you buy from it.
  • Non-profit: build contact lists of associations (e.V.) and cooperatives (eG) in your city.
  • Experimentation: compare how many companies in a trade still cite the old TMG, or how often the Impressum names a content responsible person.

🤖 Ask an AI assistant about this scraper

I want B2B leads from German company websites. Look at the German Impressum Scraper on the ParseForge Apify page and tell me how to configure a run that finds tax advisors in Munich, Augsburg and Nuremberg through Google, keeps only companies with an email, and exports the managing director's name, email and phone to a CSV for my CRM.

❓ Frequently Asked Questions

🌍 Which countries does it cover?

Germany, Austria and Switzerland. The parser understands the German Handelsregister, the Austrian Firmenbuch and the Swiss UID, and the Google search can target google.de, google.at or google.ch.

🔗 What do I paste as input?

A homepage is enough, with or without https://. The Actor finds the Impressum link by itself. A direct Impressum URL works too.

🔎 How does the Google search work?

Each search term is run on the Google market you pick, and the Actor visits every organic result, up to 100 per term. Directories, marketplaces, social networks, city portals and government sites are skipped by default, and every domain is visited only once per run.

👤 Who is the contact person?

The first person the Impressum names as managing director, board member, owner or partner. If none is named, the person responsible for content. All people found are in managingDirectors with their role.

📧 Are the emails verified?

Each email domain gets a free MX lookup, reported in emailMxValid. That tells you whether the domain can receive mail at all. Individual mailboxes are not tested.

🤖 Does it use AI?

No. The data is read from the page by rules written for German, Austrian and Swiss legal notices, so every value is one the company published. When something is not on the page, the field says Not Disclosed.

❓ Why did some websites return nothing?

Some sites load their Impressum only with JavaScript, block automated visitors, or do not have one. Those websites are listed with the reason in the key-value store record FAILED_WEBSITES. Switch on Add websites without an Impressum to the dataset to get them as rows too. They are never charged.

🕰️ What is citesRepealedTmg?

Since 14 May 2024 the German Impressum duty is in § 5 of the Digitale-Dienste-Gesetz (DDG), which replaced the Telemediengesetz (TMG). Yes means the page still cites the TMG, a sign it has not been updated.

🛡 Do I need a proxy?

Usually not: company websites answer plain requests, and the proxy is off by default. Switch it on if many sites in your list block the run.

⚡ How fast is it?

It reads 10 websites in parallel by default (up to 50). A typical website takes 1 to 5 seconds, so 1,000 leads usually take a few minutes.

💳 How am I charged?

Per lead delivered. Websites without a readable Impressum, rows dropped by Only leads with an email address, Google searches and email checks are free.

🔒 Is this legal?

The Impressum is published because the law requires it, so the data is public. How you contact people is up to you: follow the GDPR and the German UWG rules on advertising by email and phone.

🔌 Integrate with any app

The dataset is available through the Apify API and every Apify integration: Google Sheets, Make, Zapier, Airbyte, Slack, webhooks, and the Apify SDKs for JavaScript and Python.

🔗 Recommended Actors

💡 Pro Tip: browse the complete ParseForge collection.

🆘 Need Help? Open our contact form

⚠️ Disclaimer: this is an independent tool and is not affiliated with, endorsed by, or connected to Google or any company whose website you scrape. It collects only publicly available data.

What input does the German Impressum Scraper - Leads from DE, AT & CH Websites accept?

FieldTypeWhat it doesDefault
startUrls array Websites to read the Impressum from. A homepage is enough (the Actor finds the Impressum link itself), and a direct Impressum URL works too. Paste a list or upload a file with one URL per line. [{"url":"https://steuerberater-senn.de"}
searchTerms array Find websites through Google instead of (or on top of) a URL list. One query per entry, for example 'steuerberater münchen' or 'dachdecker köln'. Every organic result is visited and its Impressum read. ["steuerberater münchen"]
maxItems integer Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000 10
googleCountry string (3 options) Which Google market to search. Germany, Austria and Switzerland return different local websites for the same query. de
resultsPerSearchTerm integer How many organic Google results to visit per search term (Google serves 10 per page, 100 at most). 30
skipDirectories boolean Skip business directories, marketplaces, social networks, city portals and government sites that show up in Google (Gelbe Seiten, Das Örtliche, Jameda, Wikipedia and similar). Their Impressum describes the portal, not a lead. true
excludeDomains array Domains you never want in the results, for example existing customers or competitors (example.de). not set
onlyWithEmail boolean Drop companies whose Impressum shows no email address. Dropped rows are never charged. false
checkEmailMx boolean Look up the MX record of each email domain and report in emailMxValid whether the domain can receive mail at all. Free, and adds well under a second per lead. true
includeFailedWebsites boolean Also write one row per website that could not be read (unreachable, blocked, no Impressum), with the reason in the error column. These rows are never charged. They are always listed in the key-value store record FAILED_WEBSITES either way. false
maxConcurrency integer How many websites are read at the same time. 10
requestTimeoutSecs integer How long to wait for each page before giving up on it. 20
proxyConfiguration object Most company websites answer without a proxy. Switch one on if many websites block the run. {"useApifyProxy":false}

How much does the German Impressum Scraper - Leads from DE, AT & CH Websites cost?

from $3.00 per 1,000 results

Charged forWhat it isPrice each
Impressum lead One company read from its Impressum and delivered to the dataset. Websites without a readable Impressum are free. $0.003 to $0.004

Tiered: the lower figure is the price on a higher Apify plan. Billing and the free credit live on Apify.

How do I call the German Impressum Scraper - Leads from DE, AT & CH Websites API?

One POST returns the dataset directly. Same shape for every scraper in the library, so swapping the slug is the only change.

POST · run and get results
curl -X POST "https://api.apify.com/v2/acts/parseforge~german-impressum-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "startUrls": [
      {
        "url": "https://steuerberater-senn.de"
      },
      {
        "url": "https://www.werk8.de"
      },
      {
        "url": "https://www.von-poll.com"
      },
      {
        "url": "https://www.gecheckt.at"
      },
      {
        "url": "https://avanova.ch"
      },
      {
        "url": "https://www.motel-one.com"
      }
    ],
    "searchTerms": [
      "steuerberater münchen"
    ],
    "maxItems": 10,
    "googleCountry": "de",
    "resultsPerSearchTerm": 30
  }'

What example inputs can I use?

Use these inputs to see how a run is configured.

input.json
{
  "startUrls": [
    {
      "url": "https://steuerberater-senn.de"
    },
    {
      "url": "https://www.werk8.de"
    },
    {
      "url": "https://www.von-poll.com"
    },
    {
      "url": "https://www.gecheckt.at"
    },
    {
      "url": "https://avanova.ch"
    },
    {
      "url": "https://www.motel-one.com"
    }
  ],
  "searchTerms": [
    "steuerberater münchen"
  ],
  "maxItems": 10,
  "googleCountry": "de",
  "resultsPerSearchTerm": 30
}

What do users say about the German Impressum Scraper - Leads from DE, AT & CH Websites?

No reviews yet. Be the first.

How do I report an issue with the German Impressum Scraper - Leads from DE, AT & CH Websites?

We build and maintain this scraper, so a problem with it comes to us. Report it on the Apify listing and the thread stays attached to the scraper where the next person can find it: open an issue.

Broken and urgent, or you would rather not post in public? Write to parseforge@protonmail.com and it reaches the people who wrote it.

What related scrapers can I use?

Run German Impressum Scraper - Leads from DE, AT & CH Websites on Apify All scrapers