Werkzoeken.nl Scraper
Pricing
from $1.20 / 1,000 results
Werkzoeken.nl Scraper
Scrape 195,000+ listings from Werkzoeken.nl — the Netherlands' comprehensive job aggregator. Filter by keyword, location, contract type and working hours. Full descriptions in HTML, text and Markdown. Repost detection & daysOld filtering. No API key required.
Pricing
from $1.20 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
2
Bookmarked
12
Total users
4
Monthly active users
3 days ago
Last modified
Categories
Share
Werkzoeken.nl Scraper — Netherlands Jobs

Extract structured job listings from werkzoeken.nl — the Netherlands' largest job aggregator with 195,000+ listings from hundreds of boards, staffing agencies, and employer sites. Filter by keyword, location, contract type, salary, and more. No API key required.
What you get
Every result includes title, company, location, salary range, contract type, working hours, publication date, repost detection, and a direct link. Enable fetchDetails to add full job descriptions (HTML, plain text, and Markdown) and apply URLs. Enable incrementalMode for daily change feeds — only new, updated, and reappeared listings are returned.
Input parameters
Search & filters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | — | Job title or keyword — e.g. developer, verpleegkundige, chauffeur |
location | string | — | City or region — e.g. Amsterdam, Rotterdam, Den Haag |
radius | string | — | Search radius in km — e.g. 10, 25, 50 |
contractType | string | — | Contract type — e.g. fulltime, parttime, freelance, temporary |
hoursPerWeek | string | — | Working hours filter — e.g. 32, 40 |
educationLevel | string | — | Required education — e.g. MBO, HBO, WO |
employerType | string | — | Employer type — e.g. direct, uitzendbureau |
minSalary | string | — | Minimum monthly salary — e.g. 2500 |
daysOld | string | — | Only jobs posted within N days — 7 for this week, 1 for today |
sortBy | select | — | date (newest first) or relevance |
maxResults | integer | 100 | Maximum results to return. 0 = unlimited |
fetchDetails | boolean | false | Fetch full descriptions and apply URL from each listing page |
skipReposts | boolean | false | Exclude reposts of already-seen listings |
Incremental mode
| Parameter | Type | Default | Description |
|---|---|---|---|
incrementalMode | boolean | false | Only return NEW, UPDATED, and REAPPEARED listings compared to the previous run |
stateKey | string | — | Optional stable identifier for the tracked search state. Leave empty to auto-derive |
Output shaping
| Parameter | Type | Default | Description |
|---|---|---|---|
compact | boolean | false | Return core fields only — ideal for AI agents and LLM pipelines |
descriptionFormat | select | all | Keep all variants, or pick text, html, or markdown |
descriptionMaxLength | integer | 0 | Truncate description to N characters. 0 = no truncation |
excludeEmptyFields | boolean | false | Strip null and empty fields from each record |
Notifications
| Parameter | Type | Description |
|---|---|---|
telegramToken | string | Telegram bot token from @BotFather |
telegramChatId | string | Telegram chat or channel ID |
discordWebhookUrl | string | Discord incoming webhook URL |
slackWebhookUrl | string | Slack incoming webhook URL |
webhookUrl | string | Generic POST webhook — works with n8n, Make, Zapier |
webhookHeaders | object | Optional auth headers for the webhook |
notificationLimit | integer | Max jobs per notification message (default 5) |
notifyOnlyChanges | boolean | With incremental mode: only notify for NEW / UPDATED / REAPPEARED |
Output fields
Always present
| Field | Type | Description |
|---|---|---|
id | string | Unique job ID (wznl prefix + vacancy ID) |
vacancyId | string | Raw vacancy ID from werkzoeken.nl |
title | string | Job title |
url | string | Direct link to the listing |
company | string | Hiring company or recruiter name |
companyType | string | Employer type (e.g. direct, uitzendbureau) |
city | string | City or region |
contractType | string | Contract type (e.g. fulltime, parttime) |
hoursType | string | Working hours type |
experience | array | Required experience levels |
education | string | Required education level |
salaryMin | number | Minimum monthly salary (€) |
salaryMax | number | Maximum monthly salary (€) |
salaryType | string | Salary period — always monthly |
publishDate | string | ISO date the listing was published |
ageLabel | string | Original age label from the site (e.g. vandaag, 3 dagen geleden) |
fingerprint | string | Cross-run dedup hash (from site's data-hash attribute) |
contentHash | string | MD5 of title + company + salary + location — stable content identifier |
changeStatus | string | NEW, UPDATED, UNCHANGED, or REAPPEARED (only with incrementalMode) |
isRepost | boolean | Whether this listing has been seen before under the same fingerprint |
originalPublishDate | string | Publication date of the first-seen version (reposts only) |
originalUrl | string | URL of the first-seen version (reposts only) |
extractedEmails | array | Email addresses extracted from the job description |
extractedPhones | array | Phone numbers extracted from the job description |
scrapedAt | string | ISO 8601 timestamp of when this record was scraped |
source | string | Always werkzoeken.nl |
latitude | number | Geocoded latitude of the job location |
longitude | number | Geocoded longitude of the job location |
With fetchDetails: true
| Field | Type | Description |
|---|---|---|
description | string | Full job description as HTML |
descriptionText | string | Full job description as plain text |
descriptionMarkdown | string | Full job description as Markdown |
applyUrl | string | Direct application URL |
Sample output
{"id": "wznl12345678","vacancyId": "12345678","title": "Senior Software Engineer","company": "Tech Startup BV","companyType": "direct","city": "Amsterdam","contractType": "fulltime","hoursType": "40 uur","experience": ["senior"],"education": "HBO","salaryMin": 4500,"salaryMax": 6000,"salaryType": "monthly","publishDate": "2026-06-09","ageLabel": "vandaag","changeStatus": "NEW","isRepost": false,"extractedEmails": ["jobs@techstartup.nl"],"extractedPhones": [],"url": "https://www.werkzoeken.nl/vacature/senior-software-engineer-amsterdam-12345678/","applyUrl": "https://www.techstartup.nl/apply/senior-engineer","scrapedAt": "2026-06-09T10:00:00.000Z","source": "werkzoeken.nl"}
Examples
Developer jobs in Amsterdam
{"searchQuery": "developer","location": "Amsterdam","radius": "25","maxResults": 50}
Daily feed of new IT jobs (incremental mode)
{"searchQuery": "software engineer","contractType": "fulltime","incrementalMode": true,"notifyOnlyChanges": true,"telegramToken": "your-bot-token","telegramChatId": "-100123456789"}
Part-time admin roles in Rotterdam with full descriptions
{"searchQuery": "administratief medewerker","location": "Rotterdam","contractType": "parttime","fetchDetails": true,"descriptionFormat": "text"}
Logistics jobs with minimum salary, this week only
{"searchQuery": "chauffeur","location": "Utrecht","minSalary": "2500","daysOld": "7","sortBy": "date"}
Compact output for AI/LLM pipelines
{"searchQuery": "data analyst","location": "Rotterdam","compact": true,"excludeEmptyFields": true,"descriptionFormat": "text","descriptionMaxLength": 500}
n8n / Zapier webhook on new jobs
{"searchQuery": "marketing manager","location": "Amsterdam","incrementalMode": true,"webhookUrl": "https://your-n8n.com/webhook/abc123","notifyOnlyChanges": true,"notificationLimit": 10}
Pricing
Pay-per-result — you are charged only for items pushed to the dataset. Compute and proxy costs are absorbed by Unfenced Group.
Related scrapers
Other scrapers in our Jobs — Netherlands collection:
- Adzuna NL API Scraper
- Freelancer.nl Opdrachten Scraper
- Intermediair.nl Vacatures Scraper
- Jobbird.com Vacatures Scraper
- Nationale Vacaturebank Scraper
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl