Stepstone.be Belgium Scraper avatar

Stepstone.be Belgium Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Stepstone.be Belgium Scraper

Stepstone.be Belgium Scraper

Scrape job listings from stepstone.be — Belgium's largest job platform. Full bilingual support for Dutch and French vacancies across all sectors. Structured output with salary, contract type, location & descriptions in HTML, text and Markdown.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Categories

Share

Stepstone.be Scraper

Stepstone.be Scraper

Scrape job listings from stepstone.be — Belgium's leading job board with 15,000+ active listings across Flanders, Brussels and Wallonia. Filter by keyword, location, radius, language and contract type. No API key required. No browser needed — HTTP-only, fast and cost-efficient.


Why this scraper?

⚡ No browser — fast and cost-efficient

Most Stepstone scrapers rely on a full browser, which makes them slow and expensive. This actor runs HTTP-only: it fetches job listings directly from Stepstone.be's search pages without launching a browser. The result is sub-second processing per item and low resource usage — 256 MB memory throughout the entire run.

🇧🇪 Full Belgian market — NL and FR

Belgium's job market is split between Dutch-speaking Flanders and French-speaking Wallonia. This actor covers both. Set language to "nl" (default) for Dutch listings via /vacatures/ or "fr" for French listings via /emplois/. Each result includes a language field so you can distinguish sources in mixed runs.

⏱️ Date filtering with approximate publish date

Every job card includes a publishDate field (derived from the "X days ago" label, accurate within one day), a daysOld count, and the workFromHome flag when Stepstone marks it as such. Use daysOld in the input to restrict results to listings published within the last N days — useful for daily feed pipelines.

🔄 Cross-run repost detection

Employers on Stepstone frequently repost the same vacancy to keep it at the top of search results. Without deduplication, your pipeline receives duplicate jobs and inflates ATS counts. This actor tracks every job ID across runs (90-day TTL) and marks recurring listings with:

  • isRepost: true
  • originalPublishDate — date it first appeared
  • originalUrl — URL of the original listing

Set skipReposts: true to exclude reposts entirely and receive only genuinely new vacancies.

🔗 startUrls support

Already have a curated list of Stepstone.be search pages or direct job URLs? Pass them in startUrls and the actor will scrape exactly those pages. Combine with maxItems to build targeted, cost-controlled pipelines.

🔁 Automatic retries and circuit breaker

Network hiccups and temporary blocks are handled automatically — failed page requests are retried with exponential backoff. A built-in circuit breaker stops the run cleanly after repeated consecutive failures so you never pay for a stuck run.


Input parameters

ParameterTypeDescriptionDefault
searchQuerystringKeyword search, e.g. "developer" or "verpleegkundige"""
locationstringCity or region, e.g. "Brussel", "Antwerpen", "Liège"""
radiusintegerSearch radius in km around the location40
languagestring"nl" for Dutch listings, "fr" for French listings"nl"
contractTypestring"FULL_TIME", "PART_TIME", "CONTRACT", or "INTERN"""
maxItemsintegerMaximum results to return. 0 means no limit100
daysOldintegerOnly return listings published within the last N days
skipRepostsbooleanSkip listings already seen in previous runsfalse
fetchDetailsbooleanFetch individual job pages for description and contract typefalse
startUrlsarraySpecific Stepstone.be search or listing URLs to scrape[]

Note: fetchDetails: true fetches full job descriptions (HTML, plain text, and Markdown), contract type and exact salary from individual pages. This significantly increases run time and resource usage. Use when you need complete descriptions for AI ingestion or ATS integration.


Output schema

{
"url": "https://www.stepstone.be/vacatures--Java-Angular-Developer-Brussel-Smals--2213439-inline.html",
"jobId": "2213439",
"source": "stepstone.be",
"language": "nl",
"title": "Java-Angular Developer",
"company": "Smals",
"companyUrl": "https://www.stepstone.be/cmp/nl/smals-3850/vacatures",
"city": "Brussel",
"country": "BE",
"contractType": null,
"workSchedule": null,
"workFromHome": true,
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"salaryPeriod": null,
"publishDate": "2026-04-23",
"publishDateISO": "2026-04-23T00:00:00.000Z",
"daysOld": 5,
"expiryDate": null,
"description": null,
"descriptionText": null,
"descriptionMarkdown": null,
"applyUrl": null,
"isRepost": false,
"originalPublishDate": null,
"originalUrl": null,
"scrapedAt": "2026-04-28T14:15:00.000Z"
}

Fields marked null in default mode (fetchDetails: false) — contractType, salary*, description* — are populated when fetchDetails: true is set.


Examples

Developer jobs in Brussels (default mode):

{
"searchQuery": "developer",
"location": "Brussel",
"maxItems": 100
}

French-language nursing jobs in Liège, last 7 days:

{
"searchQuery": "infirmier",
"location": "Liège",
"language": "fr",
"daysOld": 7,
"maxItems": 50
}

Daily new vacancies pipeline — skip reposts, full descriptions:

{
"searchQuery": "data engineer",
"daysOld": 1,
"skipReposts": true,
"fetchDetails": true,
"maxItems": 200
}

Scrape a specific Stepstone.be search page:

{
"startUrls": [
"https://www.stepstone.be/vacatures/nederlandse-taal/?q=ingenieur&location=Antwerpen"
],
"maxItems": 50
}

💰 Pricing

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

ResultsCost
100~$0.20
1,000~$2.00
10,000~$20.00
100,000~$200.00

Flat-rate scraping alternatives typically charge $29–$49/month regardless of usage. At 10,000 results/month, this actor costs significantly less with no subscription or commitment.

Use the Max results (maxItems) cap to control your spend exactly.


Performance

RunResultsApprox. time
Small100 listings~15 seconds
Medium1,000 listings~3 minutes
Large10,000 listings~25 minutes

Enabling fetchDetails: true increases run time by approximately 5–10× due to individual page requests. Recommended only when descriptions are needed.


Known limitations

  • Salary data: Stepstone.be does not display salary information in search results. In default mode (fetchDetails: false), all salary* fields are null. Enabling fetchDetails: true extracts salary from individual pages when published by the employer — many listings still show null.
  • Contract type: Available only when fetchDetails: true is enabled. Returns null in default mode.
  • Apply URL: Stepstone.be routes all applications through a login modal — applyUrl is always null.
  • Publish date accuracy: publishDate is derived from the "X days ago" label displayed on the listing card, accurate within approximately one day. Exact timestamps require fetchDetails: true.
  • Language coverage: French listings (language: "fr") are served from a separate Stepstone.be path. English-language job filters are not supported on the Belgian domain.
  • Pagination limit: Stepstone.be search results are typically paginated up to several hundred listings per keyword. For broad market sweeps, use multiple targeted keyword queries.

Technical details

  • Source: stepstone.be — Belgium's largest generalist job board
  • Coverage: All Belgian regions: Flanders (NL), Brussels (NL/FR), Wallonia (FR)
  • Method: HTTP-only with RESIDENTIAL proxy (Belgium)
  • Memory: 256 MB
  • Dedup storage: KeyValueStore stepstone-be-job-dedup, 90-day TTL per job fingerprint
  • Retry: Automatic retry on network errors with exponential backoff; circuit breaker stops run after 5 consecutive failures
  • Output fields: 14 fields in default mode, 18 with fetchDetails: true

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.