Impressum & Imprint Scraper – Company Data, VAT Number & ID avatar

Impressum & Imprint Scraper – Company Data, VAT Number & ID

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Impressum & Imprint Scraper – Company Data, VAT Number & ID

Impressum & Imprint Scraper – Company Data, VAT Number & ID

Website domains – or a trade and a city, e.g. dentists in Graz – in, one company record per site out from the imprint (Impressum, legal notice): company name, managing directors (opt-in), address, register number, VAT number (VAT ID) checked in EU VIES, email, phone. Germany, Austria, Switzerland.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Perceptron Data

Perceptron Data

Maintained by Community

Actor stats

0

Bookmarked

14

Total users

5

Monthly active users

15 days ago

Last modified

Share

Imprint & VAT Check

New (13 October 2026): fewer dead ends. Sites that block bots, don't answer or need JavaScript now get a second pass through Apify's Web Fetch, rendered in a browser where needed – in our platform test, 8 of 9 such sites came back complete with a VIES-valid VAT ID.

Paste website domains, get one company row per domain from its Impressum: legal name, address, register number, VAT ID, email and phone. Every EU VAT ID is checked live through the EU's VIES service, and a row without an imprint says why.

Limits: a row is only as complete as the site's imprint – a missing imprint, a blocked site or a timeout is named in the row. Sites this actor cannot read directly – they refuse automated requests, do not answer our server or draw their pages with JavaScript – are searched once more through Apify's own Web Fetch, which Apify bills on your account ($0.0015 per delivered page, at most 6 pages per site; JavaScript pages are rendered in a browser there) – web_fetch: false switches it off. Swiss UIDs cannot be checked (VIES does not cover Switzerland); Germany confirms validity only, without the name. Director names are off by default.

WebsiteStatusCompanyRegisterVAT ID (VIES)E-mail
haribo.comfoundHARIBO GmbH & Co. KG, GrafschaftHRA 22030DE815499929 – validinfo@haribo.com
ritter-sport.defoundAlfred Ritter GmbH & Co. KG, WaldenbuchHRA 242329DE147645259 – validinfo@ritter-sport.de
tuwien.atfoundTechnische Universität Wien, Wien (AT)–ATU37675002 – valid, name matches the VAT registerpr@tuwien.ac.at

Local test run of 12 October 2026: 6 websites in 4.3 seconds. A sixth site, miele.de, refused automated requests and got an error row with the reason blocked instead of an empty one; since 13 October 2026 such sites are searched once more through Apify's Web Fetch, and miele.de came back as Miele Vertriebsgesellschaft Deutschland KG with a VIES-valid VAT ID.

What you are not charged for: duplicate entries (firma.de, https://www.firma.de/ – merged into one row), entries that are not a website, websites the run did not reach before your cost limit or its timeout (all listed in the run report OUTPUT), and the VIES check itself. Rows that report a blocked site or a missing imprint are charged – the status says which. Every run has a start fee of $0.01.

Want to try it first? The Free Imprint & Contact Check returns the identical row for up to 10 websites per run – nothing held back.

How to use – step by step

  1. Click Try for free on this page (a free Apify account is enough) – the form opens with three example websites.
  2. Paste your domains into Websites, one per line – full URLs and messy copy-paste are fine. No list? Type a trade and a place into Search: a trade and a place instead, e.g. Zahnärzte in Hamburg.
  3. Optional: enter Your own EU VAT ID to get a VIES consultation number per check; switch on person names only if you need them.
  4. Click Start. Six websites took 4.3 seconds in a local test run on 12 October 2026; long lists run at 0.25–0.9 websites per second.
  5. Open the Output tab: Companies (one row per website), Contacts only and Evidence (input, status, source page, check time, VIES answer). Export as CSV, Excel or JSON, or read the rows through the API (examples below).
  6. The run report OUTPUT in the key-value store counts the rows per status and lists duplicates, unusable entries and websites not processed – ready for the next run.

Imprint & VAT Check output: six websites with status, company, city, register number, VAT ID with VIES result and e-mail – run of 12 October 2026

You have the domains. Paste them – one row comes back per distinct website. Duplicates (firma.de, https://www.firma.de/, FIRMA.de/kontakt) are merged into one row before anything is fetched.

You don't have the domains. Type the trade and the place instead:

{ "search": "Zahnärzte in Hamburg", "max_companies": 25 }

The businesses are looked up in OpenStreetMap, and every website found is then enriched from its imprint. About 180 trades are recognised, in German and English – dentist, Steuerberater, roofer, Bäckerei, Autohaus, Rechtsanwalt, Hotel, Elektriker, Physiotherapie and so on, including plurals. Places can be a city, a district, a county or a whole state (Hamburg, Landkreis Rosenheim, Bayern).

For a trade the list does not know, pass the OpenStreetMap tag yourself:

{ "osm_filter": "[\"office\"=\"company\"]", "location": "Wien" }

What a search actually returns

Nine searches across trades, city sizes and all three countries, run on the platform on 28 September 2026, five companies requested each:

SearchRowsWith nameWith e-mailWith VAT IDRuntime
Steuerberater Wien 🇦🇹5543103 s
Rechtsanwälte München5543102 s
Apotheken Leipzig5522130 s
Autohäuser Stuttgart553253 s
Elektriker Köln553299 s
Restaurants Zürich 🇨🇭554228 s
Hotels Berlin541134 s
Dachdecker Landkreis Rosenheim111113 s
Bäckereien Bayern (whole state)failed–––104 s

City-sized searches work, rural districts are thin, and a whole federal state is too much for the free query service. Swiss VAT numbers are never marked valid because CHE- identifiers are outside the EU's VIES system.

  • Not every business is in OpenStreetMap, and not every entry has a website. Measured on 28 September 2026: hotels in Berlin 76 % with a website, dentists in Hamburg 52 %, bakeries in Munich 35 %.
  • OpenStreetMap's query service is volunteer-run and throttles hard. A busy moment produces a clear message rather than an empty result; the actor retries across three mirrors within a fixed 100-second budget.
  • Attribution travels with the data. Every discovered row carries dataSource: "© OpenStreetMap contributors" and dataLicense: "ODbL 1.0", because that licence requires it – of you as well, if you republish.
  • The map fields (osmName, osmCategory, osmCity, osmPhone) stay in the row next to the imprint fields, so you can see what came from where. Where they disagree, the imprint wins.

What you get per website

Example values are from a real run of the default input (liebherr.com, 12 October 2026):

FieldExample
input, status, reasonliebherr.com, found, imprint – see the status table below
companyName, legalFormLiebherr-International Deutschland GmbH, GmbH
street, postalCode, city, countryMemminger Straße 120, 88400, Biberach an der Riß, DE
registerType, registerNumber, registerCourtHRB, HRB 640080, Ulm
vatId, vatCountryDE811154028, DE
vatStatus, vatChecked, vatValidvalid, true, true – VIES answered
vatCheckedAt, vatRequestDate, vatRequestIdentifierwhen it was checked, VIES's own answer timestamp, and VIES's consultation number if you give your own VAT ID
vatRegisteredName, vatRegisteredAddress, vatNameMatchwhat the tax register holds, where the member state discloses it, and whether it matches the imprint
email, allEmails, emailNoteinfo.lho@liebherr.com – Liebherr writes it with Cloudflare's e-mail protection, which the actor decodes like a browser does; emailNote says so when an address cannot be read
phone, allPhones, fax+49 7351 41-0, up to 5 numbers
socialProfilesLinkedIn, Xing, Facebook, Instagram, X, YouTube, TikTok
impressumUrl = sourceUrl, foundViathe page the data came from, verbatim, and how it was found
evidence, coverage, matchedOnwhy this page counts as the legal notice, what was checked, what the row is keyed on
checkedAt, schemaVersionwhen the row was made, "2"
completeness, dataQuality0–1 and high / medium / low
duplicateInputsyour other entries that pointed to the same website
contactSourcewhere contact data comes from when it is not the legal notice: footer, structured data, contact page
representativesmanaging directors – only if you switch them on
CountryDuty to publishRegister identifier the scraper reads
🇩🇪 Germany§ 5 DDG (successor to § 5 TMG)HRB, HRA, VR, GnR, PR + Amtsgericht
🇦🇹 Austria§ 5 ECG, § 25 MedienGFN 123456a + Firmenbuchgericht
🇨🇭 SwitzerlandUWG Art. 3(1)(s)CHE-123.456.789 + Handelsregister of the canton

Four-digit Austrian and Swiss postal codes are handled as well – a German-only parser silently drops those addresses.

The VAT check

An imprint states a VAT ID. Whether it is registered is a different question, and only the member state can answer it. This actor asks VIES for every EU VAT ID it finds and reports exactly what VIES said:

vatStatusvatCheckedvatValidMeaning
validtruetrueVIES confirmed the number
invalidtruefalseVIES answered: not registered – a red flag for invoicing
unavailablefalsenullVIES or the member state's register did not answer. Validity is unknown, not invalid
not_checkedfalsenullSwiss CHE- number (outside the EU system), or the check is switched off

VIES is often down or overloaded (MS_UNAVAILABLE, MS_MAX_CONCURRENT_REQ, timeouts). Each check is tried up to three times with growing pauses; when a member state keeps failing it is paused for a minute instead of being asked for every company, and all unanswered checks get a second pass at the end of the run. The row says how it went (vatCheckNote). Measured on 12 October 2026: VIES answered MS_MAX_CONCURRENT_REQ for Germany during a run; both German numbers came back valid in the second pass.

  • vatRequestDate is VIES's own timestamp of the answer – your evidence of when the number was valid. Enter your own EU VAT ID in requester_vat_id and VIES also issues a consultation number (vatRequestIdentifier); per the VIES API documentation it is only issued with requester data. If VIES rejects your ID, the checks still run, without the number.
  • Austria, Italy, Spain and most other member states also return the registered name and address, so you can cross-check the imprint against the register in the same row (vatNameMatch).
  • Germany discloses validity only – no name, no address. That is a limit of the German tax authority, not of this actor.

It costs you nothing extra and usually adds well under a second per company; a VIES outage can add up to about a minute to a run.

This actor is not affiliated with or endorsed by the European Commission, which runs VIES.

Input

{
"websites": ["liebherr.com", "frischpack.de", "tuwien.at", "sbb.ch"],
"validate_vat": true,
"requester_vat_id": "",
"allow_contact_page": true,
"include_person_names": false
}

Paste domains, full URLs or a messy copy-paste – they are normalised. Each distinct website gives exactly one row (its input field is your entry as you typed it). Entries that point to the same website are merged into that row (duplicateInputs); entries that are not a website at all (Thomann GmbH, hornbach,de) give no row – both are listed in the run report (OUTPUT in the key-value store), so nothing disappears silently.

Output (shortened)

Real row from 12 October 2026 (tuwien.at; the legal notice writes its e-mail address as "pr @ tuwien.ac.at"):

{
"input": "tuwien.at",
"website": "https://tuwien.at",
"status": "found",
"reason": "imprint",
"companyName": "Technische Universität Wien",
"street": "Karlsplatz 13",
"postalCode": "1040",
"city": "Wien",
"country": "AT",
"vatId": "ATU37675002",
"vatStatus": "valid",
"vatChecked": true,
"vatValid": true,
"vatCheckedAt": "2026-10-12T18:58:04Z",
"vatRequestDate": "2026-10-12T18:58:04.279Z",
"vatRegisteredName": "Technische Universität Wien",
"vatRegisteredAddress": "Karlsplatz 13 AT-1040 Wien",
"vatNameMatch": true,
"email": "pr@tuwien.ac.at",
"phone": "+43 1 58801 0",
"socialProfiles": { "linkedin": "https://www.linkedin.com/school/tuwien" },
"impressumUrl": "https://www.tuwien.at/tu-wien/kontakt/impressum",
"impressumFound": true,
"foundVia": "footer link",
"evidence": "title + heading + URL name the legal notice; 3 legal-notice terms, register/VAT number, postal address, e-mail/phone",
"coverage": "start page, 1 imprint link",
"dataQuality": "high",
"checkedAt": "2026-10-12T18:58:04Z",
"schemaVersion": "2"
}

What does a run cost?

WebsitesCost
100$0.51
1,000$5.01
10,000$50.01

$5.01 per 1,000 websites on the Apify free plan ($0.01 per run start plus $0.005 per website). Plainly:

  • Every row is charged, including rows that say a site was blocked, unreachable, drawn by JavaScript or has no legal notice – the status tells you which, so you can see what you paid for.
  • Duplicates and unusable entries produce no row and cost nothing. In a test list of 45 entries, 4 duplicates and 2 non-websites were merged or reported instead of charged (39 rows instead of 42).
  • If you set a maximum cost per run, the actor stops starting new websites when the limit is reached and says so in its status ("maximum cost per run reached – N of M websites processed"); the rest is listed in OUTPUT.
  • Web Fetch is billed by Apify, not by this actor. A site this actor cannot read directly – it refuses automated requests (in a test list of 39 large DACH websites 8 did, 12 October 2026), does not answer our server, or draws its pages with JavaScript – is searched once more through Apify's own Web Fetch actor: its start page (the German version first), the site's own legal-notice links and, failing those, a contact page – at most 6 pages per site; JavaScript pages are rendered in a browser there. It runs on your Apify account and Apify bills it there: $0.0015 per delivered page on the free plan plus $0.00005 per call start (Apify Store, 13 October 2026) – usually 2–3 pages, at most about $0.01 for such a site; sites read directly cost nothing extra. Rows read this way say foundVia: "Apify Web Fetch" (or "Apify Web Fetch (browser)" when rendered), and coverage counts the pages. web_fetch: false switches it off; such sites then keep their reason (blocked, timeout, unreachable, js_only).

Honesty about coverage

Not every website has a readable imprint, and pretending otherwise would waste your money. Every row carries status and reason, and note explains it:

statusreasonMeaning
foundimprintthe legal notice was read (foundVia: footer link, known path, sitemap, the site's public WordPress API, a section of a one-page site, or Apify's Web Fetch)
foundcontact_pageno legal notice found; the contact page was read instead – switch allow_contact_page off if you only want real imprints
not_foundno_imprintthe site answered, but no legal notice was found on the linked pages or the usual paths (coverage lists what was checked). For a .de site the note points out that one is mandatory (§ 5 DDG) – as something to check, not as a verdict
errorblockedthe site refused automated requests (401/403/429 or a bot-challenge page). The actor stops after two direct tries; with web_fetch on (the default) Apify's Web Fetch then searches the site, and the row stays blocked only when that fails too
errorjs_onlythe site draws its legal notice with JavaScript – it very likely has one. With web_fetch on, its pages are first rendered in a browser by Apify's Web Fetch; the row stays js_only only when that shows no legal notice either. Contact data the site shows without JavaScript (start page footer, its JSON-LD, the contact page) is still returned, marked in contactSource and never as the legal notice
errortimeoutthe site did not answer in time (12 s per page, 45 s per website at most) – and, with web_fetch on, not through Apify's Web Fetch either
errorunreachableno connection: refused, TLS failure, server errors only – and, with web_fetch on, not through Apify's Web Fetch either
errordnsthe domain does not exist – found out in well under a second instead of waiting

Before a site counts as js_only, the ways that need no JavaScript are tried: the pages a legal-notice overview links to, the sitemap, and – on WordPress sites with a JavaScript front end – the site's public WordPress API. Measured on 12 October 2026 with the five JavaScript-heavy sites of our test list: ÖBB and Doppelmayr were read completely that way, Manufactum gave its footer data, and dm and Migros offer nothing without JavaScript. With web_fetch on, the site is then rendered in a browser by Apify's Web Fetch (test on the Apify platform, 13 October 2026: fischer.de and festo.com came back complete with their VIES-valid VAT IDs; sto.de did not in a local test).

Pages that merely mention "Impressum" – a 404 page with a footer link, the start page an unknown path redirects to, a bot challenge – are not reported as a legal notice. A legal notice found under a guessed path that names a company without the site's name (a subsidiary, an operator) is flagged in note.

You never get an empty row without an explanation of why it is empty. The run report (OUTPUT in the key-value store) counts the rows per status and lists duplicates, unusable entries and websites not processed.

Use it from code (Python, JavaScript, cURL)

Get your API token under Settings → API & Integrations in Apify Console.

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("perceptr0n/imprint-impressum-website-contact-scraper").call(run_input={
"websites": ["haribo.com", "ritter-sport.de", "tuwien.at"],
})
# apify-client 3.x; with versions 1–2 use run["defaultDatasetId"]
for row in client.dataset(run.default_dataset_id).iterate_items():
print(row["input"], row["status"], row.get("companyName"), row.get("vatId"), row.get("vatStatus"))

JavaScript (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('perceptr0n/imprint-impressum-website-contact-scraper').call({
websites: ['haribo.com', 'ritter-sport.de', 'tuwien.at'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.map((row) => [row.input, row.status, row.companyName, row.vatId, row.vatStatus]));

cURL – one call, rows in the response. The synchronous endpoint waits at most 5 minutes, so use it for lists of up to about 50 websites and the clients above for longer ones:

curl -X POST "https://api.apify.com/v2/acts/perceptr0n~imprint-impressum-website-contact-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"websites": ["haribo.com", "ritter-sport.de", "tuwien.at"]}'

Use it from an AI agent (MCP)

Add the Apify MCP server with this actor as a tool to Claude, Cursor, VS Code or any other MCP client:

https://mcp.apify.com?tools=perceptr0n/imprint-impressum-website-contact-scraper

The client signs in to Apify on first connection, or you set the header Authorization: Bearer <APIFY_TOKEN>. The agent sends websites (or a search such as Steuerberater in Wien) and reads status, companyName, registerNumber, vatId and vatStatus per website; reason and note say why a row is empty.

What the agent's runs cost (live price on 12 October 2026): $0.005 per website row on the Apify Free plan (less on paid plans) plus $0.01 per run start. Duplicates, unusable entries and websites the run did not reach are free.

Data protection

  • For companies with a legal form (GmbH, AG …), the imprint holds company data: name, legal form, address, register number, VAT ID. For sole traders, name and address are personal data.
  • Person names are off by default. Managing directors and editorial contacts are personal data under GDPR; include_person_names must be switched on deliberately, and the input form says so. While it is off, no person name slips out through another field either: a sole trader's name is not returned as the company name (companyNameWithheld says why), personal e-mail addresses like firstname.lastname@ are left out, and a VIES-registered name that is a person's is dropped.
  • Only publicly reachable pages are fetched, at a polite request rate, with no login and no circumvention of any access control.
  • Using contact data for cold e-mail in Germany requires prior consent under § 7 UWG. That is your call to make, not this actor's – but you should know it before you buy a list of addresses from anyone.

FAQ

Is there an API for German company data? Register data is sold by commercial data providers. This actor takes another route: the imprint is a company record that commercial websites in Germany, Austria and Switzerland publish themselves, so no register licence is needed.

What is an Impressum? The legal notice a commercial website must carry: who runs it, where they are registered, how to reach them. In Germany it is required by § 5 DDG, in Austria by § 5 ECG, in Switzerland by UWG Art. 3(1)(s).

Does it work for Austrian and Swiss sites? Yes – Firmenbuch numbers, Swiss UIDs and four-digit postal codes are all parsed, and the country field tells you which set of rules applied. Swiss UIDs are not checked: VIES covers EU VAT IDs only.

Can I get the managing director's name? Yes, via include_person_names, but read the data protection note first. It is off by default on purpose.

Is the VAT number checked or just copied? Checked, live, against the EU's official VIES service. vatChecked is true only when VIES actually answered; vatStatus says valid, invalid, unavailable (VIES down – validity unknown) or not_checked.

What happens if a website has no imprint? You get a row with status: not_found and, if you allowed it, whatever the contact page held (reason: contact_page). A blocked, dead or JavaScript-only site is an error row with its reason. You are never left guessing.

Can I feed it 50,000 domains? Yes, but give it time: five websites are checked at once with a polite delay, which measured 0.25–0.9 websites per second on 12 October 2026 depending on how many sites answer slowly – about 20–65 minutes per 1,000. Raise the run timeout for big lists. Shortly before the timeout – two minutes on runs of eight minutes or more, a quarter of the time limit (at least 15 seconds) on shorter runs – the actor stops starting new websites, stores what it has and lists the rest in OUTPUT, so you can re-run exactly those. The cost scales linearly: $0.005 per website plus $0.01 per run start.

Does it need a proxy? It uses none. No login, no cookies, no API key, no CAPTCHA solving in this actor. Sites it cannot read directly – in a mixed test list of 39 large DACH websites 8 turned automated clients away (12 October 2026); others do not answer our server or need JavaScript – are searched once more through Apify's own Web Fetch (billed by Apify on your account, see "What does a run cost?"); with web_fetch: false they keep their reason (blocked, timeout, unreachable, js_only).

Changelog

  • 13 October 2026 (evening) – Apify's Web Fetch now covers every site this actor cannot read directly: besides sites that refuse automated requests also sites that do not answer our server (timeout, no connection) and sites that draw their legal notice with JavaScript, which are rendered in a browser there. It reads the start page in its German version, the site's own legal-notice links and, failing those, a contact page – at most 6 pages per site (before: 3, refusing sites only). Footer links labelled "Impressum / AGB" are followed (idealo.de). Test on the Apify platform, 13 October 2026: of nine sites our own requests could not read, eight came back complete with a VIES-valid VAT ID (Miele, idealo, Trumpf, Zalando, Hansgrohe, Würth and – rendered in a browser – fischer and Festo); hornbach.de stayed blocked.
  • 13 October 2026 – International sites that show visitors from abroad another country's version (Apify runs in the US; haribo.com then linked the legal notice of HARIBO of America) are read in their German version when the start page names one on the same site – the note says so. A "Website-Development by:" credit is no longer taken as the company name.
  • 13 October 2026 – Sites that refuse automated requests (bot challenge, HTTP 403) are now read through Apify's Web Fetch: start page and legal notice, at most 3 pages, billed by Apify on your account ($0.0015 per delivered page); input web_fetch, on by default. Test of 13 October 2026: wuerth.de, refused behind an Akamai challenge from data centres, came back complete with its VIES-valid VAT ID.
  • 12 October 2026 – Repairs from a field-by-field sample against the source: imprint links written with HTML entities are followed (voestalpine.com was reported without one); a bot-challenge page is reported as blocked, not as "no imprint"; when a legal notice lists several group companies, name, address, register number, VAT ID, phone and e-mail come from the publisher's block only (verbund.com); a legal notice on another domain is read when the start page links it as its own and it names the site's company (note says so); e-mail addresses behind Cloudflare's e-mail protection or written as "info (at) …" / "office @ …" are read; phone numbers with labels such as "Infoline" or "p:" or alone on their line, "FIRMENBUCH-NUMMER" and names like "… AS GmbH" are recognised; an Austrian company gets its Firmenbuch number, not a subsidiary's HRB; trademark sentences and menu entries are no longer taken as the company name; an unfilled template legal notice ({{phone}}) gives no data. A run with a time limit of two minutes or less now checks websites instead of stopping before the first one.
  • 12 October 2026 – Sole traders: the VAT register gives the owner's own name, often surname first ("Surname Firstname"). With person names switched off, that name is now withheld and companyNameWithheld says why; before, it could appear as the company name. The same applies to a business that OpenStreetMap lists under its owner's name in search runs.
  • 12 October 2026 – JavaScript sites: the imprint is now also found through the sitemap, the pages an imprint overview links to and the public WordPress API; contact data a site shows without JavaScript is kept and marked in contactSource.
  • 12 October 2026 – A VIES outage is reported as unavailable, never "invalid" (three tries, a second pass at the end of the run). Duplicate entries are merged into one row and not charged; unusable entries are listed in OUTPUT. Every row has status, reason, source page and check time; error rows name the cause (blocked, js_only, timeout, unreachable, dns).

Auf Deutsch: Impressum-Daten aus Websites extrahieren

Domainliste rein, je Website eine Firmenzeile aus dem Impressum raus: Firmenname, Rechtsform, Anschrift, Handelsregisternummer, E-Mail und Telefon. Jede EU-USt-IdNr. wird live über die EU-Prüfung VIES bestätigt; Schweizer UIDs kennt VIES nicht. Fehlt ein Impressum oder blockiert die Seite, steht der Grund in der Zeile. Websites, die der Actor selbst nicht lesen kann – sie weisen automatische Abrufe ab, antworten unserem Server nicht oder bauen ihre Seiten mit JavaScript auf –, durchsucht er ein zweites Mal über Apifys eigenen Web Fetch, JavaScript-Seiten dort im Browser (Apify rechnet das über das eigene Apify-Konto ab: 0,0015 $ je gelieferter Seite, höchstens 6 Seiten je Website; web_fetch: false schaltet es ab).

Ohne eigene Domainliste genügt eine Suche wie Zahnärzte in Hamburg: Die Firmen werden über OpenStreetMap gefunden und anschließend aus ihrem Impressum angereichert. Fällt VIES aus, steht in der Zeile unavailable – nie „ungültig“. Doppelte Einträge werden zu einer Zeile zusammengeführt und nicht berechnet.

Typische Anwendungsfälle: Adresslisten bereinigen und anreichern, Lieferanten- und Kundenstammdaten prüfen, EU-USt-IdNr. prüfen, CRM-Pflege. Hinweis: Werbe-E-Mails an Firmen brauchen in Deutschland nach § 7 UWG eine vorherige Einwilligung.

More from Perceptron Data

ActorWhat it does
Free Imprint & Contact CheckThe same company row, free, for up to 10 websites per run
Advertiser Check (Google & Bing)Company list in, one row per company out: Google ads, Bing ads, ad counts, accounts
PDF to MarkdownPDF, Word, Excel and PowerPoint to Markdown for AI – tables as JSON, OCR for scans
Research AgentA question in, cited passages out – every source graded by evidence level
App Store & Google Play DataApp IDs or App Store keywords in, one row per app out, plus App Store reviews
Arbeitsagentur JobsGerman job listings from the Jobbörse of the Bundesagentur für Arbeit
kununu Employer DataEmployer score vs. industry, salary ranges, benefits and reviews for DACH companies
Messe München ExhibitorsExhibitor lists of bauma, IFAT, BAU and more
Koelnmesse ExhibitorsExhibitor lists of Anuga, ISM, imm cologne and more
TED TendersEU public tenders and contract awards from TED
MaStR Energy AssetsSolar, wind and storage units in Germany with operator and capacity
EUDAMED Medical DevicesEU medical devices, manufacturers and certificates
Data Source FinderFree: tells you which ready-made scraper covers your data source

Support

Bug reports are welcome in the Issues tab.