Gouden Gids Scraper: Dutch Business Phones & Emails avatar

Gouden Gids Scraper: Dutch Business Phones & Emails

Pricing

from $1.00 / 1,000 business listings

Go to Apify Store
Gouden Gids Scraper: Dutch Business Phones & Emails

Gouden Gids Scraper: Dutch Business Phones & Emails

Scrape Gouden Gids (goudengids.nl) by trade and town: business name, phone, address, coordinates, website, opening hours and KvK number. Turn on emails to find each business's address from the directory or its own website, charged only when found. Pay per business.

Pricing

from $1.00 / 1,000 business listings

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

8 hours ago

Last modified

Share

20 Amsterdam plumbers, 13 emails, 52 seconds

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.

Type a trade in Dutch and a place in the Netherlands, for example loodgieter in Amsterdam, and get one row per business that Gouden Gids (goudengids.nl) lists: name, phone in international format, address with postcode and province, coordinates, website, opening hours and the link to its Gouden Gids page. Turn on Find emails and the actor adds the email address the business published on Gouden Gids, or else one read from its own website. Open each business page and you also get the KvK number and Gouden Gids's trade categories.

Why choose this actor?

  • Emails the businesses published themselves, charged only when delivered. In our proof run (loodgieter in Amsterdam, 29 Sep 2026) 13 of 20 businesses came back with an email, all from their own Gouden Gids page. The other 7 were delivered and charged as businesses only. On 1 Oct 2026, 11 of 20 hairdressers in Utrecht had one, 2 of them read from the business's website.
  • KvK numbers for matching against the Dutch company register. The 8 digit Chamber of Commerce number came back for 12 of 20 businesses in both runs, at no extra charge.
  • Honest result lists. Gouden Gids's own search page pads its last page with unrelated businesses from across the country, so the actor reads the site's category pages, which end cleanly. A place the site does not know returns nothing rather than the whole country, and the same business listed twice with a shared phone or website is delivered once. No account, cookies or API key.

Run it on Apify

Part of The Mine Works Leads and business directories family: B2B Leads Finder, Skip Trace Lookup, Google Maps Email Scraper, JustDial Scraper, 2GIS Places Scraper, IndiaMART Scraper.

Try it in one minute

Paste this input into the JSON tab and press Start. It returns the first 10 plumbers Gouden Gids lists for Amsterdam, without emails, in a few seconds:

{
"queries": ["loodgieter"],
"locations": ["Amsterdam"],
"maxResultsPerSearch": 10
}

You can say what you want in two ways, and mix them in one run:

  • Queries and locations (queries, locations): Dutch trade words as you would type them on the site, such as loodgieter, kapper, tandarts, restaurant or advocaat familierecht, and a town, a province (Noord-Holland) or a postcode (1012AB). Every query is searched in every location. Leave locations empty to search the whole country.
  • Search pages (startUrls): a Gouden Gids results page copied from your browser, either a category page such as https://www.goudengids.nl/nl/bedrijven/Amsterdam/loodgieter/ or a search page such as https://www.goudengids.nl/nl/zoeken/loodgieter/Amsterdam/ (read through the category route, without the padding).

API and agent callers can also use other common field names: query, keyword, keywords or searchTerms for queries, location, where or city for locations, urls for search pages, and maxResults or maxItems for the limit.

Apify's free plan includes $5 of credit every month, which covers about 2,400 businesses at this actor's Free plan price with emails off ($0.002 a business plus $0.005 a run), or about 230 businesses with emails on at the rate of our proof run, about 150 of them with an email.

Copy to your AI assistant

themineworks/goudengids-nl-business-email-scraper on Apify. Searches Gouden Gids (goudengids.nl), the Dutch yellow pages, by Dutch trade word and place and returns one row per business with name, phones, address, postcode, province, coordinates, website and opening hours, plus an optional email (usually published on Gouden Gids itself) and, with business pages or emails on, the KvK number and categories. Call ApifyClient("TOKEN").actor("themineworks/goudengids-nl-business-email-scraper").call(run_input={"queries": ["loodgieter"], "locations": ["Amsterdam"], "maxResultsPerSearch": 50, "includeEmails": true}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: queries (Dutch trade words such as "loodgieter") unless startUrls is given. Optional: locations (town, province or postcode; empty = all of the Netherlands), startUrls (goudengids.nl search pages), maxResultsPerSearch (integer 1 to 1000, default 30), includeEmails (default false), includeDetails (default false), verifyEmailDomain (default true), allowUnblockerFallback (default true). Rows with _type "info" are run notes, never billed. Full spec: GET https://api.apify.com/v2/acts/themineworks~goudengids-nl-business-email-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations

Key features

  • Up to 1,000 businesses per search, up to 300 searches per run. Gouden Gids shows 20 businesses a page and its category pages end exactly where the list ends: 361 plumbers for Amsterdam and 3,291 for the whole country on 1 Oct 2026. Each run takes up to 50 queries times 50 locations, capped at 300 searches.
  • 26 fields per business: listing id and Gouden Gids link, name, categories, every phone, the address split into street, postcode, town and province, coordinates, website, opening hours by day, description, the KvK number, the email and where it was found, and the search that found the row.
  • Emails from two places. First the address the business published on its Gouden Gids page, then its own website: homepage, then the contact and legal pages it links to, then /contact, /contacteer-ons, /over-ons, /colofon, /disclaimer and /privacy, at most 5 pages and 20 seconds per site. Website addresses are kept only on the business's own domain or an ordinary provider such as gmail.com, ziggo.nl, kpnmail.nl or xs4all.nl. Every address, Gouden Gids's own included, goes through a mail server check: one directory address in the proof run failed it and was neither delivered nor charged. Up to 5 addresses per row, best first.
  • One row per business. A business is delivered once per run even when two searches find it, and the same business under a second Gouden Gids id is dropped when the name matches and a phone or website is shared. Branches at two addresses stay two rows.
  • Typos and postcodes handled by the site. Amsterdm and 1012AB both returned the 361 Amsterdam plumbers in our test, and a place the site cannot find returns nothing with a note in the run summary.
  • Plain HTTP at 512 MB, no browser. Every run writes a summary to the OUTPUT record in its key-value store: for each search the status (ok, no_results or blocked), the count Gouden Gids reports, pages read and refused, connection attempts, where the emails came from, and how many duplicates were dropped (same_business_skipped).

How to use it

Basic: one trade in one town

{
"queries": ["tandarts"],
"locations": ["Rotterdam"],
"maxResultsPerSearch": 100
}

Gouden Gids reported 769 dentists for Rotterdam on 1 Oct 2026; 100 businesses take 5 pages. Results come nearest first, so a town search moves into the surrounding towns as it goes deeper (the last of the 361 Amsterdam plumbers are in Zaandam, Weesp and Edam). Filter on city if you need the town itself.

Several trades in several towns

Every query runs in every location, so this is six searches:

{
"queries": ["loodgieter", "elektricien", "dakdekker"],
"locations": ["Utrecht", "Amersfoort"],
"maxResultsPerSearch": 200
}

A business found by two of the searches is delivered once and charged once. Two searches run at a time.

A whole province, or the whole country

{
"queries": ["loodgieter"],
"locations": ["Noord-Holland"],
"maxResultsPerSearch": 1000
}

Gouden Gids reported 900 plumbers for Noord-Holland. Leave locations empty for the whole country (3,291). Do not type Nederland: the site reads it as a place name and returned 31 businesses from one small area in the north.

Cold email list with KvK numbers

{
"queries": ["kapper"],
"locations": ["Utrecht"],
"maxResultsPerSearch": 20,
"includeEmails": true,
"includeDetails": true
}

This is the input of our 1 Oct 2026 run: 20 businesses and 20 business pages in 30 seconds, 11 emails (9 from Gouden Gids, 2 from websites) and 12 KvK numbers. With includeEmails on, the actor opens the business page anyway for any business whose email is not yet known, because Gouden Gids keeps the email there, not on the results page.

Monthly refresh on a schedule

Save any of the inputs above as a task, then in Apify Console open Schedules, add a schedule (for example the first of every month) and pick the task. Each scheduled run is billed like a manual one, and the schedule itself is free. The actor has no "only new businesses" mode, so compare listing_id with your last export to find the newcomers.

Read a search you already set up on the site

{
"startUrls": [
{ "url": "https://www.goudengids.nl/nl/bedrijven/Amsterdam/loodgieter/" }
],
"maxResultsPerSearch": 60
}

Each pasted page is read from its first page on, with the same limits and charges as a typed search.

Input parameters

ParameterTypeDefaultWhat it does
queriesarray of stringsnone (prefilled with loodgieter)Dutch trade words to search, one per line. Up to 50. Needed unless you give startUrls.
locationsarray of stringsempty (prefilled with Amsterdam)Towns, provinces or postcodes, one per line. Every query is searched in every location. Empty searches the whole country. Up to 50.
startUrlsarrayemptyGouden Gids search result pages, read instead of or as well as the queries.
maxResultsPerSearchinteger30Most businesses per query and location, 1 to 1,000. The site shows 20 per page.
includeEmailsbooleanfalseAdd each business's email: the address on its Gouden Gids page first, then its website. Charged only for rows that come back with one.
includeDetailsbooleanfalseAlso open each business's own Gouden Gids page, for the KvK number, categories and full description. No extra charge, slower. With includeEmails on, the page is opened anyway for a business whose email is not yet known.
verifyEmailDomainbooleantrueKeep an email only when its domain can receive mail. Applies to Gouden Gids's and website emails alike.
allowUnblockerFallbackbooleantrueWhen a search page is refused several times over the fast connection, retry it through Apify's unblocking proxy. Included in the price. Turn off to report such pages as refused instead.

Give at least one query or one search page. A run with neither writes a note row and stops; the $0.005 start fee still applies.

What data do you get?

One row per business. Fields with no value are left out of the row rather than sent as empty.

The business

  • listing_id (Gouden Gids's id, such as L120016790), listing_url, name, categories (Gouden Gids's trades, such as Loodgieters, from the business page), description (cut short by the site on the results page), opening_hours (one entry per day and time range, such as Mo 07:00-16:00). Gouden Gids shows a rating only for businesses with reviews, and none of the businesses in our test searches had one, so expect none

Contact

  • phone (the first number) and phones (all of them), in international format such as +31 20 614 5590; website, with utm_, fbclid, gclid and mc_ tracking parameters removed

Address and map

  • address (one line), street, postal_code (written the Dutch way, such as 1046 AR), city, region (the province, such as Noord-Holland), country (always NL), latitude, longitude

Company register (from the business page, with includeDetails or includeEmails on)

  • kvk_number, the 8 digit Chamber of Commerce number, when the business published it

Email (with includeEmails on)

  • email (the best address), emails (up to 5, best first), email_source (directory or website) and email_source_url (the Gouden Gids page, or the website page it was read from)

Search context

  • source_site (goudengids.nl), search_query, search_location, scraped_at

Fill rates in the proof run (20 businesses, emails on, so every business page was opened): email 13, KvK number 12, phone 16, website 7, opening hours 6, description 3; address, coordinates and categories 20 each.

Stable fields for automations

These fields were present in every one of 59 business rows across the proof run, our 1 Oct 2026 Utrecht run and the result cards saved for our tests (with and without business pages), and their names will not change:

FieldWhat it holds
listing_idGouden Gids's id for the business, the same in every run
listing_urlLink to the business's page on goudengids.nl
nameBusiness name as listed
addressStreet, postcode and town on one line
streetStreet and number
postal_codeDutch postcode, such as 1046 AR
cityTown
regionProvince
countryAlways NL
latitudeLatitude in decimal degrees
longitudeLongitude in decimal degrees
source_siteAlways goudengids.nl
search_queryThe query or pasted search that found the row
scraped_atWhen the row was read (ISO 8601)

search_location is present whenever the search had a place. categories comes from the business page, so it is in every row only when business pages are opened; phone was missing on about one row in five.

Output examples

Real rows, trimmed where marked. From the proof run on 29 Sep 2026 (loodgieter in Amsterdam, emails on), a business with its email, KvK number and opening hours on Gouden Gids (complete row):

{
"listing_id": "L120016790",
"listing_url": "https://www.goudengids.nl/nl/bedrijf/Amsterdam/L120016790/Sargentini+Loodgietersbedrijf/",
"name": "Sargentini Loodgietersbedrijf",
"categories": ["Loodgieters"],
"phone": "+31 20 614 5590",
"phones": ["+31 20 614 5590"],
"address": "Limmerick 1, 1046 AR Amsterdam",
"street": "Limmerick 1",
"postal_code": "1046 AR",
"city": "Amsterdam",
"region": "Noord-Holland",
"country": "NL",
"latitude": 52.39003,
"longitude": 4.77619,
"website": "http://www.sargentini.nl",
"email": "info@sargentini.nl",
"emails": ["info@sargentini.nl"],
"email_source": "directory",
"email_source_url": "https://www.goudengids.nl/nl/bedrijf/Amsterdam/L120016790/Sargentini+Loodgietersbedrijf/",
"opening_hours": ["Mo 07:00-16:00", "Tu 07:00-16:00", "We 07:00-16:00", "Th 07:00-16:00", "Fr 07:00-16:00"],
"description": "Installatiebedrijf Sargentini is al ruim 90 jaar dé specialist in Amsterdam voor loodgieterswerk, cv-installaties, warmtepompen en dakbedekking. Wij leveren ...",
"kvk_number": "33016267",
"source_site": "goudengids.nl",
"search_query": "loodgieter",
"search_location": "Amsterdam",
"scraped_at": "2026-09-29T09:33:31.995Z"
}

From our 1 Oct 2026 run (kapper in Utrecht, emails and business pages on), an email read from the business's own website (trimmed):

{
"listing_id": "L1189606540010",
"name": "Haarfijn Kappers",
"categories": ["Kappers"],
"address": "Stationspassage 10, 3511 CB Utrecht",
"region": "Utrecht",
"website": "https://www.haarfijnkappers.nl",
"email": "info@haarfijnkappers.nl",
"email_source": "website",
"email_source_url": "https://haarfijnkappers.nl/",
"opening_hours": ["Mo 08:00-20:00", "Tu 08:00-20:00", "We 08:00-20:00", "Th 08:00-20:00", "Fr 08:00-20:00", "Sa 08:00-17:30"],
"kvk_number": "30127912"
}

From the same run, a salon with a phone and KvK number but no website or email, charged as a business only (trimmed):

{
"listing_id": "L522768044",
"name": "CHEWIE INC",
"categories": ["Kappers"],
"phone": "+31 30 633 0810",
"address": "Lange Koestraat 39, 3511 RM Utrecht",
"latitude": 52.093563,
"longitude": 5.1129518,
"kvk_number": "64774643"
}

The note row at the end of the run (never charged; filter on _type to drop it), trimmed:

{
"_type": "info",
"delivered": 20,
"message": "20 businesses delivered. This row is informational: it is never billed.",
"scraped_at": "2026-09-29T09:33:34.457Z"
}

Pricing

You pay per business delivered to your dataset, plus a flat start fee per run. An email is a second, separate charge, made only for rows that come back with one. The fast connection and the unblocking proxy fallback are included.

EventFree planStarter (Bronze)Scale (Silver)Business (Gold) and above
Business delivered (listing-scraped), per business$0.002$0.0017$0.0014$0.001
Business delivered, per 1,000$2.00$1.70$1.40$1.00
Email found (email-found), per email$0.03$0.025$0.02$0.015
Email found, per 1,000$30$25$20$15
Run start (run-start), once per run$0.005$0.005$0.005$0.005

The start fee is our own run-start event: a flat $0.005 once per run, whatever memory you choose. It is not Apify's per GB start fee, and it is charged on every run, including a run that finds nothing. These prices took effect on 28 Sep 2026, and no change is scheduled as of 1 Oct 2026. The Pricing tab always shows the rate for your own plan; if this table and the Pricing tab ever disagree, the Pricing tab is right.

What a real job costs. 1,000 businesses with emails off cost $2.00 plus $0.005 on the Free plan, and $1.00 plus $0.005 on Business. With emails on, at the rate of our two runs (24 emails in 40 rows), 1,000 businesses bring about 600 emails: about $18 more on Free and $9 more on Business. Turn emails on only for the searches where you need them; business pages cost nothing extra.

Never charged:

  • search pages the site refused, and the retries through the unblocking proxy;
  • a business already delivered by another search in the same run, or the same business under a second Gouden Gids id;
  • a search for a place Gouden Gids does not know (nothing is delivered);
  • business pages and websites that were opened but gave no email (the row is charged as a business only);
  • an email on a domain with no mail server, from Gouden Gids or a website (it is dropped);
  • an email address already charged earlier in the same run, such as the shared inbox of a chain's branches (it is still delivered on every row);
  • the note row and the OUTPUT run summary.

To cap what a run can cost, set a maximum total charge in the run options. The actor stops before a business the budget cannot pay for, and when the budget covers a business but not its email, the row is delivered without the email and the email is not charged.

FAQ

What is Gouden Gids?

The Dutch yellow pages at goudengids.nl, run by FCR Media. It lists tradespeople, shops, restaurants, clinics, professionals and companies across the Netherlands, with phone, address and opening hours, and for many of them a website, an email and the KvK number.

How many businesses can I get?

Up to 1,000 per search and up to 300 searches per run. The count Gouden Gids reports is in the run summary (361 plumbers in Amsterdam, 900 in Noord-Holland, 3,291 nationwide on 1 Oct 2026). For a trade with more than 1,000 businesses, split the search by province or town. A run stops cleanly before its timeout (one hour by default) and keeps everything delivered so far, so raise the timeout in the run options for very large runs.

What do I type into Queries?

The Dutch trade as you would search on the site: loodgieter, kapper, tandarts, restaurant, advocaat familierecht. The site reads it as its own category, so singular and plural both work. English words find little: plumber found 20 businesses in Amsterdam against 361 for loodgieter.

What do I type into Locations?

A town (Amsterdam, Den Haag), a province (Noord-Holland) or a postcode (1012AB). The site corrects small typos (Amsterdm). Leave it empty for the whole country; do not type Nederland, which the site reads as a place name in the north. A place the site cannot find returns nothing, with a note in the run summary.

Why are some businesses outside the town I searched?

Gouden Gids lists businesses nearest first and keeps going into the surrounding towns, so the deeper you read, the farther you get. Each row has its real city, so filter on it if you need the town itself, or set maxResultsPerSearch to roughly the number in that town.

How fresh is the data?

Every run reads the site live; nothing comes from a cache. scraped_at on each row says when it was read.

Do I need a Gouden Gids account, cookies or an API key?

No. The actor reads the public pages any visitor sees, without signing in. There is nothing of yours to connect.

Do I need to set up a proxy?

No. The actor uses a fast connection that looks like a normal Chrome browser, through Apify's datacenter proxies, and Gouden Gids answered every search and business page that way in our 1 Oct 2026 run. The site now and then refuses a single attempt (4 of 87 in our build tests); a retry on a fresh connection passes, and a page refused several times is retried through Apify's unblocking proxy, included in the price. Refused pages are listed in the run summary and never charged.

Will every business have an email?

No. Gouden Gids shows the email a business gave it on the business page, and in our runs 13 of 20 Amsterdam plumbers and 11 of 20 Utrecht hairdressers had one; for the others the actor tries the business's own website. A business with neither gives none. The actor never guesses an address from a name, and you pay nothing extra for a row without one.

What is the KvK number?

The 8 digit number of the Dutch Chamber of Commerce (Kamer van Koophandel) register. It is returned as kvk_number when the business published it on its Gouden Gids page, which the actor opens with includeDetails or includeEmails on.

Which pages does it read?

Category pages (/nl/bedrijven/<town>/<trade>/ and their numbered pages) and, when needed, business pages (/nl/bedrijf/...). Gouden Gids's robots.txt, read again on 1 Oct 2026, allows both for every crawler; it disallows only the site's API and its business account pages.

Does it cover Belgium?

No. goudengids.be is a separate site; use our Pages d'Or Belgium Scraper, which covers it in French and Dutch.

Which formats can I export?

JSON, CSV, Excel, XML, HTML table and RSS from the dataset page in Apify Console, or through the Apify API.

Can I use it from Claude, ChatGPT or another AI agent?

  • Connector URL: https://mcp.apify.com/?tools=themineworks/goudengids-nl-business-email-scraper.
  • Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
  • ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
  • Cursor or VS Code: add it as an HTTP MCP server with that URL.
  • Claude Code: claude mcp add -t http goudengids-nl-business-email-scraper "https://mcp.apify.com/?tools=themineworks/goudengids-nl-business-email-scraper".

The actor collects only publicly visible business listings and never signs in. Business contact details are still personal data when they identify a person, for example a sole trader's name and mobile number, so how you store and use them is your responsibility: follow the site's terms and the GDPR (AVG), and where you send marketing messages also the Dutch Telecommunications Act rules on unsolicited email (and CAN-SPAM or the CCPA for contacts in the US). This is general information, not legal advice. The actor is an independent tool, not affiliated with or endorsed by Gouden Gids or FCR Media.

Integrations

  • Google Sheets: send each run's dataset to a sheet with Apify's Google Sheets integration.
  • Make, Zapier and n8n: start runs and receive the businesses in your workflows.
  • Webhooks: get a call when a run finishes, for example to load new rows into your CRM.
  • API: start runs and read datasets from any language with the Apify API or the Python and JavaScript clients.
  • MCP clients: Claude, ChatGPT and other agents through Apify's MCP server.

More from The Mine Works

Leads and business directories

Social media and video

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

Jobs and hiring

E-commerce and marketplaces

Company and business data

Food and local services

Developer and AI tools

More tools

Support

Found a problem or need a field? Open an issue on the actor's Issues tab and we will answer there. For a new source or a custom build, email dmineworks@gmail.com.

Gouden Gids Scraper turns a Dutch trade word and a place into rows of businesses with phone, address, coordinates and opening hours and, when you want them, the email the business published and its KvK number.