Actiris Scraper — Brussels Jobs with Company Numbers
Pricing
from $1.20 / 1,000 results
Actiris Scraper — Brussels Jobs with Company Numbers
Scrape actiris.brussels — Brussels' official employment service — for structured job data: bilingual FR/NL titles, KBO company numbers, CEFR language requirements, contract details, company descriptions and full listings. 30,000+ active jobs.
Pricing
from $1.20 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
1
Bookmarked
4
Total users
3
Monthly active users
5 days ago
Last modified
Categories
Share
Actiris Scraper

Extract job listings from actiris.brussels at scale, in a clean, consistent structure ready for analysis, job boards, recruiting tools and market research. No API key required.
Why this scraper?
🎯 Built for Brussels (Belgium)
A dedicated Brussels scraper, not a global tool with a country dropdown. Search, filters and locations are tuned for actiris.brussels.
📄 Complete job data
Bilingual FR/NL titles, full descriptions in text, HTML and Markdown, company registry numbers, contract details and publish dates for every record.
🇧🇪 Structured language requirements
Every job's CEFR language requirements — French, Dutch and more — with comprehension, writing, reading and speaking levels, and whether each language is required or an asset. This is the field that matters most in bilingual Brussels.
🏢 Company registry data
The KBO/BCE company number and a direct link to the official Belgian company register for every listing, plus a verified company logo URL when one exists.
📍 Complete location data
Structured location for every listing. Where the source leaves the municipality blank, it is filled from the postal code, so location is present on every record.
🔁 Change detection
Every record carries a stable content hash and change status, so scheduled feeds return genuinely new jobs instead of duplicates.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | (empty) | Search keyword, e.g. 'developer', 'chauffeur'. Leave blank for all jobs. |
postalCodes | array | (empty) | Filter by Belgian postal code(s), e.g. ["1000", "1050"]. |
contractTypes | array | (empty) | Filter by contract type(s): CDI, CDD, Interim, Freelance, Stage. |
imtDomains | array | (empty) | Filter by Actiris IMT job-family codes. |
workTime | string | (empty) | Filter by work schedule: full-time or part-time. |
daysOld | integer | (empty) | Only return jobs published within the last N days. Leave blank for all. |
fetchDetails | boolean | false | ON: fetches full description, company description, candidate profile, benefits, diploma and language requirements. OFF: returns listing-level fields only (faster, lower cost). |
descriptionFormat | string | all | Which description format to keep: all, text, html or markdown. |
compact | boolean | false | Return core fields only, for AI-agent and MCP pipelines. |
excludeEmptyFields | boolean | false | Drop null and empty fields from each record. |
maxItems | integer | 5 | Maximum number of jobs to scrape (0 = no limit). |
Output schema
Listing-level fields are present on every record. Detail-level fields are populated when fetchDetails is on and the source publishes them for that job; otherwise they are null.
Listing-level (always present)
| Field | Type | Description |
|---|---|---|
id | string | Unique listing ID from the source. |
url | string | Direct link to the listing. |
applyUrl | string | Direct link to apply. |
title | string | Job title. |
titleNl | string | Job title in Dutch. |
titleFr | string | Job title in French. |
kboNumber | string | Belgian company registry (KBO/BCE) number. |
kboRegistryUrl | string | Link to the official company register entry. |
location | string | Municipality as displayed. |
locationNl | string | Municipality in Dutch. |
locationFr | string | Municipality in French. |
postalCode | string | Postal code of the position. |
country | string | Country code. |
contractType | string | Contract type in plain English. |
contractDuration | string | Contract duration code (CDI, CDD, etc.). |
contractDurationLabel | string | Contract duration as published. |
imtDomain | string | Actiris IMT job-family code. |
typeOffre | string | Offer type used by the source. |
publishDate | string | Date posted. |
modifiedDate | string | Date last modified. |
source | string | Source domain. |
scrapedAt | string | ISO 8601 scrape timestamp. |
contentHash | string | Stable hash of the listing, used for change detection. |
Detail-level (with fetchDetails on)
| Field | Type | Description |
|---|---|---|
descriptionText | string | Full job description in plain text. |
descriptionHtml | string | Full job description in HTML. |
descriptionMarkdown | string | Full job description in Markdown. |
companyDescription | string | Description of the employer. |
candidateProfile | string | Required candidate profile. |
diploma | string | Required diploma, when specified. |
benefits | string | Benefits offered, when specified. |
additionalInfo | string | Additional information, when specified. |
companyLogo | string | Verified company logo URL, when one exists. |
languageRequirements | array | Per-language CEFR requirements (see below). |
Each entry in languageRequirements contains the language, a required flag (true = required, false = asset), and comprehension, writing, reading and speaking levels.
Example record
{"id": "5890038","url": "https://www.actiris.brussels/nl/burgers/jobadvertentie/?reference=5890038&type=Select","applyUrl": "https://www.actiris.brussels/nl/burgers/jobadvertentie/?reference=5890038&type=Select","title": "Infirmier breveté ou bachelier H/F/X","titleNl": "Infirmier breveté ou bachelier H/F/X","titleFr": "Infirmier breveté ou bachelier H/F/X","kboNumber": "0239843188","kboRegistryUrl": "https://kbopub.economie.fgov.be/kbopub/toonondernemingps.html?ondernemingsnummer=0239843188","companyLogo": "https://my.actiris.brussels/Repository/Tiers/0239843188/fr.png","location": "Sint-Jans-Molenbeek","locationNl": "Sint-Jans-Molenbeek","locationFr": "Molenbeek-Saint-Jean","postalCode": "1080","country": "BE","contractType": "Permanent","contractDuration": "CDI","contractDurationLabel": "Arbeidsovereenkomst voor onbepaalde duur","imtDomain": "S'6","publishDate": "2026-07-03","modifiedDate": "2026-07-07","companyDescription": "L'employeur est une maison médicale pluridisciplinaire située sur Molenbeek-Saint-Jean.","candidateProfile": "Nous recherchons un infirmier diplômé breveté ou bachelier (H/F/X).","diploma": "Bachelor","benefits": "Contrat CDI Mi-temps. Jours de prestations et horaires à convenir.","languageRequirements": [{"language": "Frans","required": true,"comprehension": "Onafhankelijk + (B2)","writing": "Onafhankelijk + (B2)","reading": "Onafhankelijk + (B2)","speaking": "Onafhankelijk + (B2)"},{"language": "Arabisch","required": false,"comprehension": "Onafhankelijk - (B1)","writing": "Geen kennis","reading": "Geen kennis","speaking": "Onafhankelijk - (B1)"}],"source": "actiris.brussels","scrapedAt": "2026-07-07T10:09:00.000Z","contentHash": "d184329f5857b600"}
Examples
All nurse roles with full details:
{"searchQuery": "infirmier","fetchDetails": true,"maxItems": 100}
Only jobs from the last 3 days:
{"searchQuery": "vendeur","daysOld": 3,"maxItems": 100}
Compact output for an AI pipeline:
{"searchQuery": "developer","fetchDetails": true,"compact": true,"descriptionFormat": "markdown","maxItems": 100}
Daily feed (run on a schedule):
{"daysOld": 1,"maxItems": 500}
Schedule this input to run once a day in the Apify Scheduler — each run returns only jobs posted in the last 24 hours.
💰 Pricing
$1.50 per 1,000 results — you only pay for successfully retrieved listings. Failed retries are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.50 |
| 10,000 | ~$15 |
| 100,000 | ~$150 |
Subscription tiers lower the rate to $0.90 per 1,000 at the highest tier. Use the Max results cap in the input to control spend exactly.
Performance
| Run size | Typical time |
|---|---|
| 100 results | under 1 minute |
| 1,000 results | 2–4 minutes |
| 10,000 results | 20–35 minutes |
Detail fetching adds one request per job, so runs with fetchDetails on take longer.
Known limitations
- Actiris does not publish salary, so there are no salary fields.
- Detail-level fields such as company description, benefits and language requirements are returned when the source publishes them for a given job, and are
nullwhen it does not. - The employer name is not exposed by the source and is not returned. The company registry number and register link are provided instead.
- Very large result sets are bounded by the source's own paging limits.
- Listings can be removed by the source at any time, so a small share of URLs may expire shortly after scraping.
What we do not collect
This scraper returns company-level and job-level data only. It does not collect recruiter names, personal emails, personal phone numbers or individual contact details. Company registry data and reputation metrics are company-level and are included.
Technical details
- Source: actiris.brussels — Brussels (Belgium) job listings
- Coverage: everything the public search exposes, filterable via the input parameters above
- Retry: automatic retry on network errors with exponential backoff
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl