Werk.nl Vacatures Scraper avatar

Werk.nl Vacatures Scraper

Pricing

from $1.25 / 1,000 results

Go to Apify Store
Werk.nl Vacatures Scraper

Werk.nl Vacatures Scraper

Scrape werk.nl — the official Dutch government job board with 250,000+ listings. Structured output: salary, contract type, education level, working hours. Self-healing filters, repost detection & daysOld support. No API key required.

Pricing

from $1.25 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

8

Total users

4

Monthly active users

5 days ago

Last modified

Share

Werk.nl Job Scraper

Scrape job vacancies from werk.nl — the official Dutch government job board (UWV) with 250,000+ active listings from both commercial employers and government agencies.


Why this scraper?

📄 Three description formats — ready for RAG & LLM pipelines

Every vacancy is delivered in three formats:

FieldFormatUse case
descriptionHTMLDisplay in your own application
descriptionTextPlain textSearch indexing, full-text search
descriptionMarkdownMarkdownPinecone, Weaviate, GPT-4, Claude

🔄 Repost detection

Companies frequently republish the same vacancy to stay at the top of search results. This scraper detects that automatically via cross-run fingerprinting:

  • isRepost: true/false
  • originalPublishDate — date first seen
  • originalUrl — link to the original listing

Use skipReposts: true to automatically skip republications.

💰 Normalised salary data

FieldExample
salary"€4,000 - €6,000"
salaryMin4000
salaryMax6000
salaryType"monthly"

Supports monthly, hourly and annual salaries.

🎯 Unique target group filters

Werk.nl carries target group markers not available on other job boards:

  • isInternship — internship positions
  • isForYouth — vacancies for young job seekers
  • isFor50Plus — vacancies for 50+ candidates
  • isForWomen — vacancies specifically targeting women
  • isForDisabled — vacancies for people with a disability
  • isBanenafspraak — Dutch government employment initiative vacancies

🔁 Automatic retries

On temporary server errors the scraper retries automatically with exponential backoff. Failed attempts are not charged — you only pay for successfully retrieved vacancies.


Input parameters

ParameterTypeDescriptionDefault
keywordsstringSearch term, e.g. "developer"
keywords2stringSecond search term (batch mode)
keywords3stringThird search term (batch mode)
locationstringCity or postcode, e.g. "Amsterdam"
distanceintegerSearch radius in km
contractTypeselectvast / mogelijk vast / tijdelijk
educationLevelselectvmbo / mbo / hbo / wo
sortByselectrelevantie / dichtbij / datumdichtbij
maxResultsintegerMaximum number of results (1–1000)100
fetchDetailsbooleanFetch full vacancy text and apply URLtrue
daysOldintegerOnly vacancies from the last X days
skipRepostsbooleanSkip republicationsfalse
debugModebooleanSave screenshots on errorsfalse

Output schema

{
"title": "Senior Frontend Engineer",
"referenceNumber": 68101116,
"url": "https://www.werk.nl/nl/vacatures/68101116",
"company": "Poki",
"companyWebsite": "https://jobs.lever.co/poki",
"city": "Amsterdam",
"postcode": "1012WZ",
"address": "Spui 10 1012WZ Amsterdam",
"distanceKm": 1.7,
"workLocationType": "Fixed location",
"contractType": "Tijdelijk",
"hoursMin": 40,
"hoursMax": 40,
"education": "HBO/bachelor",
"profession": "Frontend engineer",
"salary": "€4,000 - €6,000",
"salaryMin": 4000,
"salaryMax": 6000,
"salaryType": "monthly",
"publishDate": "2026-02-20",
"expiryDate": "2026-03-22",
"applyUrl": "https://jobs.lever.co/poki/...",
"isRepost": false,
"originalPublishDate": null,
"originalUrl": null,
"isInternship": false,
"isForYouth": false,
"isFor50Plus": false,
"isForWomen": false,
"isForDisabled": false,
"isBanenafspraak": false,
"description": "<p>We are looking for...</p>",
"descriptionText": "We are looking for...",
"descriptionMarkdown": "## About the role\n\nWe are looking for...",
"scrapedAt": "2026-03-29T10:00:00.000Z"
}

Examples

Developer vacancies in Amsterdam:

{
"keywords": "developer",
"location": "Amsterdam",
"distance": 40,
"fetchDetails": true
}

Only new vacancies from yesterday, no reposts:

{
"keywords": "verpleegkundige",
"daysOld": 1,
"skipReposts": true,
"sortBy": "datum"
}

Batch: three search terms at once:

{
"keywords": "marketing",
"keywords2": "communicatie",
"keywords3": "pr",
"location": "Utrecht"
}

Performance

RunTimeCost
100 vacancies (with details)~5 min~$0.16
500 vacancies (with details)~25 min~$0.81

fetchDetails: true is required for full vacancy text and apply URL. Use fetchDetails: false for fast runs with basic fields only (~3× faster).


💰 Pricing

$1.25 per 1,000 results — you only pay for successfully retrieved vacancies. Failed retries and filtered reposts are not charged.


Known limitations

  • Contact fields: contactName, contactPhone, and contactEmail are not returned — removed in a previous version for GDPR compliance with UWV platform rules.
  • Salary: Not published by all employers — salary, salaryMin, and salaryMax are null when unavailable.
  • Apply URL: Links to the UWV application flow or an external ATS depending on the employer. Always present but destination varies.
  • Target group flags: Fields such as isForYouth and isFor50Plus are set by the employer and may not always be populated.

Technical details

  • Source: werk.nl — official Dutch government employment platform (UWV), 250,000+ active listings from public and private sector employers
  • Memory: 1024 MB
  • Proxy: Apify RESIDENTIAL
  • Repost storage: KeyValueStore werk-nl-job-dedup, 90-day TTL
  • Retry: Automatic retry on network errors, exponential backoff

Additional services

Need a custom actor, additional filters, scheduled runs, or integration support? Send an email to info@unfencedgroup.nl — we build on request.


Built by unfenced-group · Issues? Open a ticket or send a message.


Built by unfenced-group · Issues? Open a ticket or send a message.