Werk.nl Scraper $1π° Dutch Job Vacancies, Salaries & Contacts
Pricing
Pay per usage
Werk.nl Scraper $1π° Dutch Job Vacancies, Salaries & Contacts
From $1/1K. Scrape job vacancies from werk.nl, the official Dutch government job board by UWV. Uses werk.nlβs vacancy data service for fast, low-cost runs. Returns 40+ fields per job, including title, salary, full description, recruiter contact, application link, and employer profile.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
AbotAPI
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
werk.nl Scraper - Dutch Jobs, Salaries, Recruiters & Employers
Scrape job vacancies from werk.nl, the official Dutch government job board run by UWV (250,000+ live vacancies). This actor talks directly to werk.nl's own vacancy data service - no browser - so it is fast, cheap, and returns 40+ structured fields per vacancy, including data the website only shows on the detail page: the full description, salary, recruiter contact (name, phone, e-mail), the application link, and the complete employer profile.
Why this scraper
| This actor | Typical werk.nl scrapers | |
|---|---|---|
| Approach | Direct data API (no browser) | Browser / HTML scraping |
| Fields per vacancy | 40+ | ~15-25 |
| Recruiter contact (name/phone/e-mail) | β | partial / β |
| Salary, contract, hours, full address | β | partial |
| Apprenticeship / internship / EURES flags | β | β |
| Proxy cost | Datacenter-friendly (lowest) | Residential-only |
| Handles the site's daily maintenance window | β (won't emit junk) | β |
What you get (per vacancy)
- Identity:
referenceNumber,url,externalReferenceId,source - Core:
title,profession,relevanceScore - Dates:
createdDate,modifiedDate,expirationDate - Location:
city,postcode,workLocationType,countryCode,foreignCountry,distanceKm - Employment:
contractType,contractStartDate/EndDate,minHours,maxHours,studyLevel - Salary:
salaryIndication,termsOfEmployment - Description:
description(plain text) +descriptionHtml - Flags:
isApprenticeship,isInternship,isEuresPriority,isByEmployerDirectly - Employer:
organisation+employerobject (name, website, sector, full address) - Recruiter contact:
contactobject (name, department, phone, e-mail) - Apply:
applicationMethods+applyUrl
Enable Include raw detail payload to also attach the untouched source record under raw.
Input
Search mode (default)
{"mode": "search","keywords": ["developer"],"location": "Amsterdam","contractType": ["1"],"educationLevels": ["5", "6"],"sortBy": "date","fetchDetails": true,"maxItems": 50,"proxy": { "useApifyProxy": true }}
Filters available: profession (e.g. "Frontend developer"), educationLevels (1-7), hoursPerWeek (1-6), workingHours (1-2), drivingLicense (A/B/C/CE/AM), language, contractType (1=permanent, 2=possibly permanent, 3=temporary) and country. One search is run per keyword; leave keywords empty to list everything (optionally narrowed by the filters).
URL mode
Fetch specific vacancies by detail-page URL or bare reference number:
{"mode": "url","urls": ["https://www.werk.nl/nl/vacatures/67353746","69750687"]}
Key options
| Option | Default | Description |
|---|---|---|
fetchDetails | true | Include each vacancy's full detail: complete description, salary, contact and employer profile. Turn off for a faster listing-only run. |
maxItems | 20 | Max vacancies across all searches β the run's hard cap (0 = no limit). |
maxPagesPerSearch | - | Optional secondary cap on result pages (20 each) per keyword; empty by default so maxItems is the binding cap. |
includeRawDetail | false | Attach the raw source payload under raw. |
residentialCap | 0 | Cost guard: max residential sessions used if the run auto-escalates from datacenter (0 = unlimited). |
Send results into your apps (MCP connectors)
Optionally pipe the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape β the Apify dataset is never changed.
What gets written to the connector: a condensed, human-readable summary of each record β not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.
- Authorize a connector once under Apify β Settings β Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto the page where items should be created.
The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.
Proxy & cost
For reliability the actor keeps each worker on a consistent IP and automatically retries on a different one if a request is refused.
- Datacenter (default) - the cheapest option and the verified happy path. Recommended for most runs.
- Residential (Netherlands) - pick this for maximum reliability. The actor also auto-escalates to residential (with country rotation: NL β BE β DE) only when datacenter is being refused, then downgrades back to datacenter when it recovers - so you pay residential rates only when you have to.
- A last-resort failover route is used if both are unavailable.
Free-tier accounts: enable Apify Proxy (the included datacenter allowance works). Without a proxy, requests to werk.nl are refused.
Reliability
werk.nl has a short daily maintenance window during which every page returns a placeholder. The actor detects this and backs off / retries instead of silently reporting zero results.
Notes
This actor collects only publicly available vacancy information. Vacancy contact details are published by employers on the public vacancy pages for the purpose of applications. Use the data in line with werk.nl's terms and applicable privacy law.