ProvenExpert Scraper - DACH Business Leads with Email & Phone
Pricing
$6.50 / 1,000 per business leads
ProvenExpert Scraper - DACH Business Leads with Email & Phone
Scrape ProvenExpert business profiles as B2B leads: email, phone, mobile, website, Impressum, address, rating and recommendation rate. Search any trade in any German city or postcode, or sweep Germany, Austria and Switzerland. $6.50 per 1,000 leads, billed only when a lead has a contact.
Pricing
$6.50 / 1,000 per business leads
Rating
0.0
(0)
Developer
Scrapers Delight
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
6 days ago
Last modified
Categories
Share
⭐ ProvenExpert Scraper — DACH Business Leads with Email, Phone & Impressum
Turn ProvenExpert into a German, Austrian and Swiss B2B lead list.
Type a trade and a German city — Steuerberater in München, Dachdecker in Hamburg, Handwerk
in 10115 — and get one row per business with the contact data outbound teams actually dial and
mail: email, phone, mobile, fax, website, Impressum link, named contact person and full address —
plus rating, rating count, recommendation rate, industry, geo coordinates and whether the owner has
claimed the profile.
ProvenExpert shows a Kontaktdaten block and an Impressum link on business profiles, which is why the contact fill below is so high.
Measured, not estimated: on a 2,738-business search (every Handwerk business ProvenExpert lists in Berlin) this Actor delivered 2,738 of 2,738 listed businesses, 91% with an email, 100% with a website, 89% with an Impressum — and billed 2,738 events for 2,738 rows (a repeat run on the final build: 2,733 of 2,738, 2,733 billed). $6.50 per 1,000 leads, no login, no proxy needed.
💡 What does this Actor do?
It reads ProvenExpert the same way the site does, in three modes:
| Mode | You give it | You get | Coverage |
|---|---|---|---|
search (default) | trades / keywords × German cities or postcodes, optional radius | every business ProvenExpert's own directory search lists, each profile opened for the full contact block | Germany (the site's search only knows German places) |
sitemap | nothing, or a slice of the sitemap + a country filter | the whole public directory, profile by profile — incl. Austria and Switzerland | DE, AT, CH (and any other locale) |
profiles | a list of ProvenExpert profile URLs or slugs | those businesses, enriched | any |
In search mode the Actor uses ProvenExpert's own directory API. That API returns results in a
slightly different order on every request, so a single pass over the result pages misses about 6%
of a large result set and repeats others. This Actor re-sweeps until it has collected every business
the site says it lists (measured on Handwerk / Berlin: pass 1 = 2,585 unique, pass 5 = 2,738 of
2,738; two live runs collected 2,738 and 2,733 of 2,738) and reports the site's own total next to what it collected, per search, in RUN_SUMMARY.
📤 What you get — one row per business
Contact (headline)
| Field | Description |
|---|---|
email | The contact email the business publishes on its profile. Never a ProvenExpert address, never noreply@, never example.com |
emailMatchesWebsite | true when the email's domain is the business's own website domain (info@firma.de + firma.de); false for freemail/agency addresses |
phone / phoneDialable | Landline as shown (089 62816960) and the dialable form from the page's own tel: link |
mobile | Mobile number, when listed separately |
fax | Fax number (shown without a label on the profile; verified as Telefax against a business's own Impressum) |
website / websiteDomain / websites | Primary website (ProvenExpert's utm_ tracking removed), its domain, and every website the profile lists with its label |
impressumUrl | Link to the business's own Impressum page |
impressumText / impressumType | When the Impressum lives inside ProvenExpert instead of on a website, its full text (impressumType: "inline"); otherwise "link" |
contactPerson | The named Ansprechpartner, when the profile lists one |
appointmentUrl | The business's own booking / appointment link, when it has one |
socialProfiles | linkedin, xing, facebook, instagram, youtube, twitter, googleMaps, other |
contactChannels / hasReachableContact | Which of phone / mobile / email / website are present |
Company & address
| Field | Description |
|---|---|
companyName, tagline, description | As published |
industries | ProvenExpert's industry categories, in German (Steuerberatung & Buchhaltung, Handwerk) — search mode |
street, postalCode, city, countryCode | From the profile's structured address |
latitude, longitude | Search mode. ProvenExpert's API labels these the wrong way round; the Actor orients them (Germany's latitude and longitude ranges do not overlap) and drops any pair that fits neither way |
offers | The services the business lists |
Reputation
| Field | Description |
|---|---|
rating, ratingCount | Overall score out of 5 and the number of ratings behind it (null rating at 0 ratings — never a fake 0) |
nativeRatingCount, externalRatingSources | Ratings collected on ProvenExpert itself vs. imported from other platforms (Google etc.) |
publishedReviewCount | Reviews with text in the profile's structured data |
recommendationRate | % of customers who would recommend — only when the business has native ProvenExpert ratings. For imported-only profiles the site prints "Empfehlungsquote : 0%" as a placeholder; this Actor returns null there instead of a false 0% |
topCompetencies, awards, lastRatedAt | As published |
isClaimed | false = a profile ProvenExpert created from public data that the owner never claimed — a warm pitch for review-management and local-marketing agencies |
isVerified, profileCreatedAt, profileActiveSince, profileLastUpdated | Profile status and dates |
Provenance: profileSlug, profileUrl, searchQuery, searchLocation, detailsFetched,
fieldSources (which surface — profile page or directory API — each value came from), scrapedAt.
📊 Field fill — measured on real runs
Three frames, because one sample describes a sample, not the directory. Contact fields first.
| Field | Search: Handwerk / Berlin (all 2,738 listed) | Search: Dachdecker + Elektriker × Hamburg + Köln (all 322) | Sitemap: random German-language profiles (138, two shards) | Sitemap: shard 3c in order (first 150 delivered) |
|---|---|---|---|---|
| any reachable contact | 100% | 100% | 100% | 150 of 153 |
email | 91.1% | 93.5% | 86.2% | 98.0% |
website | 99.9% | 100% | 97.1% | 92.0% |
phone (landline) | 26.6% | 23.0% | 47.8% | 76.0% |
mobile | 0.8% | 0.9% | 5.1% | 32.7% |
impressumUrl / impressumText | 87.6% / 1.2% | 87.3% / 0.9% | 81.2% (link) | 44.7% / 38.7% |
contactPerson | 2.7% | 2.8% | 16.7% | 68.0% |
fax | 0.7% | 0% | 0% | 16.7% |
street / postalCode / city | 100% | 100% | 100% | 94.0% |
rating (≥1 rating) | 93.3% | 94.4% | 75.4% | 14.0% |
recommendationRate | 1.1% | 0.3% | 5.1% | 14.0% |
isClaimed = true | 4.5% | 4.3% | 18.1% | 100% |
What the table says, plainly: email and website are near-universal; a landline is on roughly one
profile in four in the directory search and one in two across the whole sitemap. Use
requirePhone if you only want businesses you can call. Most directory profiles are unclaimed
profiles ProvenExpert built from public data, which is also why the recommendation rate is rare.
The last column is why we quote ranges: read in sitemap order, a shard starts with old profiles the
owners set up themselves — far more phones, mobiles and named contact persons, far fewer ratings.
Sitemap sweep with a country filter: in one shard (6,643 URLs, 2,701 German-language), 30 Austrian and Swiss businesses came out of 237 profiles examined — Austria and Switzerland are ~7–13% of the German-language directory, so an AT/CH sweep reads many German profiles to find them (you are only charged for the ones delivered).
⚙️ Input
| Field | Default | What it does |
|---|---|---|
mode | search | search, sitemap or profiles |
searchTerms | ["Steuerberater"] | Trades, industries or any keyword, in German. Industry names (Steuerberatung & Buchhaltung, Hotels & Unterkünfte) match ProvenExpert's category; other words are free-text matches |
locations | ["München"] | German cities or 5-digit postcodes. Every term runs in every location |
radiusKm | 0 | 0, 5, 10, 20, 30, 50, 100, 150 or 200 km around each location |
onlyInSearchedCity | false | ProvenExpert also lists businesses that serve a place from outside it, even at radius 0. On = keep only businesses whose address is in the searched city (or postcode). Decided before the profile is opened, never charged |
profileUrls | [] | For profiles mode — any ProvenExpert profile URL form, or the bare slug |
countries | DE, AT, CH | Keep only businesses whose address is in these countries |
sitemapShards | all 256 | For sitemap mode — which shards (00–ff) to read; split a full sweep across runs |
sitemapLocales | ["de-de"] | Sitemap sections to read. de-de holds DE, AT and CH businesses (the site has no de-at/de-ch section) |
updatedSince | — | Sitemap mode: only profiles modified since this date — a weekly "new & changed" feed |
maxResults | 50 | Stop after this many businesses (0 = no limit) |
onlyWithContact | true | Skip (and never charge) profiles with no phone, mobile, email or website. Off = deliver them free |
requireEmail / requirePhone | false | Keep only businesses with an email / with a landline or mobile |
fetchProfileDetails | true | Search mode: open each profile for Impressum, mobile, fax, contact person, recommendation rate and the published contact email. Leave it on — see the FAQ on emails |
maxPassesPerSearch | 10 | Re-sweeps per search to beat the shuffled result order (cheap: a re-sweep re-reads result pages only, never an already-delivered profile) |
maxConcurrency | 8 | Parallel profile fetches |
proxyConfiguration | no proxy | ProvenExpert has no anti-bot wall today; a proxy is not needed |
Example inputs
Tax advisors across Munich and 20 km around it, only those with an email:
{ "searchTerms": ["Steuerberater"], "locations": ["München"], "radiusKm": "20", "requireEmail": true, "maxResults": 500 }
Several trades in several cities in one run (each pair is searched):
{ "searchTerms": ["Dachdecker", "Elektriker", "Heizung & Sanitär"], "locations": ["Hamburg", "Köln", "80331"], "maxResults": 0 }
Austrian and Swiss businesses from the first 16 sitemap shards:
{ "mode": "sitemap", "sitemapShards": ["00","01","02","03","04","05","06","07","08","09","0a","0b","0c","0d","0e","0f"], "countries": ["AT", "CH"], "maxResults": 0 }
Weekly delta of new or edited German-language profiles:
{ "mode": "sitemap", "updatedSince": "2026-09-15", "maxResults": 0 }
🧾 Example row (real, from a verified run)
Search Dachdecker in Hamburg, run d6taaUVoSc3TOPjSN (2026-09-23), row copied unedited:
{"profileSlug": "bq-dachbau-gmbh","profileUrl": "https://www.provenexpert.com/de-de/bq-dachbau-gmbh/","companyName": "B&Q Dachbau GmbH","tagline": "Flachdach-Spezialist und Dachdecker in Hamburg - B&Q Dachbau GmbH","industries": ["Handwerk"],"street": "Moorfleeter Deich 112","postalCode": "22113","city": "Hamburg","countryCode": "DE","latitude": 53.53639971466736,"longitude": 10.177569481716334,"phone": "040 7804060","phoneDialable": "0407804060","mobile": null,"fax": null,"email": "info@bq-dachbau.de","emailMatchesWebsite": true,"website": "https://www.bq-dachbau.de/","websiteDomain": "bq-dachbau.de","websites": [{"label": "bq-dachbau.de","url": "https://www.bq-dachbau.de/"}],"impressumUrl": "https://www.bq-dachbau.de/impressum/","appointmentUrl": null,"contactPerson": null,"socialProfiles": null,"rating": 4,"ratingCount": 20,"publishedReviewCount": null,"nativeRatingCount": 0,"externalRatingSources": 1,"recommendationRate": null,"topCompetencies": [],"awards": [],"lastRatedAt": "2025-10-28T22:38:31+01:00","isClaimed": false,"isVerified": false,"profileCreatedAt": "2025-10-28T21:38:23.000Z","profileActiveSince": "2025-10-28","profileLastUpdated": "2025-10-28","offers": ["Dachdecker","Flachdach","Dachklempner","Spengler","Sanierung","Neubau","Hamburg","Qualität","Rundum-Service","Planung","Projektierung","Handwerksbetrieb"],"description": "B&Q Dachbau Hamburg ist Ihr kompetenter Partner für alle Belange rund um das Dach. Als Flachdach-Spezialisten bieten sie umfassende Lösungen für Neubauten und Sanierungen an. Das Unternehmen legt großen Wert auf Kundenzufriedenheit und Qualität, was sich in der sorgfältigen Auswahl hochwertiger Materialien und modernster Techniken widerspiegelt. Die Expertise umfasst nicht nur die Planung und Ausführung von Flachdächern, sondern auch Dachklempner- und Spenglerarbeiten. Komplettservice für Kunden B&Q Dachbau Hamburg bietet einen Rundum-Service, der von der ersten Beratung bis zur termingerechten Ausführung reicht. Die Kunden können sich auf eine umfassende Planung und Projektierung verlassen, die individuell auf ihre Bedürfnisse abgestimmt ist. Das Team sorgt dafür, dass jedes Projekt zuverlässig und zu vollster Zufriedenheit umgesetzt wird. Qualität und Erfahrung Das Unternehmen ist stolz auf seine Mitgliedschaft in der Dachdecker-Innung und die Eintragung in die Zentralkartei für Handwerksbetriebe der Denkmalpflege. B&Q Dachbau Hamburg garantiert höchste Standards in der Qualitätssicherung und legt großen Wert auf die kontinuierliche Weiterbildung seiner Mitarbeiter. Mit exzellenten Referenzen im Flachdachbau und Klempnerhandwerk ist das Unternehmen bestens aufgestellt, um den Herausforderungen des Marktes gerecht zu werden.","avatarUrl": null,"searchQuery": "Dachdecker","searchLocation": "Hamburg","detailsFetched": true,"fieldSources": {"websites": "profilePage","email": "profilePage","phone": "profilePage","companyName": "profilePage","street": "profilePage","postalCode": "profilePage","city": "profilePage","countryCode": "profilePage","rating": "profilePage","ratingCount": "profilePage","nativeRatingCount": "profilePage","externalRatingSources": "profilePage","offers": "profilePage"},"scrapedAt": "2026-09-23T04:17:29.446Z","contactChannels": ["phone","email","website"],"hasReachableContact": true,"impressumText": null,"impressumType": "link"}
💰 Pricing
Pay per event: $0.0065 per business lead ($6.50 per 1,000). No start fee, no monthly fee.
You are charged only for a business that is delivered to your dataset and publishes at least
one way to reach it (phone, mobile, email or website), once per profile per run. You are never
charged for: profiles without any contact (skipped, or delivered free with onlyWithContact: false),
profiles that no longer exist, profiles we could not reach, duplicates, or rows your filters removed.
Rows are charged as they are delivered, so a run that hits your spending cap stops with every
delivered row paid for and nothing unpaid in your dataset.
| Run | Leads | Cost |
|---|---|---|
Default input (maxResults 50) | 50 | $0.33 |
| All tax advisors ProvenExpert lists in Munich | 39 | $0.25 |
| All craft businesses ProvenExpert lists in Berlin | 2,738 | $17.80 |
| 10,000 leads | 10,000 | $65.00 |
🔁 Run summary
Every run writes RUN_SUMMARY to its key-value store: delivered and billed counts, the three kinds
of "nothing" kept apart (profile gone · exists but publishes no contact · unreachable after
retries), and for every search the site's own total, how many unique businesses were collected and
in how many passes. A search whose collected count falls short of the site's total is marked
complete: false and named in the run's status message.
❓ FAQ
Can I search Austria or Switzerland?
Not with search — ProvenExpert's directory search only recognises German places and answers
"location not found" for Wien or Zürich (the Actor tells you so in the status message instead of
failing). Use mode: "sitemap" with countries: ["AT", "CH"]: Austrian and Swiss businesses live in
the de-de section of the site.
Why do I get fewer landlines than emails? Because that is what businesses publish on ProvenExpert: measured 26.6% landline vs 91.1% email on 2,738 Berlin craft businesses. We never fill a missing phone from anywhere else.
Why is fetchProfileDetails on by default when the directory already has an email?
Because the directory API's email is the account email, not always the published contact. On
2,738 Berlin profiles, 222 profiles showed no email on the page but still had one in the API — 218 of
those did not match the business's own domain (five were the Handwerkskammer Berlin's info@, two
were example.com). On 62 Hamburg roofers showing an email on both, 3 disagreed and the API side was
the managing web agency's address. With details on, every email you get is the one on the public
profile. With details off, emails come from the API and fieldSources.email says searchApi.
Where does the Impressum come from?
From the profile's Kontaktdaten block: usually a link to the business's own Impressum page
(impressumUrl); for ~1% the business typed it into ProvenExpert and we return the full text
(impressumText).
What is isClaimed?
ProvenExpert creates profiles from public data for businesses that never signed up.
isClaimed: falseWhy is recommendationRate usually null?
It exists only for ratings collected on ProvenExpert itself. For profiles whose ratings are all
imported (most of them), the site prints "Empfehlungsquote : 0%" as a placeholder — returning that
as 0% would tell you every customer refused to recommend them.
Why does a search for München return businesses in Oberhaching?
Because ProvenExpert lists businesses that serve a place, not only those inside it — even at radius
0. Measured: Steuerberater / München 26 of 39 with a München address; Dachdecker / Köln 51 of
139; Handwerk / Berlin 2,050 of 2,738. Turn on onlyInSearchedCity to keep only the ones inside;
the check uses the directory's own address before the profile is opened, and nothing filtered is
charged.
How do I get every business in a big city?
Set maxResults: 0. The Actor pages through everything and re-sweeps until it has every business
the site lists; Handwerk / Berlin (2,738 businesses) took about 6 minutes.
Are the phone numbers normalised?
No. phone is exactly as the business shows it and phoneDialable is the page's own tel: link. We
never rewrite, complete or guess a number.
Can it scrape the reviews themselves? No — this Actor is built for contact leads. It returns the rating, counts, recommendation rate and top competencies per business, not individual review texts.
Does it need a proxy or a login? Neither. ProvenExpert has no anti-bot wall today and all data is public. If that ever changes, switch the Proxy input to Apify Proxy with the RESIDENTIAL group selected (a proxy with no group chosen is not available on every Apify plan).
How fresh is the data?
Live: every run reads ProvenExpert at run time. profileLastUpdated tells you when the business last
edited its profile.
⚠️ Data limits
- Search is Germany-only by the site's design; AT/CH need the sitemap sweep, which reads many German profiles to find them.
industries,tagline,description, geo andlastRatedAtcome from the directory search and are empty insitemapandprofilesmode (the profile page does not carry them).- Landline fill is ~27% in the directory search — that is the source, not the parser (checked: every profile page carrying a phone icon produced a phone, 116 of 116 across three shards).
- The directory search lists only the part of ProvenExpert that is enrolled in its search (e.g. 39 tax advisors for Munich); the sitemap covers the whole public directory (~1.7M URLs across all languages).
faxis unlabelled on ProvenExpert; we verified the meaning against one business's own Impressum.
⚖️ Disclaimer
This Actor is independent and not affiliated with ProvenExpert or Expert Systems AG.