VDAB.be Job Scraper avatar

VDAB.be Job Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
VDAB.be Job Scraper

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

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

5

Total users

3

Monthly active users

an hour ago

Last modified

Share

VDAB Scraper

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:

FieldContent
description / descriptionText / descriptionMarkdownMain job description
requirementsCandidate profile and qualifications
offer / offerTextSalary, 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 vacancy
  • fetchDetails: 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:

FieldExample
salaryMin3500
salaryMax5000
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.

ResultsCost
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.

VolumeCost
100 results$0.10
1,000 results$1
10,000 results$10.00

No subscription fees. Pay only for successfully scraped listings.


Performance

ModeRunTime
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 — applyUrl is null for most listings. External apply links are captured when available.
  • Salary: Not structured in the vacancy data — extracted from the offer text where possible. salaryMin and salaryMax are null when salary is not mentioned.
  • Contact phone: Rarely published on VDAB; VDAB support numbers are filtered automatically. contactPhone is null for most listings.
  • Province: Not available as a structured output field — use the province input filter for server-side filtering.
  • Detail speed: Full detail mode navigates each vacancy page individually and is significantly slower than list-only mode. Set maxResults carefully when using fetchDetails: 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.