Skip to content

Nationale Vacaturebank Scraper

Try for free

Export job listings from nationalevacaturebank.nl, one of the largest Dutch job boards. Search by keyword, location and distance, contract type, education, career level, category, industry, salary and posting date, or paste search, listing and job links. Get employer, recruiter contact, address, salary, hours, description and apply link. No login needed.

🇳🇱 Nationale Vacaturebank Scraper

Export job listings from nationalevacaturebank.nl, one of the largest job boards in the Netherlands (around 95,000 live vacancies). Search by keyword, city or postcode with a radius, contract type, education and career level, job category, industry, workplace, salary, hours and posting date, or paste search, listing and job links. Every row comes with the employer, the recruiter's name, email and phone where the ad names them, the full address with coordinates, salary, hours, the full description and the apply link. No login, no cookies, and you pay only for the jobs you save.

✨ Why use Nationale Vacaturebank Scraper?

  • ⚡ Fast — reads the site's own search data, up to 500 complete jobs per request: in our test runs 100 jobs took about 7 seconds, 1,000 jobs about 11 to 13 seconds and a full search of 7,300 jobs about 75 seconds.
  • 📇 Recruiter contacts — contact name, email, phone and office address from the ad, plus emails, phone numbers and links found in the ad text.
  • 📍 Mapped locations — street, postcode, municipality, province and latitude/longitude for every job.
  • 🎯 Every filter the site has — location and radius, 12 contract types, 9 education levels, 6 career levels, 21 job categories, 38 industries, hybrid/remote/on-site, employer or agency, minimum salary, hours per week and posted within.
  • 📈 Beyond the 10,000 cap — one search on the site stops at 10,000 jobs; bigger searches are split by province, category and contract type automatically and de-duplicated, so you can export the whole board.
  • 💸 Cheap and simple — one flat price per saved job, no start fee.

🎯 Use cases

  • 🧲 Recruitment and staffing leads — find Dutch employers hiring now, with the contact person's email and phone and the company website.
  • 📊 Labour-market and salary research — compare salary ranges, hours, contract types and education levels by city, province, category or industry.
  • 🔔 Daily job alerts — schedule a run with Posted within: last 24 hours and send new jobs to Slack, email, a sheet or your ATS.
  • 🗺️ Regional analysis — use the coordinates to map vacancies around a city or postcode.
  • 🧑‍💻 Job boards and aggregators — feed Dutch vacancies with full descriptions, expiry dates and apply links into your own site or app.

🚀 How to use

  1. Enter one or more Search terms (e.g. developer, verpleegkundige, chauffeur), or paste Nationale Vacaturebank links: a search (/vacature/zoeken?query=...), a listing page (/vacatures/functie/developer/in-amsterdam) or single jobs.
  2. Optionally set Filters: location and distance, contract type, education, career level, category, industry, workplace, advertiser, employer, posted within, salary and hours.
  3. Set Maximum jobs (default 20; 0 = no limit).
  4. Click Start and wait for the run to finish.
  5. Download the results as JSON, CSV, Excel or HTML, or read them through the API.

📥 Input

FieldWhat it does
searchQueriesSearch terms, one search each. * lists every job (use filters to narrow it).
startUrlsSearch links (https://www.nationalevacaturebank.nl/vacature/zoeken?query=developer&location=Utrecht&distance=20), listing pages (/vacatures/functie/developer/in-amsterdam, /vacatures/branche/ict, /vacatures/werkgever/<employer>) or job links (/vacature/<job id>/<title>).
maxResultsJobs to save in total (default 20, 0 = no limit).
maxResultsPerSearchOptional cap for each search term or link.
location / distanceKmA Dutch city, postcode or province, and the radius around a city or postcode (only the city, 10 to 100 km, or the whole country).
contractTypeVast, Tijdelijk, Interim, Stage, Freelance, ZZP, Bijbaan and more.
educationLevel / careerLevelMBO, HBO, WO, …; Starter, Ervaren, Leidinggevend, …
category / industryThe site's job categories (Functiegroep) and industries (Branche).
workingPlace / companyType / companyNameHybrid, remote or on site; employers or agencies; one employer.
postedWithin / salaryMin / workingHoursMin / workingHoursMaxLast 24 hours to last month; €1,500+ to €7,000+ a month; hours per week.
sortByRelevance, newest first, most popular or distance.
descriptionFormat / descriptionMaxLength / compact / excludeEmptyFieldsMake rows smaller: one description format, shorter descriptions, core fields only, no empty fields.
{
  "searchQueries": ["developer", "verpleegkundige"],
  "location": "Utrecht",
  "distanceKm": "20",
  "contractType": ["Vast"],
  "postedWithin": "last week",
  "maxResults": 100
}

📤 Output

One row per job.

FieldDescription
jobId, title, urlJob id, job title and the job's page on the site.
company, companyType, companyWebsite, companyPageUrl, logoUrlEmployer or agency (direct_employer or human_resource_manager), website, its job page on the site and logo.
contactName, contactEmail, contactPhone, contactStreet, contactPostalCode, contactCity, contactWebsiteThe contact person and address named in the ad.
street, postalCode, city, municipality, province, country, latitude, longitude, workingPlaceWhere the job is, and hybrid, remote or on site.
salaryMin, salaryMax, salaryType, salaryFormattedSalary range in euros (monthly, hourly, yearly or unspecified).
workingHoursMin, workingHoursMax, workingHoursFormatted, employmentTypeHours per week; FULL_TIME when 32+ hours are possible, PART_TIME when fewer than 32 are, plus INTERN, TEMPORARY, CONTRACTOR or VOLUNTEER from the contract type.
contractType, contractTypes, educationLevel, educationLevels, careerLevelContract, education and career level as the site shows them.
categories, industries, functionTitle, dcoTitle, iscoCodeJob category, industry, the site's standard job title and the ISCO occupation code.
description, descriptionHtml, descriptionMarkdownThe full job ad as plain text, HTML and Markdown.
publishDate, expiryDateWhen the ad was placed and when it expires.
applyUrl, applyOption, directApply, numberOfAppliesWhere to apply, whether you apply on the site itself, and how many applications the site counted.
extractedEmails, extractedPhones, extractedUrls, socialProfilesContacts and links found in the ad text.
isHighlighted, hasVideo, searchQuery, searchUrl, contentHash, scrapedAt, sourceAd options, which search found the job, a hash of the ad content for change tracking, and when.

Example row (from a test run; long texts shortened, contact person replaced with a fictional one):

{
  "jobId": "92519bcd-28ba-4946-8b36-95e1e9864a9a",
  "title": "Backend developer",
  "company": "Proland",
  "companyType": "direct_employer",
  "companyWebsite": "https://www.proland.nl/",
  "contactName": "Jan de Vries",
  "contactEmail": "jan.devries@example.nl",
  "contactPhone": "085 1234567",
  "contactStreet": "Keizersgracht 241",
  "contactPostalCode": "1016 EA",
  "contactCity": "AMSTERDAM",
  "city": "Sneek",
  "province": "Friesland",
  "municipality": "SUDWEST-FRYSLAN",
  "postalCode": "8603CL",
  "street": "Leeuwarderweg",
  "latitude": 53.041327,
  "longitude": 5.666939,
  "country": "NL",
  "workingPlace": "Hybride",
  "salaryMin": 3400,
  "salaryMax": 4200,
  "salaryType": "unspecified",
  "salaryFormatted": "€3.400 - €4.200",
  "contractType": "Vast",
  "employmentType": ["FULL_TIME"],
  "educationLevel": "MBO",
  "educationLevels": ["MBO", "HBO"],
  "careerLevel": "Ervaren",
  "workingHoursMin": 32,
  "workingHoursMax": 36,
  "workingHoursFormatted": "32 - 36 uur",
  "categories": ["Automatisering/Internet"],
  "industries": ["Internet", "ICT"],
  "dcoTitle": "Backend Developer",
  "iscoCode": "2431",
  "description": "Bouw jij mee aan de toekomst van Proland?\n\nBij Proland combineren we dienstverlening met slimme technologie …",
  "publishDate": "2026-10-01T22:00:00Z",
  "expiryDate": "2026-11-29T23:00:00Z",
  "url": "https://www.nationalevacaturebank.nl/vacature/92519bcd-28ba-4946-8b36-95e1e9864a9a/backend-developer",
  "applyUrl": "https://werkenbij.proland.nl/vacatures/backend-developer",
  "applyOption": "external",
  "directApply": false,
  "numberOfApplies": 21,
  "searchQuery": "developer",
  "scrapedAt": "2026-10-21T21:30:00Z",
  "source": "nationalevacaturebank.nl"
}

💰 Pricing

You pay $1.00 per 1,000 jobs saved ($0.001 per job), with no start fee, plus a small amount of platform usage (compute and proxy traffic), which is not included in the job price. Example: 1,000 jobs ≈ $1.00 in total ($1.00 for the jobs + about $0.006 platform usage, measured on our test runs); 100 jobs ≈ $0.10. Failed links, jobs that are no longer online and rows you filter out are not charged. Set a maximum total charge on the run and the scraper stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape Nationale Vacaturebank? The scraper only reads job ads that anyone can see without logging in. Contact persons are named in the ads by the employers and agencies themselves. If you store or contact people, follow the GDPR and Dutch marketing rules.

Do I need an account, cookies or a proxy? No account and no cookies. The default datacenter proxy reaches the site fine; if its exits are refused before any job is found, the run switches to Dutch residential exits by itself.

How many jobs can I get? As many as the site lists. One search shows at most 10,000 jobs; set Maximum jobs to 0 and bigger searches are split by province, job category and contract type automatically, with duplicates removed. The site's order shifts slightly between pages, so the scraper re-reads pages when jobs slipped past: in our tests full searches returned 99.9% or more of the total the site reports (for example 18,903 of 18,910 jobs in Zuid-Holland).

Why are some fields empty? Employers fill in different parts of the ad. In our test samples about half of the jobs had a salary, about three in four a contact email and only a few a phone number or logo. Empty means the ad does not show it.

Can I get only new jobs every day? Yes: schedule the scraper with Posted within: last 24 hours and send the results to your tools through the API, webhooks or integrations. contentHash changes when an ad's content changes.

Can I use it through the API? Yes. Start runs and read results with the Scrapely API or client libraries; every field above is in the JSON.

⚠️ Limits

  • Only public job ads; nothing behind a login (saved searches, applications, CVs).
  • A single search on the site returns at most 10,000 jobs; the automatic split covers bigger searches, and jobs that match several categories are saved once.
  • The site's order is not fully stable between pages; a handful of jobs in a very large export (about 0.1% in our tests) can still be missed.
  • Runs larger than 500 jobs are read newest first unless you choose another order.
  • employmentType is derived from the hours and contract type; the site does not publish a separate full-time/part-time field.
  • Descriptions are in the language of the ad (almost always Dutch).

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.