VDAB Search Scraper avatar

VDAB Search Scraper

Pricing

from $2.99 / 1,000 vdab job records

Go to Apify Store
VDAB Search Scraper

VDAB Search Scraper

Scrape current VDAB search and detail pages with rich job, employer, contract, profile, skill, salary, workplace, and application data.

Pricing

from $2.99 / 1,000 vdab job records

Rating

0.0

(0)

Developer

Jobs API

Jobs API

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

VDAB Jobs Search Scraper

Search VDAB's public vacancy listings and enrich selected jobs from their public detail records. The Actor returns business information published for each vacancy and stores a separate compact run summary.

Choose a mode

  • search searches VDAB by query, then enriches up to maxItems vacancies. This is the default mode.
  • single enriches exactly one URL in jobUrls.
  • multiple enriches 1 to 20 URLs in jobUrls.

Vacancy URLs must use the public HTTPS route https://www.vdab.be/vindeenjob/vacatures/<numeric-id> with an optional single slug. The apex domain vdab.be is accepted and normalized to www.vdab.be. Query strings, fragments, credentials, ports, and other routes are rejected.

Input fields

All ten fields are optional in the input object and receive the defaults below. jobUrls is conditionally required by direct modes. Unknown fields and legacy aliases such as jobUrl and startUrls are rejected. Values are validated as supplied; the Actor does not coerce or clamp them.

FieldTypeRequired?DefaultBounds or notes
modestringNosearchsearch, single, or multiple.
querystringNoontwikkelaarNon-empty, up to 100 Unicode characters. Direct modes accept only the default value.
jobUrlsarray of stringsConditional[]0 to 20 native VDAB vacancy URLs. Search requires an empty array; single requires exactly 1; multiple requires 1 to 20. Each URL is at most 2,048 characters.
maxPagesintegerNo1Search: 1 to 5 pages. Direct modes require 1.
maxItemsintegerNo31 to 100 records in every mode.
pageSizeintegerNo28Search: 1 to 100 results per page. Direct modes require 28.
maxRequestsintegerNo201 to 200 total source requests, including robots checks and redirect hops.
requestDelayMsintegerNo10001,000 to 10,000 milliseconds between source requests.
requestTimeoutSecsintegerNo305 to 30 seconds per request.
proxyConfigurationobjectNo{}Apify proxy controls or 1 to 10 custom HTTP(S) proxy URLs, each at most 2,048 characters. The two proxy styles cannot be combined. See below.

For a search, the Actor reads VDAB's public /vindeenjob/jobs/<query> listing pages. The site's visible page size is 28, which is also the default. Direct modes use only the supplied vacancy URLs; they accept the default query, one page, and page size 28 because search settings do not apply there.

Proxy settings

proxyConfiguration supports these standard Apify fields:

FieldTypeBounds or notes
useApifyProxybooleanEnables Apify Proxy when true.
apifyProxyGroupsarray of stringsUp to 5 unique names, 1 to 64 characters, using uppercase letters, digits, and underscores; requires useApifyProxy: true, including for an empty array.
apifyProxyCountrystringTwo uppercase letters; requires useApifyProxy: true.
proxyUrlsarray of strings1 to 10 valid HTTP(S) proxy URLs, each at most 2,048 characters. Cannot appear with any Apify proxy field.

Example search input:

{
"mode": "search",
"query": "software ontwikkelaar",
"maxPages": 1,
"maxItems": 3,
"pageSize": 28,
"maxRequests": 20,
"requestDelayMs": 1000,
"requestTimeoutSecs": 30
}

The repository also includes INPUT.json, INPUT-single.json, and INPUT-multiple.json examples using the supported input fields.

Job records

Each dataset row is a business record for a public vacancy. jobId, jobTitle, and jobUrl are required. Other values are omitted when VDAB does not publish them; explicit false and 0 values are retained. The listing employer label can differ from the company-profile name, so company and companyProfileName are separate fields. The client object is included only when VDAB makes those client details visible.

FieldMeaning
jobIdNumeric VDAB vacancy identifier.
jobTitleVacancy title from the public detail record.
jobUrlCanonical public VDAB page URL.
companyEmployer or recruiter label, using the search-card label when available.
companyIdPublic identity number for the employer organization.
companyProfileNameOrganization name in the company-profile section.
companyWebsite, companyLogoPublic website and logo URLs from the company profile.
companyDescriptionPublished company-profile description.
companyLocalityMunicipality published for the company profile; this is separate from the vacancy's work location.
clientVisible client or hiring-organization details; included only when VDAB explicitly permits the opdrachtgever to be shown. Nested fields are listed below.
location, country, address, workplacePrimary work-location label, country, address, and other published workplace wording.
locationsStructured work locations; nested fields are listed below.
description, descriptionHtmlFull readable description and its sanitized HTML version.
requirements, requirementsHtmlFull readable qualifications and requirements, with sanitized HTML when available.
offer, offerHtmlCompensation and benefits wording, with sanitized HTML when available.
professionalSkillsPublished skills and competencies.
personalCompetenciesPublished personal competencies; omitted when VDAB provides none.
attestationsAttestations published as vacancy requirements; omitted when empty.
vocationalAttestationsVocational or professional competency attestations; omitted when empty.
responsibilitiesResponsibilities published for the vacancy.
educationRequirementsPublished education requirement wording.
contractDetailsPublished contract, duration, schedule, or work-time labels.
employmentTypesEmployment types published for the vacancy.
languagesPublished language names and proficiency levels.
requiredStudiesPublished study or education labels.
experiencePublished experience requirements.
licensesDriving or other licenses published as job requirements.
workHoursPublished work-hour values or schedule details.
otherFactsAdditional published facts from occupation or qualification sections.
proposedEmploymentContractProposed contract details; nested fields are listed below.
studiesEquivalentByExperienceWhether VDAB says experience can count as equivalent to the listed studies.
regulatedProfessionWhether VDAB marks the occupation as a regulated profession. Explicit false is retained.
workplaceTypePublished workplace arrangement or location type.
jobStartDateExpected start date or timestamp.
contractDurationPublished contract-duration wording.
positionsAvailableNonnegative integer count of published vacancies.
directApplyWhether the vacancy is marked for direct application.
salaryTextPublished salary wording or a concise range made from explicit salary values.
salaryCurrency, salaryMin, salaryMax, salaryPeriodPublished currency, lower and upper salary bounds, and salary period.
datePosted, lastUpdatedOn, validThroughPublished posting, modification, and application-validity dates or timestamps. Date-only source values remain date-only.
isShortageOccupationWhether VDAB marks the occupation as a shortage occupation.
occupation, jobDomainPublished occupation or professional-profile name and job-domain label.
referenceNumberEmployer or VDAB vacancy reference.
applicationInstructions, applicationInstructionsHtmlPublished application instructions, with sanitized HTML when available.
applicationContactPublished application contact name or organization.
applicationAddressPublished application address details.
applicationMethodsPublished application channels; nested fields are listed below.
applicationEmail, applicationPhone, applicationUrlPublished application email, phone number, and external application URL.
applicationViaVDAB, applicationViaVisit, applicationViaLetterWhether VDAB explicitly lists application through VDAB, in person, or by letter.

locations is an array of objects. Each object can contain locality (city or municipality), postalCode, countryCode, region, and address. The optional client object contains the visible client name, companyNumber, address, locality, postalCode, and country; companyNumber is text so leading zeroes are preserved. proposedEmploymentContract can contain contract (contract type), contractLine (published contract wording), and startAsSoonAsPossible (whether VDAB says the job should start as soon as possible). Explicit false and true values are retained. applicationMethods is an array of channel objects with type (such as web, email, phone, letter, visit, or Via VDAB), label (the displayed channel name), value (the published destination or wording), and url (for a web link). The other list fields contain strings; optional skills and attestation arrays are omitted when empty.

Fictional job record

The following complete example is fictional. Its employer uses the reserved .example domain, and its vacancy identifier is illustrative; it is not a record retrieved from VDAB.

{
"jobId": "99999999",
"jobTitle": "Fictional Senior Product Engineer",
"company": "Example Public Employer",
"companyId": 432100,
"companyProfileName": "Example Product Cooperative",
"companyWebsite": "https://company.example",
"companyLogo": "https://company.example/logo.svg",
"companyDescription": "An explicitly fictional cooperative that builds accessible civic software.",
"companyLocality": "Leuven",
"client": {
"name": "Fictional Public Services Client",
"companyNumber": "0012345678",
"address": "Exampledreef 5",
"locality": "Mechelen",
"postalCode": "2800",
"country": "België"
},
"location": "9000 Gent",
"country": "België",
"address": "Exampleplein 12, 9000 Gent",
"locations": [
{
"locality": "Gent",
"postalCode": "9000",
"countryCode": "BE",
"region": "Oost-Vlaanderen",
"address": "Exampleplein 12, 9000 Gent"
}
],
"workplace": "Gent en hybride",
"description": "This fictional role designs and maintains accessible public-service software. The engineer works with product, design, and operations colleagues to plan changes, build reliable services, document decisions, and improve systems using feedback from their users.",
"descriptionHtml": "<p>This fictional role designs and maintains <strong>accessible public-service software</strong>.</p><ul><li>Plan and build reliable services</li><li>Document decisions and improve systems</li></ul>",
"requirements": "Applicants should have at least three years of experience building web services, an understanding of accessible interface design, and the ability to explain technical decisions clearly. A related degree is welcome; equivalent professional experience is accepted.",
"requirementsHtml": "<p>Applicants should have at least <strong>three years of experience</strong> building web services.</p><p>Equivalent professional experience is accepted.</p>",
"offer": "The fictional employer offers a permanent full-time contract, flexible hours, a monthly salary range of EUR 3,200 to EUR 4,100, meal vouchers, and a learning budget.",
"offerHtml": "<p>A permanent full-time contract with flexible hours.</p><ul><li>EUR 3,200 to EUR 4,100 per month</li><li>Meal vouchers and a learning budget</li></ul>",
"professionalSkills": [
"Softwareontwikkeling",
"Toegankelijke webinterfaces ontwerpen"
],
"personalCompetencies": [
"Careful communication with service users"
],
"attestations": [
"Fictional first-aid attestation"
],
"vocationalAttestations": [
"Fictional accessibility testing attestation"
],
"responsibilities": "Plan, build, test, and maintain accessible public-service software with a cross-functional team.",
"educationRequirements": "Bachelor degree in computer science or equivalent experience.",
"contractDetails": [
"Vaste job",
"voltijds",
"Flexibele uren"
],
"employmentTypes": [
"FULL_TIME"
],
"languages": [
"Nederlands (Zeer goed)",
"Engels (Goed)"
],
"requiredStudies": [
"Bachelor: Informatica"
],
"experience": [
"Minstens 3 jaar ervaring"
],
"licenses": [
"Rijbewijs B"
],
"workHours": [
"38 uur per week",
"Flexibele daguren"
],
"otherFacts": [
"Fictional team works across product, design, and operations."
],
"proposedEmploymentContract": {
"contract": "Vaste arbeidsovereenkomst",
"contractLine": "Vaste job van onbepaalde duur",
"startAsSoonAsPossible": false
},
"studiesEquivalentByExperience": true,
"regulatedProfession": false,
"workplaceType": "HYBRID",
"jobStartDate": "2027-02-01",
"contractDuration": "Onbepaalde duur",
"positionsAvailable": 2,
"directApply": true,
"applicationInstructions": "Send a short introduction and a link to relevant work using the application website.",
"applicationInstructionsHtml": "<p>Send a short introduction and a link to relevant work using the <a href=\"https://company.example/apply\">application website</a>.</p>",
"salaryText": "min 3200 max 4100 EUR per maand",
"salaryCurrency": "EUR",
"salaryMin": 3200,
"salaryMax": 4100,
"salaryPeriod": "maand",
"datePosted": "2027-01-12",
"lastUpdatedOn": "2027-01-13T09:30:00.000Z",
"validThrough": "2027-03-12",
"isShortageOccupation": false,
"occupation": "Product Engineer",
"jobDomain": "Informatica",
"referenceNumber": "FICTIONAL-PE-02",
"applicationContact": "Fictional Hiring Team",
"applicationAddress": [
"Exampleplein 12",
"9000 Gent",
"België"
],
"applicationMethods": [
{
"type": "web",
"label": "Website",
"value": "https://company.example/apply",
"url": "https://company.example/apply"
},
{
"type": "email",
"label": "E-mail",
"value": "jobs@company.example"
},
{
"type": "visit",
"label": "In person",
"value": "By appointment at the published company address."
}
],
"applicationEmail": "jobs@company.example",
"applicationPhone": "+32 9 555 01 23",
"applicationViaVDAB": false,
"applicationViaVisit": true,
"applicationViaLetter": false,
"applicationUrl": "https://company.example/apply",
"jobUrl": "https://www.vdab.be/vindeenjob/vacatures/99999999/fictional-senior-product-engineer"
}

Run summary and source access

The Actor writes OUTPUT_SUMMARY separately from job records. It contains exactly three properties: status, the run status; itemsStored, the number of records successfully written; and isPartial, whether a later request, write, or finalization problem limited the result after records were saved. A run with no saved records fails; saved records are preserved if a later problem occurs. For example:

{
"status": "SUCCEEDED",
"itemsStored": 3,
"isPartial": false
}

The Actor uses public VDAB listing and vacancy information. Requests stop when VDAB returns an access denial or source-authored challenge; there are no retries or alternate routes after such a response.