Nationale Vacaturebank Scraper
Pricing
from $3.00 / 1,000 serp results
Nationale Vacaturebank Scraper
Extract job listings from Nationale Vacaturebank (nationalevacaturebank.nl). Returns title, employer, location, province, salary, hours, education, contract type, contact person with email, full description and apply link. Pay per event: $0.003 per job.
Pricing
from $3.00 / 1,000 serp results
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Nationale Vacaturebank Scraper - Dutch Jobs, Contact Person, Salary
Pull live Dutch vacancies from Nationale Vacaturebank, the Netherlands' largest private job board. Each record includes job title, employer, city and province with coordinates, contract type, weekly hours, education level, salary range in EUR, the full description (text, HTML and Markdown), the expiry date and the apply link. When the employer lists one, you also get the contact person (name and email), the employer website and the contact address. No login, no API key, no cookies to manage.
Contact person: many vacancies name a recruiter or hiring manager. You get first name, last name and email in dedicated fields, ready for outreach.
What you get
| Field | Description |
|---|---|
id | Vacancy identifier (UUID) |
title | Job title |
job_url | Vacancy page on nationalevacaturebank.nl |
apply_url | Where to apply (employer page, or job_url when the platform hosts the application) |
apply_method / external_apply_url | Apply option as printed and the employer or ATS URL when the application leaves the platform |
company_name | Employer or recruiter name |
company_type | direct_employer or human_resource_manager (recruitment agency) |
company_website | Employer website (when listed) |
company_address | Street, postcode and city of the contact block (when listed) |
company_logo_url | Employer logo (when uploaded) |
location / city | City of the workplace |
region | Dutch province |
street_address / postal_code | Workplace address |
latitude / longitude | Workplace coordinates |
posted_at | Exact publication timestamp (ISO 8601, UTC) |
expires_at | Vacancy expiry timestamp |
employment_type | permanent, temporary, internship, freelance, temp_agency, on_call |
contract_types | All contract types as printed (Dutch) |
workplace_type / remote_option | hybrid, remote or on-site, when stated |
min_hours / max_hours / working_hours | Weekly hours range and a readable text |
study_level / education_required | Required education level, normalised and as printed |
position_level | Career level (Starter, Ervaren, ...) |
category / categories / industries | Platform category and industry labels |
occupation / isco_code | Standardised occupation title and ISCO code |
salary_min / salary_max | EUR amounts (null when not stated) |
salary_currency / salary_period / salary_text | Currency, period (month, year, hour) and a readable range |
cao | Collective labour agreement mentioned in the text, for example CAO VVT (often null) |
description_snippet / description_full / description_html / description_md | Description in four formats |
contact_name / contact_firstname / contact_lastname | Contact person |
contact_email / contact_phone | Contact person email and phone (scalar) |
contact_emails / contact_phones / contact_urls | Arrays: contact email plus emails found in the text, phones, contact website |
origin | Feed that supplied the vacancy |
applicants_count | Applications counted by the platform (null when 0) |
search_query | The query that found this row |
source_platform / scraped_at | Source and scrape timestamp |
Fields the vacancy does not show are null (or an empty array for the contact_* arrays).
Sample output
{"_type": "job","id": "7b3124b5-2c58-4846-aed9-6dcdfc50836c","title": "Jeugdverpleegkundige 0-12 jaar","job_url": "https://www.nationalevacaturebank.nl/vacature/7b3124b5-2c58-4846-aed9-6dcdfc50836c/verpleegkundige","apply_url": "https://example-employer.nl/vacatures/jeugdverpleegkundige","apply_method": "external","external_apply_url": "https://example-employer.nl/vacatures/jeugdverpleegkundige","company_name": "GGD Voorbeeldregio","company_type": "direct_employer","company_website": "https://www.example-employer.nl/","location": "Nijmegen","country": "NL","region": "Gelderland","postal_code": "6531AB","latitude": 51.82,"longitude": 5.79,"posted_at": "2026-09-28T22:00:00Z","expires_at": "2026-11-27T23:00:00Z","employment_type": "temporary","workplace_type": "hybrid","min_hours": 24,"max_hours": 32,"working_hours": "24-32 uur per week","study_level": "HBO/bachelor","position_level": "Ervaren","category": "Medisch/Zorg","salary_min": 3568,"salary_max": 5095,"salary_currency": "EUR","salary_period": "month","salary_text": "EUR 3568 - 5095 per month","cao": "CAO VVT","description_snippet": "Jij kijkt verder dan de hulpvraag. Als jeugdverpleegkundige herken je wat kinderen nodig hebben...","contact_name": "Anna de Vries","contact_firstname": "Anna","contact_lastname": "de Vries","contact_email": "info@example-employer.nl","contact_emails": ["info@example-employer.nl"],"contact_phones": [],"origin": "jobdigger","search_query": "verpleegkundige","source_platform": "nationalevacaturebank.nl","scraped_at": "2026-09-29T08:00:00Z"}
The sample is shortened. Real rows also carry description_full, description_html, description_md, city, street_address, contract_types, categories, industries, occupation, isco_code and the other fields from the table above.
Input
{"searchQueries": ["verpleegkundige", "software engineer"],"location": "Amsterdam","maxResults": 100,"maxResultsPerQuery": 50,"sortBy": "newest","postedWithinDays": 7}
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | - | Keywords in Dutch or English. Each runs as a separate search. Leave empty (with no searchUrls) to get the newest vacancies overall. |
location | string | - | City filter (Amsterdam, Rotterdam, Utrecht, ...) |
searchUrls | string[] | - | nationalevacaturebank.nl search URLs (the query and location parameters are used) |
maxResults | integer | 100 (20 when no keywords or URLs) | Total cap across all queries |
maxResultsPerQuery | integer | 100 | Cap per keyword or URL. Set it below maxResults so every query gets rows. |
sortBy | string | newest | newest (most recent first, right for scheduled scrapes) or distance (nearest to location) |
postedWithinDays | number | - | Only jobs posted in the last N days. With newest the search stops at the first older job. |
titleFilter | string | - | Comma-separated title terms (OR-match, case-insensitive). Rows that do not match are dropped before they are returned or charged. |
Running with an empty input {} returns the 20 newest vacancies.
Jobs found by more than one keyword are returned once and attributed to the first keyword that found them.
Precision title filter
{"searchQueries": ["developer"],"titleFilter": "developer, engineer","maxResults": 50}
Only jobs with "developer" or "engineer" in the title are returned.
Netherlands employment types
Nationale Vacaturebank uses Dutch contract terms, mapped to English in employment_type:
| Dutch | English |
|---|---|
| Vast | permanent |
| Tijdelijk | temporary |
| Stage | internship |
| Freelance / ZZP | freelance |
| Uitzendkracht | temp_agency |
| Oproepkracht | on_call |
The original Dutch values stay available in contract_types.
Speed and scale
A run of 100 jobs takes about a minute. A search returns up to 20 jobs per page and the platform lists thousands of vacancies per popular keyword, so use maxResults, maxResultsPerQuery and postedWithinDays to bound a run. For a daily scheduled run use sortBy: newest with postedWithinDays: 1.
Pricing
This actor uses Pay Per Event (PPE) billing:
| Event | Price | Description |
|---|---|---|
actor-start | $0.001 | Charged once per run |
job-serp-result | $0.003 | Charged once per job returned |
Every row includes the full description, contact person and company data.
Example cost: 1,000 jobs cost about $3.00 ($0.003 per job) plus $0.001 per run start.
Deprecation notes
descriptionis the same value asdescription_snippet. Both are emitted;descriptionstays for backward compatibility.posted_at_datetimeis the same value asposted_at(canonical name since 2026-09-29). Both are emitted.workplace_typeis the same source asremote_option. Both are emitted.
Changes in version 1.5 (2026-09-29): every row includes the full description, contact person and company data, and every job is billed at a flat $0.003. The old inputs includeJobDetails, includeCompanyDetails and maxConcurrency are still accepted and ignored.
Changes in version 1.4 (2026-09-29): posted_at/posted_at_datetime now carry the exact publication timestamp instead of the date at 00:00:00Z. job_url and source_url now use the vacancy page link supplied by the platform (/vacature/{id}/{slug}), replacing the earlier /vacature/detail/{id} form. region now comes from the platform (previously a partial city lookup), and company_logo_url, workplace_type, salary_period and salary_text are filled where they were empty before.
Use with AI Agents (MCP)
Connect this actor to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.
Configure the MCP server with Nationale Vacaturebank Scraper preconfigured at mcp.apify.com?tools=santamaria-automations/nationale-vacaturebank-nl-scraper. You can connect to the Apify MCP Server using clients like Tester MCP Client, or any other MCP client of your choice.
{"mcpServers": {"apify": {"command": "npx","args": ["mcp-remote","https://mcp.apify.com/?tools=santamaria-automations/nationale-vacaturebank-nl-scraper","--header","Authorization: Bearer <YOUR_API_TOKEN>"]}}}
For per-tool schemas and copy-paste snippets for MCP clients, see the MCP tab.
See the auto-generated API tab for language-specific examples (cURL, JS, Python, .NET, Ruby, PHP).
Private vs government
Nationale Vacaturebank covers private-sector employers and agencies posting directly. For government and UWV vacancies use the werk-nl-scraper. Together they cover the Dutch labour market.
Related actors
Feed the company_website field from this actor's output into one of the two below to enrich rows with contact data.
- Website Email & Phone Scraper: fast regex-based email and phone extraction from a website.
- Website Contact Extractor: LLM-based, higher precision on names, roles and department emails.
- Website Job Extractor: jobs from any company career page.
- Indeed Scraper: Indeed job listings, including the Netherlands.
- Glassdoor Scraper: Glassdoor jobs with company ratings.
- Werk.nl Scraper: Dutch UWV government vacancies.
- VDAB Scraper: Flanders (Belgium) jobs.
- Forem Scraper: Wallonia (Belgium) jobs.
Support
- Questions or issues? Email contact@nanoscrape.com, we typically reply within 6 hours. You can also open a ticket in the Issues tab on the actor page.
- Feature request for this actor? Open a ticket in the Issues tab or email contact@nanoscrape.com with the platform field you need and (if possible) a URL that shows the data live.
- Need a scraper for a job board we don't cover yet? Email contact@nanoscrape.com with the target site + your rough usage volume. We ship one-off boards regularly.