VDAB.be Job Scraper
Pricing
from $1.00 / 1,000 results
VDAB.be Job Scraper
Scrape job listings from VDAB.be — Belgium's public employment service and the largest Flemish job board. Filter by keyword, location, province, contract type and occupational field. Full descriptions in HTML, text and Markdown. No API key required.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Actor stats
1
Bookmarked
5
Total users
3
Monthly active users
an hour ago
Last modified
Categories
Share
VDAB Scraper

Scrape job listings from vdab.be — the official Flemish public employment service with 50,000+ active vacancies across Belgium. Filter by keyword, location, province, contract type, and work regime. No API key required. Access to all public and private sector vacancies in one place.
Why this scraper?
🏛️ Official Belgian employment source
VDAB is the Flemish government's official employment service — the authoritative source for job market data in Flanders, Brussels, and beyond. Every vacancy listed on vdab.be is verified and actively managed, unlike aggregators that scrape third-party sites.
🔄 Repost detection — unique in the market
Companies frequently republish the same vacancy to push it back to the top. This scraper detects reposts automatically and flags them — so you only pay for genuinely new listings.
Each result includes:
isRepost: true/false— is this a republished vacancy?originalPublishDate— when did this vacancy first appear?originalUrl— link to the original listing
Use skipReposts: true to automatically exclude reposts from your results.
🇧🇪 Bottleneck profession flag
VDAB marks certain professions as knelpuntberoep — occupations with structural labour market shortages in Belgium. This scraper captures that flag directly:
knelpuntberoep: true/false— official VDAB labour market classification
Use this field to prioritize shortage-sector vacancies in recruitment pipelines or labour market analyses.
📄 Rich description structure
VDAB vacancies are structured in three distinct sections, each returned separately:
| Field | Content |
|---|---|
description / descriptionText / descriptionMarkdown | Main job description |
requirements | Candidate profile and qualifications |
offer / offerText | Salary, benefits, and working conditions |
The Markdown description is optimized for RAG pipelines and LLM agents.
⚡ Configurable detail fetching
Toggle fetchDetails to choose between two modes:
fetchDetails: true(default) — full description, requirements, offer, salary, and contact info per vacancyfetchDetails: false— list-only mode: title, company, city, contract type, and publish date only — 30× faster
Use list-only mode for monitoring or bulk cataloguing, and detail mode when you need the full vacancy content.
💰 Salary extraction from offer text
Salary information on VDAB is embedded in the offer section as free text. This scraper parses those values automatically:
| Field | Example |
|---|---|
salaryMin | 3500 |
salaryMax | 5000 |
salaryType | "monthly" |
Input parameters
| Parameter | Type | Description | Default |
|-----------|------|-------------|---------||
| keyword | string | Search term, e.g. "developer" or "verpleegkundige". Leave empty for all vacancies. | — |
| keyword2 | string | Optional second keyword — scraped in the same run | — |
| keyword3 | string | Optional third keyword — scraped in the same run | — |
| location | string | Filter by city or municipality, e.g. "Gent" or "Antwerpen" | — |
| province | string | Filter by province, e.g. "oost-vlaanderen" or "Limburg" | — |
| contractType | string | Filter by contract type, e.g. "Vaste Job" or "Interim" | — |
| workRegime | string | Filter by work schedule, e.g. "voltijds" or "Dagwerk" | — |
| sort | select | Standard / Most recent / Most relevant | Standard |
| maxResults | integer | Maximum number of vacancies to collect (1–10,000) | 100 |
| fetchDetails | boolean | Fetch full description, salary, requirements, and contact info per result | true |
| daysOld | integer | Only include vacancies published within the last N days | — |
| skipReposts | boolean | Skip vacancies already seen in previous runs | false |
| startUrls | array | Scrape specific vacancy URLs directly | — |
| requestDelayMs | integer | Delay between requests in milliseconds | 150 |
| maxPagesToScan | integer | Maximum search pages to scan (1 page = 25 items) | 200 |
Output schema
{"id": "73322557","url": "https://www.vdab.be/vindeenjob/vacatures/73322557","source": "vdab.be","title": "Verpleegkundige intensieve zorgen","company": "UZ Gent","companyWebsite": "https://www.uzgent.be","city": "Gent","contractType": "Vaste Job","workRegime": "Dagwerk","fullTimePartTime": "voltijds","experience": "Geen ervaring vereist","educationLevel": ["Bachelor"],"publishDate": "2026-03-18","modifyDate": "2026-03-20","description": "<p>Als verpleegkundige op onze IZ afdeling...</p>","descriptionText": "Als verpleegkundige op onze IZ afdeling...","descriptionMarkdown": "## Functieomschrijving\n\nAls verpleegkundige...","requirements": "<p>Je beschikt over een bachelor verpleegkunde...</p>","offer": "<p>Wij bieden een marktconform salaris...</p>","offerText": "Wij bieden een marktconform salaris...","salaryMin": 3200,"salaryMax": 4800,"salaryType": "monthly","contactName": "Sarah Declercq","contactEmail": "s.declercq@uzgent.be","contactPhone": null,"applyUrl": null,"logoUrl": "https://www.vdab.be/img/logo/uzgent.png","knelpuntberoep": true,"isRepost": false,"originalPublishDate": null,"originalUrl": null,"contentHash": "sha256-abc...","scrapedAt": "2026-03-22T10:00:00.000Z"}
Examples
Developer vacancies in Antwerp:
{ "keyword": "developer", "location": "Antwerpen" }
Bottleneck professions only, most recent, no reposts:
{ "keyword": "verpleegkundige", "sort": "recent", "skipReposts": true }
Fast bulk collection — list mode, last 7 days, three sectors:
{"keyword": "logistiek","keyword2": "chauffeur","keyword3": "magazijnier","fetchDetails": false,"daysOld": 7,"maxResults": 2000}
Scrape a specific vacancy directly:
{"startUrls": [{ "url": "https://www.vdab.be/vindeenjob/vacatures/73322557" }]}
💰 Pricing
$1.00 per 1,000 results — you only pay for successfully retrieved vacancies. Failed retries and filtered reposts are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.10 |
| 1,000 | ~$1.00 |
| 10,000 | ~$10.00 |
| 100,000 | ~$100.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 and fetchDetails: false for list-only runs to control your spend exactly.
Pricing
This actor uses Pay Per Result pricing at $1 per 1,000 results.
| Volume | Cost |
|---|---|
| 100 results | $0.10 |
| 1,000 results | $1 |
| 10,000 results | $10.00 |
No subscription fees. Pay only for successfully scraped listings.
Performance
| Mode | Run | Time |
|---|---|---|
List only (fetchDetails: false) | 100 vacancies | ~5s |
List only (fetchDetails: false) | 1,000 vacancies | ~1 min |
Full details (fetchDetails: true) | 50 vacancies | ~20 min |
Full details (fetchDetails: true) | 100 vacancies | ~40 min |
Full detail mode loads each vacancy page individually. Use list-only mode for high-volume monitoring and detail mode when full descriptions and contact info are required.
Known limitations
- Apply URL: VDAB uses an on-site application modal —
applyUrlisnullfor most listings. External apply links are captured when available. - Salary: Not structured in the vacancy data — extracted from the offer text where possible.
salaryMinandsalaryMaxarenullwhen salary is not mentioned. - Contact phone: Rarely published on VDAB; VDAB support numbers are filtered automatically.
contactPhoneisnullfor most listings. - Province: Not available as a structured output field — use the
provinceinput filter for server-side filtering. - Detail speed: Full detail mode navigates each vacancy page individually and is significantly slower than list-only mode. Set
maxResultscarefully when usingfetchDetails: true.
Technical details
- Source: vdab.be — official Flemish public employment service, 50,000+ active vacancies
- Memory: 1024 MB
- Proxy: Apify RESIDENTIAL
- Repost storage: KeyValueStore
vdab-job-dedup, 90-day TTL - Retry: Automatic retry on network errors, exponential backoff
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.