Werkzoeken.nl Scraper avatar

Werkzoeken.nl Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Werkzoeken.nl Scraper

Werkzoeken.nl Scraper

Scrape 195,000+ job listings from Werkzoeken.nl. Filter by keyword, location, contract type and hours. No API key required.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Werkzoeken.nl Scraper

Scrape job listings from werkzoeken.nl — one of the Netherlands' largest job boards with 195,000+ active listings from 10,000+ employers. Filter by keyword, location, contract type and hours. No API key required.


Why this scraper?

⚡ Fast and cost-efficient

At $1.50 per 1,000 results, this scraper is built for scale. All core fields — title, company, location, contract type, salary, experience level — are extracted from the listing page without requiring a detail fetch per job. Use fetchDetails: true only when you need the full description.

🔄 Automatic repost detection

Employers regularly republish the same vacancy to stay visible in search results. Every scraped job is fingerprinted using a content hash provided by the platform. On subsequent runs, jobs whose fingerprint matches a previously seen listing are flagged with isRepost: true, along with originalPublishDate and originalUrl. Set skipReposts: true to exclude them from the dataset entirely.

📄 Three description formats

When fetchDetails is enabled, the full job description is returned in three formats for maximum pipeline compatibility:

FieldFormatUse case
descriptionRaw HTMLRendering in apps
descriptionTextPlain textFull-text search, NLP
descriptionMarkdownMarkdownRAG pipelines, LLM agents

💰 Structured salary data

Minimum salary is available on every listing. When fetchDetails is enabled, the complete salary range from the detail page is returned:

FieldExample
salaryMin3000
salaryMax4000
salaryRange"3.000 - € 4.000 p/m (bruto)"
salaryType"p/m"

⏱️ daysOld age filter

Only retrieve recently posted vacancies. The daysOld parameter maps to the platform's built-in date filter (supports 1, 2, 5, 7, or 14 days). Combined with scheduled runs, this makes incremental data collection straightforward.

🔗 Direct start URL support

Bypass the search form entirely by providing one or more Werkzoeken.nl search URLs via startUrls. Useful for re-running a specific search or scraping category pages directly.


Input parameters

ParameterTypeDescriptionDefault
searchQuerystringJob title or keyword, e.g. "developer" or "verpleegkundige"""
locationstringCity or region, e.g. "Amsterdam" or "Utrecht"""
radiusintegerSearch radius in km from location. Options: 0, 5, 10, 15, 20, 30, 40, 50, 7530
contractTypearrayContract types to include: 1=Vast, 3=Tijdelijk, 2=Detachering, 4=Freelance, 8=Traineeship, 6=Stage[]
educationLevelarrayEducation levels: 14=Geen diploma, 1=VMBO, 2=MBO, 3=HBO, 4=Universiteit[]
hoursPerWeekarrayHours category: 1=37–40u, 2=33–36u, 3=25–32u, 4=17–24u, 5=9–16u, 6=0–8u[]
minSalaryintegerMinimum monthly salary in €. Options: 2000, 2500, 3000, 3500, 4000, 5000, 60000
employerTypearrayEmployer category: 1=Directe werkgever, 2=Werving en selectie, 4=Uitzendbureau[]
daysOldintegerOnly include jobs posted within this many days. Supported: 1, 2, 5, 7, 14
maxResultsintegerMaximum number of listings to return
fetchDetailsbooleanFetch each detail page for full description, salary range, and benefitsfalse
skipRepostsbooleanExclude jobs flagged as reposts from previous runsfalse
startUrlsarrayList of Werkzoeken.nl search URLs to scrape directly, overrides all filters above

Output schema

{
"id": "15562580",
"title": "Sales | New Business Developer | Thuiswerk",
"url": "https://www.werkzoeken.nl/vacature/15562580-sales-new-business-developer/",
"company": "Werkzoeken.nl",
"companyType": "Directe werkgever",
"companyLogo": "https://cdn.werkzoeken.nl/logo_groot/abc123.png",
"location": "Barendrecht",
"contractType": "Loondienst (vast)",
"hoursPerWeek": "Fulltime",
"educationLevel": "HBO of hoger",
"experienceLevel": "Ervaren,Starter",
"salaryMin": 3000,
"salaryMax": 4000,
"salaryRange": "3.000 - € 4.000 p/m (bruto)",
"salaryType": "p/m",
"hoursRange": "36 - 40 uur",
"educationRequired": "HBO of hoger",
"experienceRequired": "Ervaren/Starter",
"benefits": ["Bonusregeling", "Thuiswerken"],
"applyUrl": "https://www.werkzoeken.nl/reageer-direct-per-email/5476/15562580/?pos=0",
"description": "<p>In de rol van New Business Developer...</p>",
"descriptionText": "In de rol van New Business Developer...",
"descriptionMarkdown": "In de rol van **New Business Developer**...",
"publishDate": "2026-03-16",
"publishedAge": "11 dagen geleden",
"isRepost": false,
"originalPublishDate": null,
"originalUrl": null,
"contentHash": "a97491cd3cfa6d9c0d32b3a1964131f90ca1a9105d748da9a298cd0f7a987a4f",
"scrapedAt": "2026-03-27T10:00:00.000Z"
}

Note: description, descriptionText, descriptionMarkdown, salaryMax, salaryRange, hoursRange, educationRequired, experienceRequired, benefits, and applyUrl are only populated when fetchDetails: true.


Examples

Developer jobs in Amsterdam:

{
"searchQuery": "developer",
"location": "Amsterdam",
"radius": 20,
"maxResults": 100
}

Fulltime HBO+ vacancies with salary filter:

{
"searchQuery": "projectmanager",
"location": "Utrecht",
"radius": 30,
"contractType": [1],
"educationLevel": [3, 4],
"minSalary": 3500,
"hoursPerWeek": [1],
"fetchDetails": true,
"skipReposts": true
}

Recent freelance IT vacancies with full descriptions:

{
"searchQuery": "data engineer",
"contractType": [4],
"daysOld": 7,
"fetchDetails": true,
"maxResults": 50
}

Scrape a specific search URL directly:

{
"startUrls": [
"https://www.werkzoeken.nl/vacatures/?what=verpleegkundige&where=Groningen&r=25"
],
"fetchDetails": false,
"maxResults": 200
}

💰 Pricing

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

ResultsCost
100~$0.15
1,000~$1.50
10,000~$15.00
100,000~$150.00

Flat-rate alternatives typically charge $29–$49/month regardless of usage. At 10,000 results/month, this scraper costs significantly less with no commitment.

Use the Max results cap in the input to control your spend exactly.


Performance

RunModeTime
100 vacanciesListing only~10s
1,000 vacanciesListing only~1.5 min
5,000 vacanciesListing only~7 min
100 vacanciesWith detail pages~2.5 min
1,000 vacanciesWith detail pages~25 min

Performance varies based on server response time. fetchDetails: false is recommended for large-scale data collection.


Known limitations

  • daysOld precision: The platform's built-in date filter only supports fixed intervals (1, 2, 5, 7, 14 days). Values outside this range are mapped to the nearest supported option.
  • Salary (listing level): Only salaryMin is available without fetching detail pages. salaryMax requires fetchDetails: true.
  • Published date: Exact publication timestamps are not provided by the platform. Dates are computed from relative age strings such as "11 dagen geleden" and are accurate to the day.
  • 30+ dagen geleden: Listings older than 30 days are reported as "30+ dagen geleden" — the exact original date cannot be determined without fetching the detail page.
  • fetchDetails performance: Each detail page requires a separate HTTP request and adds approximately 1–2 seconds per listing.

Technical details

  • Source: werkzoeken.nl — Dutch job board with 195,000+ active listings
  • Memory: 256 MB
  • Repost storage: KeyValueStore werkzoeken-nl-job-dedup, 90-day TTL
  • Retry: Automatic retry on network errors, exponential backoff, up to 3 attempts

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.