Nationale Vacaturebank Scraper
Pricing
from $1.60 / 1,000 results
Nationale Vacaturebank Scraper
[๐ฐ $1.60 / 1K] Extract job listings from Nationale Vacaturebank (nationalevacaturebank.nl), one of the Netherlands' largest job boards. Search by keyword, location, contract type, education, and career level to get titles, companies, salaries, locations, descriptions, contacts, and apply links.
Pricing
from $1.60 / 1,000 results
Rating
0.0
(0)
Developer
SolidCode
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
11 days ago
Last modified
Categories
Share
Pull job listings from Nationale Vacaturebank โ one of the Netherlands' largest job boards, with roughly 102,000 live vacancies โ including title, company, salary range, GPS coordinates, apply links, and employer contact details where published, as clean structured rows. Search by keyword, city, province, contract type, education level, and posting date, or paste a search URL you already filtered. Built for Dutch-market recruiters, labour-market analysts, and lead-generation teams who need fresh NL vacancy data without copy-pasting postings by hand.
Why This Scraper?
- Around 102,000 live Dutch vacancies โ one run reaches the full breadth of a top-tier Netherlands job board, with no per-city setup or link-building.
- GPS coordinates on every job โ latitude and longitude for each posting, ready for map dashboards and radius analysis with no separate geocoding step.
- Employer contacts where published โ recruiter name and email on the majority of listings, plus a direct phone number where the employer lists one; descriptions are also mined for any extra emails, phones, and links they contain.
- Three Dutch education levels โ filter by MBO (vocational), HBO (university of applied sciences), or WO (university), the exact taxonomy Dutch employers hire against.
- City and province targeting โ search a single city like Amsterdam, or sweep an entire province like Noord-Holland; all 12 Dutch provinces are recognised automatically.
- Parsed salary min, max, and period โ a normalised euro range plus a month/year/hour period on every job that publishes pay, not just a raw text blob.
- Four contract types and two career levels โ Permanent (Vast), Temporary (Tijdelijk), Internship (Stage), and Freelance/ZZP, combined with Starter or Experienced.
- Plain-text or HTML descriptions โ choose clean text, the original HTML, or both; the full body is always included and never truncated.
- Up to 5,000 jobs per keyword, 50 keywords per run โ batch dozens of role searches at once, globally de-duplicated on job ID so overlapping searches never repeat a listing.
Use Cases
Recruitment & Sourcing
- Build target lists of open roles by keyword, city, or province
- Track competitor hiring across MBO, HBO, and WO education levels
- Monitor fresh postings with the "Posted Within" window (last 1โ30 days)
- Pull recruiter name and email for outreach, with a direct phone where the employer lists one
Labour-Market Research
- Map vacancy density across the 12 Dutch provinces using GPS coordinates
- Analyse salary ranges by sector, city, or education level
- Track hiring demand for specific skills and job titles over time
- Compare full-time vs part-time supply using the working-hours range
Lead Generation
- Build employer contact lists with recruiter name and email, plus phone where published
- Identify companies actively hiring in your niche
- Capture company website and logo when the employer publishes them
- Harvest every email, phone, and link embedded in job descriptions
Salary Benchmarking
- Compare parsed salary minimums and maximums across cities and sectors
- Normalise monthly, yearly, and hourly pay for apples-to-apples analysis
- Track compensation trends for specific job titles
- Benchmark Starter vs Experienced pay bands
Data Enrichment & Integration
- Feed live Dutch vacancy data into dashboards and applicant-tracking systems
- Power job-aggregator and comparison sites
- Enrich existing employer databases with current openings
- Trigger downstream alerts on new postings that match saved searches
Getting Started
Quick Keyword Search
The simplest way to start โ one keyword and a result cap:
{"searchQueries": ["software developer"],"maxResults": 50}
City Search with Filters
{"searchQueries": ["verpleegkundige"],"location": "Rotterdam","contractType": "permanent","educationLevel": "hbo","maxResults": 200}
Province Sweep, Fresh Jobs Only
{"searchQueries": ["projectmanager", "data analist", "recruiter"],"location": "Noord-Holland","careerLevel": "experienced","datePosted": "7","descriptionFormat": "both","maxResults": 1000}
Using a Nationale Vacaturebank URL
Paste a search-results URL you already filtered in your browser โ its filters are honoured as-is and pagination is automatic:
{"startUrls": [{ "url": "https://www.nationalevacaturebank.nl/vacatures?query=marketing&filters[city][]=Amsterdam" }],"maxResults": 500}
Input Reference
Search
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | ["software developer"] | Job titles or keywords, such as "verpleegkundige" or "projectmanager". Each keyword runs its own search; results are merged and de-duplicated. Up to 50 keywords. |
startUrls | URL[] | [] | Paste full Nationale Vacaturebank search-result URLs. Any filters already in the URL are used exactly as-is, and pagination is handled for you. Up to 100 URLs. |
Filters & Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
location | string | "" | A Dutch city or province, e.g. "Amsterdam", "Rotterdam", or "Noord-Holland". Names shared by a city and a province (Utrecht, Groningen, Overijssel) match the whole province โ search a nearby distinct city to target just the city. Empty searches the whole of the Netherlands. |
contractType | select | Any | Permanent (Vast), Temporary (Tijdelijk), Internship (Stage), or Freelance / ZZP. |
educationLevel | select | Any | MBO (vocational), HBO (university of applied sciences), or WO (university). |
careerLevel | select | Any | Starter or Experienced (Ervaren). |
datePosted | select | Any time | Only jobs published within the last 24 hours, 3, 7, 14, or 30 days. |
maxResults | integer | 50 | Maximum jobs to collect per keyword, up to 5,000. Returns approximately this many โ a few extra rows may be added to finish the final page. |
Advanced
| Parameter | Type | Default | Description |
|---|---|---|---|
descriptionFormat | select | Plain text | Return the full description as clean plain text, original HTML, or both in their own fields. |
Output
Each job is returned as one flat row. Here's a representative result:
{"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890","title": "Senior Software Developer","company": "Coolblue","location": "Amsterdam","city": "Amsterdam","province": "Noord-Holland","postalCode": "1011 AC","latitude": 52.3702,"longitude": 4.8952,"contractType": "Permanent","educationLevel": "HBO","careerLevel": "Experienced","workingHoursMin": 32,"workingHoursMax": 40,"sector": ["ICT", "Software Development"],"numberOfApplies": 14,"salaryText": "โฌ3.500 - โฌ5.848","salaryMin": 3500,"salaryMax": 5848,"salaryPeriod": "month","publishDate": "2026-07-08T00:00:00Z","expiryDate": "2026-08-08T00:00:00Z","descriptionSnippet": "Als Senior Software Developer werk je in een team aan schaalbare webapplicaties...","description": "Als Senior Software Developer werk je in een team aan schaalbare webapplicaties. Je hebt ruime ervaring met moderne cloud-infrastructuur en teamwork...","descriptionHtml": "<p>Als Senior Software Developer werk je in een team...</p>","contactName": "Sanne de Vries","contactEmail": "recruitment@coolblue.nl","contactPhone": "+31 20 123 4567","extractedEmails": ["recruitment@coolblue.nl"],"extractedPhones": ["+31 20 123 4567"],"extractedUrls": ["https://werkenbij.coolblue.nl"],"applyUrl": "https://www.nationalevacaturebank.nl/vacature/a1b2c3d4/solliciteren","companyWebsite": "https://www.coolblue.nl","companyLogo": "https://cdn.nationalevacaturebank.nl/logos/coolblue-500x500.png","jobUrl": "https://www.nationalevacaturebank.nl/vacature/a1b2c3d4/senior-software-developer","searchQuery": "software developer","scrapedAt": "2026-07-12T14:30:00Z"}
Core Fields
| Field | Type | Description |
|---|---|---|
jobId | string | Unique Nationale Vacaturebank job identifier |
title | string | Job title |
company | string | Hiring company / employer name |
sector | string[] | Sectors, industries, and categories the job is filed under |
numberOfApplies | number | Number of applicants so far, when published |
publishDate | string | Date the job was posted (ISO-8601) |
expiryDate | string | Application deadline / expiry date, when present |
jobUrl | string | Canonical Nationale Vacaturebank job-page URL |
applyUrl | string | Apply / application URL (falls back to the job page) |
searchQuery | string | The keyword or URL that produced this row |
scrapedAt | string | ISO timestamp of when the record was collected |
Location & Coordinates
| Field | Type | Description |
|---|---|---|
location | string | Listed location text as shown on the posting |
city | string | Parsed city name |
province | string | Dutch province |
postalCode | string | Dutch postal code, when present |
latitude | number | Latitude of the workplace |
longitude | number | Longitude of the workplace |
Role Details
| Field | Type | Description |
|---|---|---|
contractType | string | Permanent, Temporary, Internship, or Freelance |
educationLevel | string | Required education level (MBO / HBO / WO) |
careerLevel | string | Starter or Experienced |
workingHoursMin | number | Minimum weekly hours, when stated |
workingHoursMax | number | Maximum weekly hours, when stated |
Compensation
| Field | Type | Description |
|---|---|---|
salaryText | string | Formatted euro salary range, e.g. "โฌ3.500 - โฌ5.848" |
salaryMin | number | Parsed minimum salary |
salaryMax | number | Parsed maximum salary |
salaryPeriod | string | Pay period: month, year, or hour |
Description
| Field | Type | Description |
|---|---|---|
descriptionSnippet | string | Short teaser drawn from the full description |
description | string | Full description as plain text (when format includes text) |
descriptionHtml | string | Full description as HTML (when format includes HTML) |
Employer & Contact
| Field | Type | Description |
|---|---|---|
contactName | string | Recruiter / contact name, when published |
contactEmail | string | Contact email, when published |
contactPhone | string | Contact phone number, when published |
extractedEmails | string[] | Every email address parsed from the description |
extractedPhones | string[] | Every phone number parsed from the description |
extractedUrls | string[] | Every link parsed from the description (assets excluded) |
companyWebsite | string | Company profile / website URL, when present |
companyLogo | string | Company logo image URL, when present |
Tips for Best Results
- Start small โ run 50 results first to confirm the data matches your needs, then raise
maxResultsfor a full sweep. - Sweep a whole region with the province filter โ set
locationto a province like "Zuid-Holland" or "Noord-Brabant" to capture every city in it at once, instead of listing cities one by one. - Combine a keyword with a city for precision โ pairing "verpleegkundige" with "Rotterdam" is far tighter than either alone and cuts irrelevant rows. (Note: names shared by a city and a province โ Utrecht, Groningen, Overijssel โ search the whole province; pick a nearby distinct city to stay city-only.)
- Use
datePostedfor fresh-only monitoring โ set it to 1 or 3 days on a scheduled run to capture only new vacancies and avoid re-collecting the whole board. - Batch related keywords in one run โ add several role variations (e.g. "data analist", "data engineer", "BI analist") to
searchQueries; results are de-duplicated on job ID automatically. - Choose the right description format โ pick "Plain text" for analysis and search, "HTML" to preserve formatting for republishing, or "Both" when you need each.
- Mine descriptions for contacts โ
extractedEmailsandextractedPhonesoccasionally surface direct hiring contacts that aren't in the structured recruiter fields; treat them as a bonus, not a primary source.
Pricing
From $1.60 per 1,000 results โ cheaper than comparable Dutch job-board extractors, with no per-run start-up premium. Bronze, Silver, and Gold subscribers pay progressively less; the table below shows the total cost at each discount tier.
| Results | No discount | Bronze | Silver | Gold |
|---|---|---|---|---|
| 100 | $0.19 | $0.18 | $0.17 | $0.16 |
| 1,000 | $1.90 | $1.80 | $1.70 | $1.60 |
| 10,000 | $19.00 | $18.00 | $17.00 | $16.00 |
| 100,000 | $190.00 | $180.00 | $170.00 | $160.00 |
A "result" is any job row in the output dataset. No compute or time-based charges โ you pay per result, plus a small fixed per-run start fee.
Integrations
Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:
- Zapier / Make / n8n โ Workflow automation
- Google Sheets โ Direct spreadsheet export
- Slack / Email โ Notifications on new results
- Webhooks โ Trigger custom integrations on run completion
- Apify API โ Full programmatic access
Legal & Ethical Use
This actor is designed for legitimate recruitment research, labour-market analysis, and lead generation. Users are responsible for complying with applicable laws โ including the GDPR when handling personal data such as recruiter contact details โ and with Nationale Vacaturebank's Terms of Service. Do not use extracted data for spam, harassment, or any unlawful purpose.