VDAB.be Scraper: Belgium Flanders Jobs, Vacatures & Employers avatar

VDAB.be Scraper: Belgium Flanders Jobs, Vacatures & Employers

Pricing

Pay per event

Go to Apify Store
VDAB.be Scraper: Belgium Flanders Jobs, Vacatures & Employers

VDAB.be Scraper: Belgium Flanders Jobs, Vacatures & Employers

Extract job listings from VDAB.be, Belgium's Flemish public employment service. Returns title, company, location, Flemish province, employment type, salary, full description and contact details. Covers Flanders and Brussels.

Pricing

Pay per event

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

VDAB.be Scraper: Belgium Flanders Jobs, Vacatures and Employers

Extract job listings from VDAB.be, Belgium's official Flemish public employment service (Vlaamse Dienst voor Arbeidsbemiddeling en Beroepsopleiding). Returns structured job data including title, company, Flemish province, employment type, salary, full description, external apply URL, company website and company social media links.

Covers Flanders and Brussels Capital Region — where the majority of Belgian tech, logistics, healthcare and engineering roles are posted. Wallonia uses a separate PES (Forem).


What It Does

  • Searches VDAB.be for any keyword in Dutch or English
  • Extracts job cards: title, company, location, Flemish province, contract type, logo, posted date
  • Fetches detail pages using Googlebot pre-rendering to unlock full job data (no browser required)
  • Returns full description in plain text, HTML and Markdown from JSON-LD structured data
  • Extracts external apply URL (employer's ATS or jobs portal link, e.g. Jobat, StepStone)
  • Extracts company website from the VDAB detail page
  • Optionally fetches company profile for social media links (LinkedIn, Twitter, Facebook, Instagram) and company about text
  • Extracts salary from JSON-LD structured data (min/max, currency, period)
  • Maps Belgian employment types (voltijds, deeltijds, interim, stage, leercontract)
  • Maps locations to Flemish provinces (Antwerpen, Oost-Vlaanderen, West-Vlaanderen, Vlaams-Brabant, Limburg) and Brussels
  • Sorts results by newest first by default — ideal for scheduled daily scrapes

Sample Output

{
"_type": "job",
"id": "74510331",
"title": "Junior Software Engineer",
"job_url": "https://www.vdab.be/vindeenjob/vacatures/74510331/junior-software-engineer",
"source_url": "https://www.vdab.be/vindeenjob/vacatures/74510331/junior-software-engineer",
"source_platform": "vdab.be",
"company_name": "Noel Franklin",
"company_website": "https://www.noelfranklin.com",
"company_logo_url": "https://cdn.app-prd-cdn.aws.vdab-prd.be/vindeenjob/templates/bedrijven/4117/logo.jpg",
"company_social_urls": [
"https://www.linkedin.com/company/18802263/",
"https://www.facebook.com/DeFranklins",
"https://www.instagram.com/noelfranklin.agency/"
],
"company_about": "Bij Noël Franklin draait alles om de juiste match. Wij voorzien echte begeleiding, inside info over bedrijven en toegang tot opportuniteiten die je nergens anders vindt...",
"location": "Roeselare",
"postal_code": "8800",
"country": "BE",
"region": "West-Vlaanderen",
"posted_at_text": "1 sep. 2026",
"posted_at_datetime": "2026-09-01T17:15:29Z",
"employment_type": "permanent",
"workplace_type": null,
"salary_min": 2800.0,
"salary_max": 4000.0,
"salary_currency": "EUR",
"salary_period": "month",
"salary_text": "EUR 2800 - 4000 per month",
"description": "Ben jij een junior software engineer met een sterke interesse in automotive en embedded systemen?...",
"description_full": "Ben jij een junior software engineer met een sterke interesse in automotive en embedded systemen?...",
"description_html": "<p>Ben jij een <strong>junior software engineer</strong>...</p>",
"description_md": "Ben jij een **junior software engineer** met een sterke interesse...",
"contact_emails": [],
"contact_phones": [],
"contact_urls": [],
"apply_url": "https://jobs.noelfranklin.com/nl/?utm_source=vdab&utm_medium=bedrijfspagina",
"search_query": "software engineer",
"scraped_at": "2026-09-02T10:00:00Z"
}

Pricing

EventWhen triggeredPrice
actor-startOnce per run$0.001
job-serp-resultPer job returned (SERP only mode)$0.003
job-detail-resultPer job returned (with detail fetch)$0.005

Example costs:

  • 100 jobs (SERP only): $0.001 + 100 x $0.003 = $0.31
  • 100 jobs (with details): $0.001 + 100 x $0.005 = $0.51
  • 1000 jobs (SERP only): $0.001 + 1000 x $0.003 = $3.00

New Apify users get $5 free monthly credit — enough for 1,600+ SERP-only job extractions.


Input Fields

FieldTypeDefaultDescription
searchQueriesarray-Keywords in Dutch or English (e.g. "programmeur", "verpleegkundige", "software engineer")
locationstring-Flemish city or region filter (e.g. "Antwerpen", "Gent", "Brussel")
searchUrlsarray-Paste VDAB.be search or direct vacancy URLs. Supports /vindeenjob/jobs/ SERP pages, /vindeenjob/vacatures/?trefwoord= search pages, and direct /vindeenjob/vacatures/{id}/{slug} vacancy URLs.
sortBystring"newest""newest" sorts by posting date descending (recommended for daily scraping); "relevance" uses VDAB's default ranking
maxResultsinteger100Total result cap across all queries
maxResultsPerQueryinteger100Cap per keyword or URL
includeJobDetailsbooleantrueFetch detail pages for full description, salary and apply URL
includeCompanyDetailsbooleanfalseAlso fetch company profile for social links and about text
maxConcurrencyinteger5Concurrent requests (1-20)

Output Fields

FieldDescription
_typeAlways "job"
idVDAB vacancy ID
titleJob title
job_urlCanonical vacancy URL on vdab.be
source_urlSame as job_url
source_platformAlways "vdab.be"
company_nameEmployer name
company_logo_urlEmployer logo from VDAB CDN
company_websiteEmployer website URL (from detail page when includeJobDetails=true)
company_social_urlsArray of social media URLs: linkedin, twitter, facebook, instagram, youtube in that order (when includeCompanyDetails=true)
company_aboutCompany about/description text from VDAB company profile (when includeCompanyDetails=true)
locationCity or municipality
postal_codeBelgian postal code (from JSON-LD structured data)
countryAlways "BE"
regionFlemish province: Antwerpen / Oost-Vlaanderen / West-Vlaanderen / Vlaams-Brabant / Limburg / Brussel
posted_at_textDutch date format: "13 jul. 2026"
posted_at_datetimeISO 8601 UTC datetime (from JSON-LD datePosted when includeJobDetails=true, date-only otherwise)
employment_typepermanent / part-time / temporary / internship / apprenticeship / flexi / freelance
workplace_typeon-site / hybrid / remote (when available in description)
salary_minMinimum salary in EUR (from JSON-LD baseSalary when listed)
salary_maxMaximum salary in EUR
salary_currencyAlways "EUR" when salary is present
salary_periodmonth / year / hour / week / day
salary_textSalary summary string
descriptionJob description snippet (up to 500 characters)
description_fullFull plain-text description with line breaks preserved
description_htmlHTML rendering of the full description
description_mdMarkdown source of the description (from VDAB's CMS)
contact_emailsEmail addresses found in description
contact_phonesBelgian phone numbers found in description
contact_urlsExternal URLs found in description
apply_urlExternal apply URL from employer's ATS or jobs portal (from JSON-LD hiringOrganization.sameAs). Falls back to VDAB job URL when not available.
search_queryQuery that returned this result
scraped_atISO 8601 UTC scrape timestamp

How It Works

VDAB.be uses Angular Universal (server-side rendering for SEO). The scraper uses a two-stage fetch:

  1. SERP — Verbolia static HTML pages at /vindeenjob/jobs/{keyword-slug} serve up to 28 job cards per page as plain HTML (no JS required). These contain: title, company name, location, contract type, logo URL, posted date, description snippet.

  2. Detail — Vacancy detail pages at /vindeenjob/vacatures/{id}/{slug} are fetched using a Googlebot User-Agent. VDAB's Angular Universal pre-renders full content for this UA (~79KB vs 46KB SPA shell), exposing JSON-LD JobPosting data with: full description in Markdown, salary (min/max/currency/period), ISO datePosted, postal code, company info and apply URL.

  3. Company (optional) — Company profile pages at /vindeenjob/bedrijven/{id} are also pre-rendered for Googlebot, exposing: company about text, social media links (Facebook, Twitter, LinkedIn, Instagram).


Use with AI Agents (MCP)

{
"mcpServers": {
"apify": {
"command": "npx",
"args": ["-y", "@apify/mcp-server"],
"env": { "APIFY_TOKEN": "your_token" }
}
}
}

Then ask your AI: "Search VDAB for software engineer jobs in Antwerpen and return the results as JSON."


Why This Scraper

  • Full descriptions: Extracts complete job descriptions via Angular Universal pre-rendering — no browser, no Playwright
  • External apply URLs: Returns the real employer ATS link, not just the VDAB page
  • Company enrichment: Social media profiles and about text from VDAB company pages
  • Structured salary data: Parsed from JSON-LD structured data (min/max/period)
  • Public sector data: VDAB is the official Flemish public employment service — all listings are freely accessible
  • HTTP-only Go: No browser, no Playwright, no Puppeteer. Fast, cheap, reliable
  • Flemish market coverage: VDAB is the primary job board for Flemish speakers in Belgium
  • Apprenticeship coverage: VDAB includes dual-training jobs (leercontract) not found on commercial boards
  • Province mapping: Automatically maps Belgian municipalities to Flemish province
  • Incremental-ready: Default sort-by-newest makes daily scheduled runs trivial

Common Use Cases

  • Scheduled daily scraping: Run on a schedule with sortBy: "newest" and a small maxResults cap (e.g. 50-100) to capture only new listings each day. Deduplicate downstream by id or job_url.
  • Market research: Track job postings in specific Flemish provinces or sectors
  • Salary benchmarking: Identify salary ranges for Belgian roles (structured min/max data from JSON-LD)
  • Talent pipeline: Monitor which companies are hiring in Flanders
  • Lead generation: Combine company_website and company_social_urls for B2B outreach
  • Public sector jobs: VDAB lists Belgian government, education and healthcare vacancies
  • Apprenticeship tracking: Monitor dual-training (leercontract) opportunities by sector

Notes and Limits

  • Coverage: Flanders and Brussels Capital Region only. Wallonia (French-speaking) uses Forem.
  • Language: Most listings are in Dutch (nl-BE). Some Brussels listings may be in French or English.
  • Results per query: Up to 28 results per keyword search via the static SERP pages.
  • apply_url: Points to the employer's ATS homepage (e.g. jobs.noelfranklin.com/nl/) with VDAB tracking UTMs. The deep-link to the specific vacancy on the external ATS is only available inside the Angular SPA.
  • company_social_urls: Requires includeCompanyDetails: true. Fetches one additional page per job.
  • company_open_jobs_count: Not available (VDAB's count API requires authentication).
  • Authentication: VDAB's session-gated REST API is not used — all data comes from public pages.
  • Update frequency: VDAB listings refresh daily. Run daily for fresh data.
  • Salary data: Belgian salaries are often listed as gross monthly ("brut per maand"). "In overleg" means negotiable.
  • Employment types: voltijds (full-time), deeltijds (part-time), interim (temp agency), stage (internship), leercontract (apprenticeship).


Support

Issues or questions? Open a ticket on the Issues tab or email contact@nanoscrape.com.