German Imprint Scraper avatar

German Imprint Scraper

Pricing

from $2.52 / 1,000 results

Go to Apify Store
German Imprint Scraper

German Imprint Scraper

An Actor that automatically locates and scrapes key contact details from German website imprint pages (Impressum). It extracts information such as company name, address, phone numbers, emails, and decision-makers (Entscheider, Entscheidungsträger)

Pricing

from $2.52 / 1,000 results

Rating

3.9

(3)

Developer

Dominic M. Quaiser

Dominic M. Quaiser

Maintained by Community

Actor stats

19

Bookmarked

581

Total users

20

Monthly active users

4 days ago

Last modified

Share

A Apify Actor designed to find and extract contact and legal information from German imprint pages ("Impressum"). Simply provide a list of website homepages, and the actor will automatically locate the imprint page and scrape key details like company name, address, phone number, email, and commercial register number.

Beta Version Notice: This actor is currently in beta. While it's fully functional and returns results, you may encounter occasional quirks or incomplete features. I welcome your feedback! Please report any issues or suggestions you have.

💡 Features

  • Automatic Imprint Page Discovery: Intelligently crawls websites to find the correct imprint page from your starting URLs.
  • Selective Data Extraction: Choose exactly which data points you need, from basic contact info to advanced details like company decision-makers.
  • Dual Fetching Technology:
    • HTTP Mode: A fast, lightweight method for scraping simple, server-rendered websites.
    • Headless Browser Mode (Playwright): A powerful option for modern, JavaScript-heavy websites. The actor can be configured to use this mode for all sites or as an automatic fallback if the standard HTTP method fails, ensuring maximum success rates.
  • Proxy Support: Integrates seamlessly with Apify's proxy service to handle IP rotation and avoid blocking.
  • Customizable Output: Include optional metadata or error records for detailed analysis and troubleshooting.
  • Structured JSON Output: Delivers clean, well-structured data ready for use in your applications, databases, or CRM systems.

📥 Input Parameters

Configure the actor's behavior using these fields in the Apify Console Input tab or via API:

FieldTypeDescriptionDefaultRequired
startUrlsArrayEnter the homepage URLs of the websites to process.[{ "url": "https://www.vita-cola.de/" }]Yes
fieldsToExtractArrayChoose the specific pieces of information you want to collect.All fieldsNo
usePlaywrightBooleanUse a headless browser for all websites. Slower but more reliable for JavaScript-heavy sites.falseNo
metaDataBooleanInclude technical details in the output.falseNo
errorOutputBooleanInclude a row in the output for each website that failed to process.falseNo
debugLogBooleanGenerate a verbose log for troubleshooting.falseNo
proxyConfigurationObjectProxy settings. Apify Proxy is recommended.{ "useApifyProxy": true }No

📤 Output Data Structure

The exact fields depend on your fieldsToExtract selection.

Example Output

{
"start_url": "https://beispielbusiness.de/",
"imprint_url": "https://beispielbusiness.de/impressum",
"company_name": {
"name": "Beispielbusiness GmbH",
"confidence": 1
},
"business_address": {
"full_address": "Walzmühlenstraße 14, 43219 Ostenfurt",
"street": "Walzmühlenstraße",
"house_number": "14",
"postal_code": "43219",
"city": "Ostenfurt"
},
"phone_number": {
"phone_1": "+493012345678"
},
"fax_number": {
"fax_1": "+493012345679"
},
"emails": {
"email_1": "kontakt@beispielbusiness.de"
},
"register_number": {
"number": "HRB 30817",
"court": "Amtsgericht Ostenfurt"
},
"vat_id": {
"vat_id": "DE123456788"
},
"social_media": {
"linkedin": "https://www.linkedin.com/company/beispielbusiness"
},
"decision_makers": [
{
"name": "Katrin Wendeler",
"title": "Geschäftsführer",
"confidence": 0.95,
"salutation": "Frau"
},
{
"name": "Markus Hollenbach",
"title": "Geschäftsführer; Inhaltlich verantwortlich",
"confidence": 0.95,
"salutation": "Herr"
}
],
"metadata": {
"domain": "beispielbusiness.de",
"fetch_method": "http",
"fallback_attempted": false,
"scraped_at": "2025-08-28T12:04:48.003780"
}
}

Note: The numbered outputs like emails and phone numbers are sorted by confidence in how likely they are the main contact data for the company.

📊 Extractable Data in Detail

You can select any combination of the following fields for extraction:

FieldDescriptionData Structure
company_nameExtracts the company name with a confidence score from 0 to 1 (higher means more confident) and an optional legal_form. Uses rules, with optional eu/jev decisions for ambiguous pages.Object
business_addressParses the full business address into structured components: full_address, street, house_number, postal_code, and city.Object
phone_numberFinds and extracts one or more phone numbers from the page. Results are keyed as phone_1, phone_2, etc.Object
fax_numberFinds and extracts one or more fax numbers from the page. Results are keyed as fax_1, fax_2, etc.Object
emailsFinds and extracts one or more email addresses. The extractor prioritizes emails that match the website's domain.Object
register_numberExtracts the commercial register number ("Handelsregisternummer") and the corresponding registration court (Registergericht).Object
vat_idExtracts the German VAT ID ("Umsatzsteuer-Identifikationsnummer") with checksum validation. Returns single best match in format "DE123456789".Object
social_mediaScans for and extracts links to common social media platforms like LinkedIn, Xing, Facebook, Instagram, etc.Object
decision_makers(Premium) Identifies and extracts the names of key decision-makers ("Entscheidungsträger"), each with a name, title, confidence, and salutation. This feature uses an external NER (Named Entity Recognition) machine learning model to ensure accuracy.Array

💲 Pricing

This actor uses a pay-per-event pricing model. You are charged based on your usage, ensuring you only pay for what you need. The costs are as follows:

  • Actor Start: $0.10 per run
  • Per Website:
    • Website Processed: $0.0004 for each URL from your input list
    • Successful Result: $0.0026 for each website where data is successfully extracted
    • Decision Maker Extracted: $0.0006 for decision-makers found per website (this is in addition to the successful result charge)
    • Maximum Sum: $0.0036 per Website
  • Per 1000 Websites:
    • Website Processed: $0.40 for 1000 URL from your input list
    • Successful Result: $2.60 for 10000 websites where data is successfully extracted
    • Decision Maker Extracted: $0.60 for decision-makers found per 1000 websites (this is in addition to the successful result charge)
    • Maximum Sum: $3.60 per 1000 Websites

⚙️ Usage

  1. Input URLs: Go to the Input tab and paste the homepage URLs of the websites you want to scrape.
  2. Select Data: In the fieldsToExtract dropdown, select all the data points you wish to collect.
  3. Configure Settings: Adjust settings like usePlaywright or proxyConfiguration as needed.
  4. Start the Actor: Click the Start button.
  5. Get Data: Once the run is finished, find your results in the Storage → Dataset tab.

Optional eu/jev company-name decisions

Set JEV_API_KEY in the server environment to enable eu/jev for company_name extraction in both Apify and platform mode. JEV_API_URL defaults to https://eu-jev.com; JEV_MODEL defaults to the pinned eu-jeff-1.0.0 release. See .env.example for configuration. Supply these variables through Apify environment settings or your container's environment; this project does not automatically load a local .env file.

Names with a legal form close to the business address use the rules without an API call. For other pages, rules rank candidates from the imprint, address, homepage metadata, copyright, and website domain. eu/jev chooses among those candidates; uncertain decisions can make two additional calls with shuffled options. The API receives page text, the domain, the page title, and candidate names. Its usage is billed to the account associated with JEV_API_KEY.

Without a key, extraction uses the rules alone. Timeouts, invalid responses, service errors, or exhausted credits fall back to the ranked rule result. Calls are limited to two at a time, repeated failures pause further calls, and rate-limit responses with Retry-After pause calls for that interval. The shared HTTP client closes when the Actor or platform service shuts down.

This configuration is separate from NER_API_URL / NER_API_KEY, which continue to control the decision_makers extractor. The company-name output keeps its name, confidence, and optional legal_form fields. See the eu/jev API documentation for the API contract.

Optional salutation lookup

Each decision maker has a salutation of "Herr", "Frau", or null. Clearly feminine singular roles such as Geschäftsführerin set "Frau" directly.

Set KRAKE_API_KEY in the server environment to fill unresolved salutations through the Krake API after names are deduplicated, in both Apify and platform mode. KRAKE_API_URL defaults to https://api.krake.run. Supply these variables the same way as the eu/jev settings above. Lookups are billed to the account associated with KRAKE_API_KEY.

Without a key, only role evidence is used and no additional requests are made. Unknown or ambiguous given names remain null, and lookup failures never remove a person from the output. See docs/decision-maker-salutation.md for request details and failure handling.

🤖 Other Actors

🔗 Combine with Other Actors for Powerful Workflows.

You can enhance your data processing pipelines by combining the German Imprint Scraper with other Apify actors.

For example, you might also check out:

🎯 Use Cases

  • Lead Generation: Build targeted contact lists for sales and marketing.
  • Compliance & Verification: Check for legally compliant imprint information.
  • Market Research: Aggregate data on companies in a specific industry or region.
  • Data Enrichment: Enhance existing company profiles with official contact and registration details.

You are solely responsible for determining the legality of your use of this actor and the data it generates. The scraping and handling of data, particularly personal information, is subject to complex legal frameworks like the General Data Protection Regulation (GDPR/DSGVO), copyright laws, and the terms of service of the websites you scrape. It is your responsibility to ensure your use case is compliant with all applicable laws. This text does not constitute legal advice.

GDPR Notice: "Decision Makers" Feature

Please be aware that the decision_makers feature uses an external API hosted on a private server in the European Union for data processing.

  • What is Processed: The text of the imprint page is sent to this API to identify personal names.
  • Why: This is necessary for the Named Entity Recognition (NER) model to accurately extract decision-makers.
  • Data Controller: You, the user, are the data controller. The actor's developer acts as the data processor for this specific task.
  • Location & Compliance: All NER processing for this feature occurs within the EU (Germany) and is subject to GDPR (DSGVO).
  • Data Storage: The NER service processes the text in-memory without storing or logging it.
  • Salutation Lookup: Unresolved given names are also sent to api.krake.run. Krake stores these inputs and results as API jobs. The salutation request contains the given name and an empty salutation.
  • Important: This processing is external to the Apify platform and is not covered by Apify's DPA. By using this feature, you acknowledge this separate data processing activity.

GDPR Notice: Company-Name Extraction (eu/jev)

For ambiguous pages, the company_name extractor may send data to the eu/jev API (eu-jev.com), an external service that chooses between candidate company names.

  • What is Processed: The imprint page text, the website domain, the page title, and the candidate company names. The imprint text can contain personal data.
  • Why: To identify the website operator when the rules alone cannot decide. Pages with a clear legal form near the address are resolved without an API call.
  • Location & Retention: Processed on servers in Germany (Hetzner), operated by Bevelites GmbH (Munich). Request content is not stored, logged, or used for model training.
  • Important: This processing is external to the Apify platform and is not covered by Apify's DPA. By using the company_name field, you acknowledge this separate data processing activity.

🛠️ Maintainer