Håndværker.dk Scraper - Danish Tradesperson Leads with CVR avatar

Håndværker.dk Scraper - Danish Tradesperson Leads with CVR

Pricing

from $3.00 / 1,000 per tradesperson firm returneds

Go to Apify Store
Håndværker.dk Scraper - Danish Tradesperson Leads with CVR

Håndværker.dk Scraper - Danish Tradesperson Leads with CVR

$3 per 1,000 firms with the contacts their profile shows; $8 per 1,000 with the phone and email the site holds but hides. Danish tradespeople from Håndværker.dk (105,000+): phone, email, CVR, address, trade, rating. Filter by 24 trades, postcode, city; all-Denmark sweep.

Pricing

from $3.00 / 1,000 per tradesperson firm returneds

Rating

0.0

(0)

Developer

Scrapers Delight

Scrapers Delight

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

🔨 Håndværker.dk Scraper — Danish Tradesperson Leads with Phone, Email and CVR

Export Danish tradesperson firms from Håndværker.dk — Denmark's largest craftsman directory, which lists 105,414 firms in its search index (measured 2026-09-23). Every row is one firm with its CVR number, phone and email, street address, postcode, city, coordinates, trade, rating and review count. Switch on profile details to add the advertising-protection flag (Reklamebeskyttet), company status, contact person, Sikkerhedsstyrelsen authorisation numbers and the firm's reviews.

Two prices, you choose:

  • $3 per 1,000 firms (default) — contacts as the site shows them: phone and email only where the firm's profile page displays them.
  • $8 per 1,000 firms for firms delivered with a contact their profile page does not show — switch on includeUndisplayedContacts to get the phone and email Håndværker.dk holds for every firm.

No start fee. No proxy needed.

What does Håndværker.dk Scraper do?

It reads the same search index the site's own "Find håndværker" pages use, so it can filter by any of the site's 24 trades, by postcode or city, by free text, by review count or rating, and by paying membership, and it can walk all of Denmark: a query larger than the index's 5,000-hit ceiling is swept postcode by postcode automatically, plus the firms with no postcode or a postcode the site's own list lacks, so a full sweep is complete by construction and checked against the index's own totals in every run.

Each firm is delivered and charged once, keyed on Håndværker.dk's numeric firm id.

Who uses this data

  • Building-supply chains and manufacturer reps — every active VVS installer, electrician or carpenter in a sales territory, with a phone and email to reach them.
  • Nordic trades-management SaaS (job management, quoting, invoicing) — prospect lists by trade and region, with firm size (employees) and founding year.
  • Home-insurance claims networks — authorised plumbers, electricians and drain contractors by postcode, with their Sikkerhedsstyrelsen authorisation numbers.
  • B2B telemarketing / dialer teams — clean 8-digit Danish numbers with the firm's CVR number.

What you get — every field

Contact fields first. Which phone and email a row carries depends on includeUndisplayedContacts (see Displayed vs. all contacts below).

FieldExampleWhat it is
📞 phone32514559Option off: the phone the profile page displays (null if it shows none). Option on: the phone Håndværker.dk holds for the firm in its search data, exactly as printed (99.5% are a bare 8-digit number).
📞 phoneInternational+45 32514559The same number as +45 XXXXXXXX — only when the printed value is exactly one 8-digit number. Values holding two numbers or a suffix are never reformatted.
✉️ emailfinlow@finlow.dkOption off: the email the profile page displays (profile pages rarely show one). Option on: the email held in the search data, lower-cased; null when the value is not a well-formed address (it is never repaired).
👁️ phoneDisplayedOnProfile, emailDisplayedOnProfiletrue, falseWhether the firm's profile page shows a phone / its email to a visitor.
🔓 undisplayedContactIncludedtrueThis row carries a phone or email its profile page does not show (billed the $0.005 add-on). Always false with the option off.
📞 profilePhone+45 32514559The phone the profile page itself publishes — the firm's own LocalBusiness record, picked by its @id, never a neighbouring firm's. Can differ from the search-data phone.
contactSourceprofile-displayprofile-display (option off) or search-index (option on).
🏢 cvr17284509Danish CVR number, exactly as printed (8 digits).
✅ cvrChecksumValidtrueCVR mod-11 check on the printed number (a check, never a correction).
🏷️ companyName, tradeFINLOW VVS A/S, VVSName and the site's own trade label (never translated).
📍 streetAddress, postalCode, cityHornevej 13, 2770, KastrupRegistered address.
🗺️ latitude, longitude55.625, 12.597Coordinates from the index.
⭐ rating, reviewCount, hasReviews4.7, 2263, trueHåndværker.dk recommendations. rating is null (not 0) when there are no reviews.
📅 yearEstablished, 👷 employees1993, 30As listed.
💳 isPayingMembertruePays for a Håndværker.dk membership (833 firms).
🏆 monthlyCraftsmanBadge, prizeWinnerBadge, climateBadgetrueSite badges ("Månedens håndværker", "Håndværker.dk Prisen" winner, KlimaBadge).
📝 description, coverImageUrl, profileUrlProfile text, image and the profile link.
🔎 searchPartition, scrapedAtZipCode 8000Which query found the row, and when.
profileDetailsStatusokok, profile-gone or unreachable for the firm's profile page.

With includeProfileDetails on (no extra time, no extra charge — the profile page is already read for every firm):

FieldExampleWhat it is
🚫 advertisingProtectedtrueThe Reklamebeskyttet status from the CVR header on unclaimed profiles. null on the member-style template, where the label is printed on every profile and cannot be read per firm.
🏛️ companyStatusAKTIV, NORMAL, OPHØRT, UNDER TVANGSOPLØSNINGCompany status from the CVR header, as printed.
👤 contactPersons["Frank Jensen / Sacha Jensen / Marianne"]Named contact(s) on the profile.
📅 foundingDate, legalName1993-09-27Full founding date and legal name.
🪪 authorisations[{issuer:"Sikkerhedsstyrelsen", type:"Vvs-installatørvirksomhed", number:"VFUL-00347", updated:"17 sep. 26"}]Sikkerhedsstyrelsen authorisations shown on the profile.
🧰 serviceTags["VVS","TV-inspektion","Kloakmester",…]The services the firm lists.
📊 subRatingsPct{"Leverer kvalitetsarbejde":95,…}Rating breakdown (member profiles with reviews).
💬 reviews[{author, rating, title, text}]The reviews embedded in the profile page (up to 5).

Example row (real, from a verified run)

{
"firmId": 15857,
"companyName": "FINLOW VVS A/S",
"trade": "VVS",
"phone": "32514559",
"phoneInternational": "+45 32514559",
"email": "finlow@finlow.dk",
"cvr": "17284509",
"cvrChecksumValid": true,
"streetAddress": "Hornevej 13",
"postalCode": "2770",
"city": "Kastrup",
"latitude": 55.62500611,
"longitude": 12.59730598,
"rating": 4.7,
"reviewCount": 2263,
"hasReviews": true,
"yearEstablished": 1993,
"employees": 30,
"isPayingMember": true,
"monthlyCraftsmanBadge": true,
"prizeWinnerBadge": true,
"climateBadge": true,
"profileUrl": "https://www.haandvaerker.dk/profil/firma/finlow-vvs-as/15857",
"phoneDisplayedOnProfile": true,
"emailDisplayedOnProfile": false,
"profilePhone": "+45 32514559",
"undisplayedContactIncluded": true,
"contactSource": "search-index",
"advertisingProtected": null,
"companyStatus": null,
"contactPersons": ["Frank Jensen / Sacha Jensen / Marianne"],
"foundingDate": "1993-09-27",
"legalName": "FINLOW VVS A/S",
"authorisations": [
{ "issuer": "Sikkerhedsstyrelsen", "type": "Vvs-installatørvirksomhed", "holder": "Finlow Vvs A/S", "number": "VFUL-00347", "updated": "17 sep. 26" },
{ "issuer": "Sikkerhedsstyrelsen", "type": "Kloakmestervirksomhed", "holder": "Finlow Vvs A/S", "number": "KFUL-03592", "updated": "17 sep. 26" }
],
"subRatingsPct": { "Leverer kvalitetsarbejde": 95, "Overholder budgettet": 93, "Rydder godt op efter sig": 95, "Overholder aftaler": 96, "Er god til at lytte til kunden": 95, "Vil du anbefale os": 95 },
"profileDetailsStatus": "ok"
}

(The same firm from two verified runs: the contact fields from a run with includeUndisplayedContacts on, the profile-detail fields from a run with includeProfileDetails on; description, coverImageUrl, serviceTags and reviews trimmed here for length. The email is not displayed on the profile page, so this row was billed $0.003 + $0.005.)

Quick start

Every plumbing/heating firm in Denmark that has a phone (all contacts, $0.008 per firm with a hidden contact):

{ "trades": ["VVS"], "requirePhone": true, "includeUndisplayedContacts": true, "maxResults": 0 }

Electricians and drain contractors in Aarhus C and Copenhagen Ø, with profile details:

{ "trades": ["Elektriker", "Kloakmester"], "postcodes": ["8000", "2100"], "includeProfileDetails": true, "maxResults": 0 }

All of Denmark, every trade (about 105,000 firms, swept postcode by postcode):

{ "maxResults": 0 }

Inputs

InputDefaultWhat it does
tradesallAny of the site's 24 trade labels: Tømrer, Rådgivning, Rengøring og ejendomsservice, Murer, Diverse kategorier, Anlægsgartner/Belægninger, Maler, Elektriker, VVS, Smed, Gulvlægger, Kloakmester, Hovedentreprenør, Tagdækker, Nedrivning, Glarmester, Handymand, Isolatør, Jord og beton, Kølefirma, Gulvafsliber, Varmepumpeinstallatør, Tækkemand, Tagmaler. An unknown label stops the run before any request (nothing charged).
postcodesallDanish 4-digit postcodes (exact match on the firm's postcode).
citiesallExact city names as the site spells them (e.g. "Aarhus C").
searchText—Free text matched by the site's own search (name and profile text).
includeUndisplayedContactsoffOff: phone/email only where the profile page shows them ($0.003 per firm). On: the phone/email held in the site's search data; a firm carrying a contact its page hides costs $0.008 in total.
requirePhone / requireEmailoffSkip firms whose row carries no phone / email (after the option above). With the option off, requireEmail removes almost every firm. Skipped firms are never charged.
onlyPayingMembersoffOnly the 833 paying members.
minReviews / minRating0Review-count and rating floors.
includeProfileDetailsoffAdd the profile-page fields above (no extra time, no extra charge).
maxResults40Stop after this many firms; 0 = no limit.
concurrency3Parallel requests (the site rate-limits around 12).
proxyConfigurationnoneNot needed; direct connections were measured. Falls back to direct if a proxy fails to start.

Displayed vs. all contacts

Håndværker.dk holds a phone and email for most firms in its search data, but a firm's profile page shows a visitor only some of them: unclaimed profiles hide the phone, and profile pages almost never print an email. The actor reads every firm's profile page and lets you choose:

includeUndisplayedContacts off (default)includeUndisplayedContacts on
PhoneOnly where the profile page shows oneThe phone in the site's search data
EmailOnly where the profile page shows oneThe email in the site's search data
Price per firm$0.003$0.003, or $0.008 when the row carries a contact its page hides
Measured: 150 firms, postcodes 5000/9000/6700phone 34.0%, email 0%phone 94.7%, email 78.7% — 146 of 150 carried a hidden contact
Measured: top 100 VVS firmsphone 50%, email 0%phone 100%, email 97% — 100 of 100 carried a hidden contact

phoneDisplayedOnProfile, emailDisplayedOnProfile and undisplayedContactIncluded on every row show exactly what the page displays and what you were billed for.

Pricing

WhatPrice
Each distinct firm delivered (contacts as displayed)$0.003 ($3 per 1,000)
Add-on, only with includeUndisplayedContacts on, per firm whose row carries a phone or email its profile page does not show$0.005 (so that firm costs $0.008 in total)
Firms whose contacts are all displayed, with the option on$0.003 — no add-on
Firm whose profile page could not be read$0.003 — never the add-on
Run start$0
Profile details$0
Firms removed by requirePhone / requireEmail$0
Duplicates across overlapping queries$0 (delivered once)

An empty-input run delivers the default 40 firms for $0.12. One trade such as VVS (3,920 firms) is $11.76 with contacts as displayed, or up to $31.36 with all contacts.

Measured numbers (2026-09-23)

  • Index size: 105,414 firms = 105,286 across the site's 1,373 postcodes + 124 with no postcode + 4 at a postcode the site's list lacks.
  • Search-data contact fill, full census of 103,640 firms: phone 76.9%, email 76.1%, CVR 100%, address 99.9%, coordinates 100%. Reviews: only 3,131 firms (3.0%) have any.
  • Displayed contacts (profile pages): phone 34–50% of firms depending on the frame (above); email 0 of 250 firms on live runs.
  • Completeness: an Anlægsgartner/Belægninger sweep collected 6,363 unique firms against an index total of 6,363 across 1,376 partitions; VVS collected 3,920 of 3,920.
  • Profile details (two frames): 40 paying members — authorisations 37.5%, serviceTags/subRatingsPct/reviews 100%. 120 firms from postcodes 5000/9000/6700 — advertisingProtected known for 106 of 116 unclaimed profiles (56 true), companyStatus 75.8%, contactPersons 99.2%.
  • Speed: every firm needs its profile page, so a run delivers about 2.7 firms per second at the default 3 parallel requests: 20 firms in 8–14 s, 100 in 37 s, 150 in 54 s. One trade of ~4,000 firms takes about 25 minutes; all of Denmark about 11 hours.

Data limits

  • Search-data phone and email: for the ~100,000 profiles the site built from the CVR register they mirror the CVR contact, which is sometimes a registration agent or accountant: one address is on 84 firms and another on 65. The same number can appear on several related firms.
  • profilePhone can differ from the search-data phone (11 of 40 paying members; 5 of 120 unclaimed firms). Both are shipped; neither is merged into the other.
  • The profile's "Ring …" button is Håndværker.dk's switchboard or a tracking number, not the firm's; it is never shipped.
  • advertisingProtected is null on member-style profiles: that template prints "Reklamebeskyttet" on all 41 profiles sampled, so it cannot be read per firm.
  • employees is 1 on 76% of firms — for unclaimed profiles that looks like a default rather than a count. yearEstablished is missing on 26%.
  • No website field: neither the search data nor the profile pages publish one.
  • 98 phones carry a suffix such as -0 and a few emails end in -0: phones ship as printed without phoneInternational; such emails are null, never trimmed into an address.
  • Reviews: only the ones embedded in the profile page (up to 5), not the full paginated history.

FAQ

How many firms are on Håndværker.dk? 105,414 in the search index on 2026-09-23 (the homepage title said "+105.858 håndværkere tilknyttet" the same day).

Can I get every firm in Denmark? Yes — leave filters empty and set maxResults to 0. The actor sweeps all 1,373 postcodes plus the two remainder groups and reports completeness in RUN_SUMMARY.

Why a postcode sweep? The search index answers at most 5,000 hits per query. The densest postcode holds 1,814 firms, so postcode partitions are always complete.

Which option should I pick? Off ($0.003) gives what a visitor of each profile page sees; on gives the phone and email the site holds for the firm, at $0.008 for each firm that carries one its page hides.

What does RUN_SUMMARY tell me? The index's own total for your filter, unique firms collected, duplicates skipped, rows removed by your phone/email requirement, how many rows carried hidden phones/emails and whether they were withheld or included, profile fetch outcomes, and the charged counts per event.

Do I pay for duplicates? No. A firm is charged once per run, keyed on the site's firm id.

Do I pay for firms without a phone when requirePhone is on? No — they are never delivered.

What if my maximum charge runs out mid-run? A row that would need the add-on but only the base fits is delivered with its displayed contacts only; nothing is delivered that was not paid for.

Do I need a proxy? No. The actor ran every test on Apify's own network with no proxy.

What are the trade labels? The site's own Danish labels (VVS, Elektriker, Tømrer, …), copied from the site's data, not translated.

Is the CVR number validated? Each one gets a mod-11 check (cvrChecksumValid); 99.8–99.9% pass. A failing number ships as printed — it is never corrected.

What is advertisingProtected? The CVR register's "Reklamebeskyttet" status as printed on the firm's profile header.

Why is rating null for most firms? Only 3.0% of firms have reviews; a firm with no reviews has no rating, not a rating of 0.

How fresh is the data? Live — every run reads the site's current search data and profile pages.

Other statutory-register and trade-directory lead actors by the same developer cover the UK (NICEIC), Canada (RBQ Québec, HCRA Ontario, HomeStars) and Germany (Impressum contacts).