Skip to content

Werk.nl Scraper

Try for free

Export vacancies from werk.nl, the job site of the Dutch public employment service UWV. Search by keyword, place and radius, contract type, education level, working hours, occupation and date, or paste vacancy links. Get employer, place, hours, salary, description, requirements, contact person and apply link. No login needed.

🇳🇱 Werk.nl Scraper

Export vacancies from werk.nl, the job site of UWV, the Dutch public employment service, with more than 260,000 open vacancies across every sector and region. Search by keyword, place and radius, contract type, education level, working hours, occupation and date, or paste vacancy links, and get clean rows with employer, place, hours, salary, description, requirements, the contact person and the apply link. No login and no werk.nl account needed.

✨ Why use Werk.nl Scraper?

  • 🏛️ The official Dutch job board: werk.nl lists vacancies employers post with UWV plus the ones UWV collects from other Dutch job sites, all in one place.
  • 📇 Contacts included: the recruiter's name, email address and phone number where the vacancy shows them, plus emails, phones and links found in the ad text.
  • 🎯 Precise filters: place and radius (5 to 300 km), contract type, education level (VMBO to WO), office or varying hours, occupation and "changed in the last N days".
  • 🔁 Made for scheduled runs: "Only new and updated vacancies" remembers what you already have and saves only what changed.
  • ⚡ Fast and light: reads werk.nl's own data the way the website does, no browser. In our tests 20 vacancies took about 8 seconds and 1,000 vacancies with details about 36 seconds.
  • 💶 Cheap: you pay per saved vacancy, details included.

🎯 Use cases

  • 🧲 Recruitment and staffing leads: find employers hiring nurses, drivers or developers in your region, with a named contact person to call.
  • 📊 Labour market research: track demand per occupation, region, education level or contract type over time.
  • 🔔 Job alerts: run a saved search daily and get only the new vacancies.
  • 🏢 Competitor and client monitoring: see which organisations post which roles, and how often.
  • 🤖 AI and data pipelines: compact output and a description length cap keep rows small for LLMs and dashboards.

🚀 How to use

  1. Enter one or more search terms (e.g. verpleegkundige, chauffeur), or paste vacancy links or reference numbers.
  2. Optionally set a location and radius, and any filters (contract type, education level, working hours, occupation, changed within N days).
  3. Set Maximum vacancies (20 by default).
  4. Click Start. Download the results as JSON, CSV or Excel, or read them through the API.

📥 Input

FieldWhat it does
searchQueriesJob titles, skills or company names, one search each. A reference number reads that vacancy; * lists every vacancy (newest first).
startUrlswerk.nl vacancy links (https://www.werk.nl/nl/vacatures/71735353) or reference numbers.
maxResultsHow many vacancies to save in total (0 = no limit, up to 100,000).
location, radiusKmDutch place or postcode and the distance around it (default 25 km).
contractTypespermanent, possibly-permanent, temporary.
educationLevelsbasisonderwijs, vmbo, havo-vwo, mbo, hbo, wo, not-specified.
workingHoursoffice or varying.
occupationwerk.nl occupation name, e.g. Verpleegkundige.
postedWithinDaysOnly vacancies posted or updated in the last N days.
sortBynewest (default) or distance (needs a location).
includeDetailsRead each vacancy's detail record (on by default).
incrementalModeSave only new and updated vacancies on repeat runs.
{
  "searchQueries": ["verpleegkundige"],
  "location": "Utrecht",
  "radiusKm": 25,
  "contractTypes": ["permanent"],
  "maxResults": 50
}

📤 Output

FieldExampleNotes
referenceNumber66482564werk.nl vacancy number
titleToekomstig Verpleegkundig Specialist GGZ
companyName, companyWebsite, companyAddressGGzE, http://www.werkenbijggze.nlemployer
profession, functionNameVerpleegkundige psychiatriewerk.nl occupation
location, postcode, workLocationTypeBeek LB, 6191NA, Vaste werklocatiewhere the work is
distanceKm2.7from your location (location searches)
contractTypeVast, Tijdelijk, Mogelijk vast
minHours, maxHours, workTimes36, 36, Kantoortijdenhours per week
startDate, endDate2026-12-31contract dates when given
salary, salaryMin, salaryMax, salaryPeriod, salarySource, salaryTextEUR 4,320 gross per month, werk.nlwerk.nl's salary indication, or the salary stated in the ad text (salarySource: "ad text", with the sentence in salaryText)
requiredEducationHbo/bachelor
requiredLanguages, driversLicenses, requiredExperience, otherRequirements[{"language": "Nederlands", "spoken": "Goed", "written": "Goed"}]requirements
description, descriptionTruncatedad text; see FAQ
contactName, contactEmail, contactPhonethe recruiter, when shown
applyUrl, applicationMethods["online", "email"]how to apply
postedDate, modifiedDate, expirationDate2026-10-21
isInternship, isLearningPositionfalsestageplaats / leerbaan
sourceChannel, externalId, postedByEmployerDirectlyDGRwhere werk.nl got the vacancy
extractedEmails, extractedPhones, extractedUrls, socialProfilescontacts found in the ad text
portalUrlhttps://www.werk.nl/nl/vacatures/66482564
contentHash, scrapedAt, changeTypechange tracking

Example (from a real run, contact person replaced by a fictional one, description shortened):

{
  "referenceNumber": 66482564,
  "title": "Toekomstig Verpleegkundig Specialist GGZ",
  "companyName": "GGzE",
  "companyWebsite": "http://www.werkenbijggze.nl",
  "companyAddress": "Boschdijk 771, 5626AB Eindhoven",
  "profession": "Verpleegkundige psychiatrie",
  "location": "Beek LB",
  "postcode": "6191NA",
  "countryCode": "NL",
  "workLocationType": "Vaste werklocatie",
  "contractType": "Tijdelijk",
  "startDate": "2026-12-31",
  "minHours": 36,
  "maxHours": 36,
  "workTimes": "Kantoortijden",
  "requiredEducation": "Hbo/bachelor",
  "salary": "EUR 4,320 gross per month",
  "salaryMin": 4320,
  "salaryMax": 4320,
  "salaryCurrency": "EUR",
  "salaryPeriod": "month",
  "salarySource": "werk.nl",
  "description": "Verpleegkundig Specialist GGZ | Start per januari 2027\nMaak hier de eerste stappen in jouw loopbaan. ...",
  "descriptionTruncated": true,
  "requiredExperience": [{"profession": "Verpleegkundige psychiatrie", "months": 12, "description": null}],
  "contactName": "Sanne de Vries",
  "contactEmail": "sanne.devries@example.nl",
  "contactPhone": "+31600000000",
  "applyUrl": "https://www.werkenbijggze.nl/opleidingsplek/opleidingsplaats-tot-verpleegkundig-specialist-ggz-3968",
  "applicationMethods": ["phone", "email", "online"],
  "postedDate": "2025-10-05",
  "modifiedDate": "2026-10-21",
  "expirationDate": "2026-11-20",
  "postedByEmployerDirectly": true,
  "sourceChannel": "DGR",
  "portalUrl": "https://www.werk.nl/nl/vacatures/66482564",
  "searchQuery": "verpleegkundige",
  "detailsFetched": true
}

💰 Pricing

You pay $0.85 per 1,000 vacancies ($0.00085 per saved vacancy), with the vacancy details included. There is no start fee and no charge for searches that find nothing.

Platform usage (compute and proxy traffic) is billed on top and is small: we measured about $0.008 per 1,000 vacancies on keyword searches and about $0.011 per 1,000 when listing every vacancy with *.

  • 100 vacancies ≈ $0.09
  • 1,000 vacancies ≈ $0.86
  • 10,000 vacancies ≈ $8.60

Set a maximum charge per run and the actor stops cleanly when it is reached; you never pay for more vacancies than were saved.

❓ FAQ

Is it legal to scrape werk.nl? The actor reads only public vacancy pages that anyone can open without an account. Vacancies can include a recruiter's name, email and phone number; handle that personal data in line with the GDPR and use it only for purposes the recruiter can reasonably expect, such as replying to the vacancy.

Do I need a werk.nl account or a proxy? No account. Datacenter proxies are the default and work for this site; if werk.nl refuses them, the run switches to Dutch residential exits on its own.

How many vacancies can I get? Up to 100,000 per run. werk.nl itself shows at most about 200,000 vacancies per search, more than the whole site holds today.

Why is a field empty? werk.nl only shows what the employer entered. Contact person, start date, languages and driving licences are optional on werk.nl, so they are often empty. When werk.nl's salary field is empty, the actor looks for a salary in the ad text.

Why does the description end with "..."? For vacancies UWV collects from other job sites, werk.nl itself shows only an excerpt of about 2,000 characters; descriptionTruncated is true and applyUrl links to the full ad. Vacancies posted directly on werk.nl come with their full text.

Can I schedule it or use the API? Yes. Schedule the actor, turn on "Only new and updated vacancies" for daily alerts, and read results through the API or webhooks.

⚠️ Limits

  • Only public vacancies; nothing behind a werk.nl login (saved searches, CV matches, applying).
  • Search terms match werk.nl's own search; werk.nl does not search by reference number, so the actor reads those directly.
  • Descriptions of vacancies collected from other job sites are excerpts (see FAQ).
  • werk.nl search page links carry no search terms in the URL, so paste vacancy links or use Search terms and filters instead.
  • Salary comes from werk.nl's salary field, or else from a salary sentence in the ad text (Dutch amounts such as "€ 2.893 en € 3.520 bruto per maand"); ads that state no amount have no salary.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.