Stepstone.be Belgium Scraper
Pricing
from $2.00 / 1,000 results
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
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
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: trueoriginalPublishDate— date it first appearedoriginalUrl— 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
| Parameter | Type | Description | Default |
|---|---|---|---|
searchQuery | string | Keyword search, e.g. "developer" or "verpleegkundige" | "" |
location | string | City or region, e.g. "Brussel", "Antwerpen", "Liège" | "" |
radius | integer | Search radius in km around the location | 40 |
language | string | "nl" for Dutch listings, "fr" for French listings | "nl" |
contractType | string | "FULL_TIME", "PART_TIME", "CONTRACT", or "INTERN" | "" |
maxItems | integer | Maximum results to return. 0 means no limit | 100 |
daysOld | integer | Only return listings published within the last N days | — |
skipReposts | boolean | Skip listings already seen in previous runs | false |
fetchDetails | boolean | Fetch individual job pages for description and contract type | false |
startUrls | array | Specific Stepstone.be search or listing URLs to scrape | [] |
Note:
fetchDetails: truefetches 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
nullin default mode (fetchDetails: false) —contractType,salary*,description*— are populated whenfetchDetails: trueis 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.
| Results | Cost |
|---|---|
| 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
| Run | Results | Approx. time |
|---|---|---|
| Small | 100 listings | ~15 seconds |
| Medium | 1,000 listings | ~3 minutes |
| Large | 10,000 listings | ~25 minutes |
Enabling
fetchDetails: trueincreases 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), allsalary*fields arenull. EnablingfetchDetails: trueextracts salary from individual pages when published by the employer — many listings still shownull. - Contract type: Available only when
fetchDetails: trueis enabled. Returnsnullin default mode. - Apply URL: Stepstone.be routes all applications through a login modal —
applyUrlis alwaysnull. - Publish date accuracy:
publishDateis derived from the "X days ago" label displayed on the listing card, accurate within approximately one day. Exact timestamps requirefetchDetails: 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.