Randstad Scraper — Belgium & Netherlands Job Listings
Pricing
from $1.20 / 1,000 result scrapeds
Randstad Scraper — Belgium & Netherlands Job Listings
Scrape job listings from Randstad Belgium and Randstad Netherlands, the world's largest staffing agency. Search by keyword in English, Dutch or French. No login or cookies required.
Pricing
from $1.20 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Share
Randstad Scraper — Belgium & Netherlands
Extract job listings from Randstad Belgium and Randstad Netherlands, the world's largest staffing agency, as clean structured JSON. Pick a country, search by keyword, and get job titles, locations, employment type, posting dates and description excerpts in one run.
No login. No cookies. No browser automation. The actor reads the same data each country's site publishes server-side — Belgium's embedded search-page job data, the Netherlands' job sitemap plus each listing's structured job-posting data — so it is fast and stable.
What this actor does
Given a country and a search keyword, this actor collects the matching job listings from that Randstad site and returns one row per job with:
- Job title
- Hiring company (Randstad, plus the end client when disclosed — Belgium only)
- Location (city, province)
- Language of the posting
- Employment type (contract type and working hours)
- Posting date
- A 300–400 character description excerpt
- The job's unique ID and direct URL
Randstad Belgium publishes listings in Dutch, French and English — you can search with keywords in any of the three languages and choose which language version of the site to crawl. Randstad Netherlands publishes in Dutch only.
Why use it
- Staffing market research — track what roles Randstad is placing, and where, across two of its largest European markets.
- Recruitment and sourcing — build a live feed of temp and permanent positions for a role or region.
- Competitive intelligence — compare Randstad's open roles against VDAB/Le Forem/Actiris (Belgium) or UWV WERKbedrijf (Netherlands) public listings.
- Aggregators and job boards — feed Randstad staffing-agency listings into your own product.
How to scrape Randstad job data
- Open the actor and pick a Country —
BelgiumorNetherlands. - Set a Search Query. For Belgium this hits the site's own search engine (e.g.
warehouse,magazijnier,comptable,logistiek). For the Netherlands, Randstad's own keyword search is broken (verified live — it ignores the query string entirely), so this actor matches your keyword against each live job's URL slug instead — Dutch job-title words work best (logistiek,magazijn,receptie,monteur). - Optionally set a Location filter such as
Antwerp,Brussels,LiègeorUtrechtto narrow results to that city or province. - For Belgium, pick a Language (
en,nlorfr) — this selects which language version of the site to crawl. Ignored for the Netherlands. - Set Max Results (up to 30 per run — see Limitations).
- Leave the proxy on its default residential setting and click Start.
For Belgium, the actor fetches the search page for your query and language, extracts the job data embedded in the page, applies your location filter if set, and writes everything to the dataset. For the Netherlands, it fetches the site's public job sitemap (every currently live vacancy), keeps the ones whose URL matches your keyword, then fetches each matching job's own page for its full structured data. Either way you can export the result as JSON, CSV or Excel.
Input
| Field | Type | Description |
|---|---|---|
country | string | be (Belgium) or nl (Netherlands). Default: be. |
searchQuery | string | Keyword to search for. Belgium: English, Dutch or French all work against the site's own search. Netherlands: matched against each job's URL slug — Dutch keywords work best. Default: warehouse. |
location | string | Optional city or province filter, applied client-side (e.g. Antwerp, Liège, Utrecht). |
language | string | Belgium only: site language to crawl (en, nl or fr). Default: en. |
maxResults | integer | Maximum number of listings to return (max 30 — see Limitations). Default: 30. |
proxyConfiguration | object | Apify proxy settings. Default: Belgian residential. |
Example input (Belgium)
{"country": "be","searchQuery": "warehouse","location": "Antwerp","language": "en","maxResults": 30,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "BE"}}
Example input (Netherlands)
{"country": "nl","searchQuery": "logistiek","location": "Utrecht","maxResults": 20,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "NL"}}
Output
Each dataset item looks like this:
{"title": "Sewer","company": "Randstad","locationRaw": "Ronse, East Flanders","locationParsed": { "city": "Ronse", "country": "Belgium" },"language": "en","postedAt": "2026-08-04T13:56:13.636546466Z","descriptionSnippet": "Are you looking for a stable job with daytime hours at a top company in Ronse? As a sewer, you will manufacture industrial insulation jackets using a sewing machine and enjoy a wage of €14.4939, meal vouchers, and an option for a permanent contract...","url": "https://www.randstad.be/en/candidates/jobs/sewer_ronse_5c298002-967d-47ca-b556-313982d6f0ed/","employmentType": "Permanent, Full-Time","source": "randstad.be","scrapedAt": "2026-08-04T17:16:12.303Z","jobId": "5c298002-967d-47ca-b556-313982d6f0ed","category": "Goods And Materials Production"}
A Netherlands result has the same shape, sourced from that job's own page:
{"title": "Logistiek medewerker fulltime","company": "Randstad","locationRaw": "Utrecht, Utrecht","locationParsed": { "city": "Utrecht", "country": "Netherlands" },"language": "nl","postedAt": "2026-09-26T00:00:00.000Z","descriptionSnippet": "Ben jij op zoek naar een dynamische baan in de logistiek? Als logistiek medewerker ga jij aan de slag met het in- en uitladen van vrachtwagens en het verwerken van bestellingen...","url": "https://www.randstad.nl/vacatures/753739/logistiek-medewerker-fulltime","employmentType": "TEMPORARY, PART_TIME, 8 - 16 uur per week","source": "randstad.nl","scrapedAt": "2026-09-27T19:40:00.000Z","jobId": "753739"}
Output fields
| Field | Type | Description |
|---|---|---|
title | string | Job title |
company | string | Hiring company as posted — Randstad itself unless a client is disclosed (Belgium only) |
clientCompany | string | Randstad's end client, when disclosed on the listing (Belgium only) |
locationRaw | string | Location as shown on the listing |
locationParsed | object | { city, country } |
language | string | ISO 639-1 language code of the posting (en, nl or fr) |
postedAt | string | ISO 8601 posting timestamp |
descriptionSnippet | string | 300–400 character plain-text excerpt of the description |
url | string | Full job listing URL |
employmentType | string | Contract type and working hours |
salaryRaw | string | Raw salary data, when disclosed (rare) |
source | string | Source site identifier (randstad.be or randstad.nl) |
scrapedAt | string | ISO 8601 timestamp of collection |
jobId | string | Unique Randstad job identifier |
category | string | Randstad's internal job classification category (Belgium only — not published on Netherlands listings) |
Cost estimate
Belgium runs make a single lightweight HTTP request — no browser, no per-item detail fetches. Netherlands runs make one request for the job sitemap plus one request per matched job (up to maxResults), since the full job data only lives on each job's own page. Either way there's no browser involved. Runs typically finish in well under a minute; cost is dominated by proxy traffic plus the per-result charge. Usage is only charged after a run finishes with status SUCCEEDED — a failed or aborted run doesn't bill for partial results.
Limitations
- Belgium and Netherlands only. Randstad's other country sites run on yet different platforms — Germany runs a client-side React app with no server-rendered job data at all, and France, Poland and Luxembourg don't expose the Belgium-style embedded search payload either. Each would need its own recon before being added.
- Up to 30 results per query. Belgium's search page renders a fixed batch of results with no working server-side pagination parameter (page/offset/pageNumber query params were all tested live and had no effect). The Netherlands path is capped the same way for consistency. Run multiple searches with different keywords for broader coverage.
- Netherlands search matches URL slugs, not a real search index. Randstad Netherlands' own
?query=search parameter is non-functional — two different keywords returned an identical result set when tested live. This actor works around that by matching your keyword against each live job's URL slug (drawn from the site's own job sitemap), which is a good proxy for job-title keywords but won't find matches based on description text alone. - Location filtering is client-side. Neither country's search page exposes a working location query parameter, so the
locationinput filters the fetched results by substring match rather than querying the site directly. - Salary is rarely disclosed. Most listings on both sites don't publish pay rates;
salaryRawis empty for the large majority of jobs. - Client company and category are Belgium-only fields. Randstad Netherlands' job-posting data doesn't include an end-client name or an internal category classification the way Belgium's does.
Related scrapers
Building a European staffing and public-employment dataset? These sibling actors follow the same clean-JSON approach:
- VDAB Scraper — Flemish public employment service
- Le Forem Scraper — Walloon public employment service
- Actiris Scraper — Brussels public employment service
- StepStone Scraper — Belgian commercial job board
- Jobat Scraper — Belgian job board
Disclaimer
This actor collects publicly available data from Randstad Belgium and Randstad Netherlands for legitimate research and aggregation use. Respect Randstad's terms of service and applicable data protection law when using the output.