Nationale Vacaturebank Scraper avatar

Nationale Vacaturebank Scraper

Pricing

from $3.00 / 1,000 serp results

Go to Apify Store
Nationale Vacaturebank Scraper

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

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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

FieldDescription
idVacancy identifier (UUID)
titleJob title
job_urlVacancy page on nationalevacaturebank.nl
apply_urlWhere to apply (employer page, or job_url when the platform hosts the application)
apply_method / external_apply_urlApply option as printed and the employer or ATS URL when the application leaves the platform
company_nameEmployer or recruiter name
company_typedirect_employer or human_resource_manager (recruitment agency)
company_websiteEmployer website (when listed)
company_addressStreet, postcode and city of the contact block (when listed)
company_logo_urlEmployer logo (when uploaded)
location / cityCity of the workplace
regionDutch province
street_address / postal_codeWorkplace address
latitude / longitudeWorkplace coordinates
posted_atExact publication timestamp (ISO 8601, UTC)
expires_atVacancy expiry timestamp
employment_typepermanent, temporary, internship, freelance, temp_agency, on_call
contract_typesAll contract types as printed (Dutch)
workplace_type / remote_optionhybrid, remote or on-site, when stated
min_hours / max_hours / working_hoursWeekly hours range and a readable text
study_level / education_requiredRequired education level, normalised and as printed
position_levelCareer level (Starter, Ervaren, ...)
category / categories / industriesPlatform category and industry labels
occupation / isco_codeStandardised occupation title and ISCO code
salary_min / salary_maxEUR amounts (null when not stated)
salary_currency / salary_period / salary_textCurrency, period (month, year, hour) and a readable range
caoCollective labour agreement mentioned in the text, for example CAO VVT (often null)
description_snippet / description_full / description_html / description_mdDescription in four formats
contact_name / contact_firstname / contact_lastnameContact person
contact_email / contact_phoneContact person email and phone (scalar)
contact_emails / contact_phones / contact_urlsArrays: contact email plus emails found in the text, phones, contact website
originFeed that supplied the vacancy
applicants_countApplications counted by the platform (null when 0)
search_queryThe query that found this row
source_platform / scraped_atSource 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
}
ParameterTypeDefaultDescription
searchQueriesstring[]-Keywords in Dutch or English. Each runs as a separate search. Leave empty (with no searchUrls) to get the newest vacancies overall.
locationstring-City filter (Amsterdam, Rotterdam, Utrecht, ...)
searchUrlsstring[]-nationalevacaturebank.nl search URLs (the query and location parameters are used)
maxResultsinteger100 (20 when no keywords or URLs)Total cap across all queries
maxResultsPerQueryinteger100Cap per keyword or URL. Set it below maxResults so every query gets rows.
sortBystringnewestnewest (most recent first, right for scheduled scrapes) or distance (nearest to location)
postedWithinDaysnumber-Only jobs posted in the last N days. With newest the search stops at the first older job.
titleFilterstring-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:

DutchEnglish
Vastpermanent
Tijdelijktemporary
Stageinternship
Freelance / ZZPfreelance
Uitzendkrachttemp_agency
Oproepkrachton_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:

EventPriceDescription
actor-start$0.001Charged once per run
job-serp-result$0.003Charged 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

  • description is the same value as description_snippet. Both are emitted; description stays for backward compatibility.
  • posted_at_datetime is the same value as posted_at (canonical name since 2026-09-29). Both are emitted.
  • workplace_type is the same source as remote_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.

Feed the company_website field from this actor's output into one of the two below to enrich rows with contact data.

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.