Le Forem Job Scraper avatar

Le Forem Job Scraper

Under maintenance

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Le Forem Job Scraper

Le Forem Job Scraper

Under maintenance

Scrape 40,000+ job listings from Le Forem, the Wallonia public employment service. Filter by keyword, location, contract type and date. Rich output: description, skills, education.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

2

Bookmarked

2

Total users

1

Monthly active users

44 minutes ago

Last modified

Categories

Share

Le Forem Scraper

Le Forem Scraper

Extract structured job listings from Le Forem — the public employment service of Wallonia, Belgium. Covers 40,000+ active vacancies across all sectors. No API key required.


Why this scraper?

🔍 Full-text search with location filtering

Search by keyword and municipality, region, or postal code. Combine both to pinpoint exactly the roles you need.

📄 Rich structured output per listing

Every result includes title, employer, contract type, salary range, work schedule, required education, required skills, and a full job description in plain text, HTML, and Markdown.

🛡️ Built-in deduplication across runs

Jobs seen in previous runs are flagged as reposts so you only process genuinely new listings. Change tracking detects modified postings.

🗂️ Sector, education, and skills data

Detail pages expose required education level, soft skills, office skills, certifications, required driving licenses, and language proficiency levels — ready for structured analysis.

⚙️ Precise volume control

Set a maxItems cap and a daysOld filter to stay within budget and focus on recent listings only.

🔗 Direct URL mode

Pass a list of Le Forem job URLs directly to extract specific listings without a keyword search.


Input parameters

FieldTypeDefaultDescription
keywordsstringSearch keywords (job title, skill, etc.)
locationstringMunicipality, region, or postal code
contractTypestringFilter by contract type (e.g. CDI, CDD, Interim)
workSchedulestringFilter by work schedule (e.g. Temps plein, Temps partiel)
daysOldintegerExclude listings older than N days
maxItemsintegerMaximum number of results to return
fetchDetailsbooleantrueFetch full detail pages (skills, education, description)
skipRepostsbooleanfalseSkip listings seen in a previous run
startUrlsarrayDirect Le Forem job URLs to scrape

Output schema

Each result contains the following fields.

Always present:

FieldTypeDescription
idstringLe Forem internal vacancy ID
referenceNumberstringHuman-readable reference number
jobTitlestringJob title
employerstringEmployer name
locationsarrayWork location objects (city, postal code)
contractTypestringContract type (CDI, CDD, Interim, etc.)
workSchedulestringWork schedule regime
languagesarrayRequired languages (codes)
sectorsarrayActivity sectors
numberOfPositionsintegerNumber of open positions
publishDatestringPublication date (formatted)
publishDateISOstringPublication date (ISO 8601)
expiresDatestringListing expiry date (ISO 8601)
isApplicationEnabledbooleanWhether online application is available
salaryMinnumberMinimum salary (null if not published)
salaryMaxnumberMaximum salary (null if not published)
salaryCurrencystringSalary currency
salaryPeriodstringSalary period (monthly, hourly, etc.)
salaryRawstringRaw salary string as shown on the site
urlstringDirect URL to the listing
scrapedAtstringTimestamp of scrape (ISO 8601)
isRepostbooleanWhether this listing was seen in a previous run
changeStatusstringChange status: NEW / MODIFIED / UNCHANGED
contentHashstringHash for change detection

With fetchDetails: true (default):

FieldTypeDescription
descriptionstringFull job description (HTML)
descriptionTextstringFull job description (plain text)
descriptionMarkdownstringFull job description (Markdown)
workSchedulePrecisionstringAdditional schedule detail
sectorstringEmployer sector
metierstringJob category / métier
isTravelRequiredbooleanWhether the role requires travel
modifiedDatestringLast modification date
educationLevelstringRequired education level
educationRequiredarrayRequired education fields with codes
experienceRequiredarrayRequired experience with levels
softSkillsarrayRequired soft skills
officeSkillsarrayRequired IT / office skills
certificationsarrayRequired certifications
drivingLicensesarrayRequired driving license categories
drivingLicensesSummarystringSimplified driving license summary
languageDetailsarrayLanguage requirements with proficiency levels
benefitsCommentsstringBenefits and additional perks (plain text)

Example output record:

{
"id": "123456",
"referenceNumber": "REF-2025-123456",
"jobTitle": "Comptable",
"employer": "Entreprise Dupont SA",
"locations": [
{ "city": "Liège", "postalCode": "4000" }
],
"contractType": "CDI",
"workSchedule": "Temps plein",
"numberOfPositions": 1,
"publishDateISO": "2025-04-15",
"expiresDate": "2025-05-15",
"isApplicationEnabled": true,
"salaryMin": 2800,
"salaryMax": 3400,
"salaryCurrency": "EUR",
"salaryPeriod": "monthly",
"salaryRaw": "2.800 € - 3.400 € par mois",
"url": "https://www.leforem.be/recherche-offres/offre-detail/123456",
"scrapedAt": "2025-04-20T09:14:00.000Z",
"isRepost": false,
"changeStatus": "NEW",
"descriptionText": "Nous recherchons un comptable expérimenté pour rejoindre notre équipe...",
"educationLevel": "Bachelier",
"educationRequired": [{ "code": "BAC", "field": "Sciences économiques" }],
"experienceRequired": [{ "code": "EXP3", "title": "Expérience souhaitée", "level": "3 ans" }],
"softSkills": ["Rigueur", "Organisation", "Travail en équipe"],
"officeSkills": ["Excel avancé", "SAP"],
"languages": [{ "code": "fr", "name": "Français" }],
"languageDetails": [
{ "code": "fr", "name": "Français", "level": "Langue maternelle", "comment": null }
],
"certifications": [],
"drivingLicenses": ["B"],
"benefitsComments": "Chèques-repas, assurance groupe, télétravail 2j/semaine",
"sectors": ["Finance / Comptabilité"],
"sector": "Services financiers",
"metier": "Comptabilité – Finance",
"isTravelRequired": false,
"workSchedulePrecision": "Horaire de jour"
}

Examples

Search for IT roles in the Liège area:

{
"keywords": "développeur",
"location": "Liège",
"fetchDetails": true,
"maxItems": 100
}

Full-time CDI jobs posted in the last 7 days:

{
"contractType": "CDI",
"workSchedule": "Temps plein",
"daysOld": 7,
"maxItems": 500
}

Scrape specific listings by URL:

{
"startUrls": [
"https://www.leforem.be/recherche-offres/offre-detail/123456",
"https://www.leforem.be/recherche-offres/offre-detail/789012"
]
}

Daily new listings feed with deduplication:

{
"daysOld": 1,
"skipReposts": true,
"fetchDetails": true
}

💰 Pricing

$1.50 per 1,000 results — you only pay for successfully retrieved listings. Failed retries and filtered reposts are never charged.

ResultsCost
100~$0.15
1,000~$1.50
10,000~$15.00
100,000~$150.00

Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Use the Max results cap in the input to control your spend exactly.


Performance

Run sizeEstimated time
100 listings~1–2 min
1,000 listings~5–10 min
10,000 listings~45–90 min
Full catalogue (~40,000)~3–5 hours

Times include full detail page fetching (fetchDetails: true). Disable fetchDetails to reduce run time by ~60%.


Known limitations

  • Salary data is not always present — salaryMin/salaryMax will be null when Le Forem does not publish it.
  • Skills, education, and description fields require fetchDetails: true (enabled by default).
  • Le Forem does not expose employer contact persons — contact fields are not available.

Technical details

  • Source: leforem.be — public employment service of Wallonia, Belgium
  • Memory: 256 MB
  • Repost storage: KeyValueStore leforem-scraper-job-dedup, 90-day TTL
  • Retry: Automatic retry on network errors, exponential backoff, 3 attempts per request

Additional services

Need a custom actor, additional filters, scheduled runs, or integration support? Send an email to info@unfencedgroup.nl — we build on request.


Part of the Unfenced Group European job board scraper portfolio — 50+ job markets covered.

Built by unfenced-group · Issues? Open a ticket or send a message.