Randstad Scraper — Belgium & Netherlands Job Listings avatar

Randstad Scraper — Belgium & Netherlands Job Listings

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
Randstad Scraper — Belgium & Netherlands Job Listings

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

Studio Amba

Maintained by Community

Actor 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

  1. Open the actor and pick a Country — Belgium or Netherlands.
  2. 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).
  3. Optionally set a Location filter such as Antwerp, Brussels, Liège or Utrecht to narrow results to that city or province.
  4. For Belgium, pick a Language (en, nl or fr) — this selects which language version of the site to crawl. Ignored for the Netherlands.
  5. Set Max Results (up to 30 per run — see Limitations).
  6. 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

FieldTypeDescription
countrystringbe (Belgium) or nl (Netherlands). Default: be.
searchQuerystringKeyword 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.
locationstringOptional city or province filter, applied client-side (e.g. Antwerp, Liège, Utrecht).
languagestringBelgium only: site language to crawl (en, nl or fr). Default: en.
maxResultsintegerMaximum number of listings to return (max 30 — see Limitations). Default: 30.
proxyConfigurationobjectApify 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

FieldTypeDescription
titlestringJob title
companystringHiring company as posted — Randstad itself unless a client is disclosed (Belgium only)
clientCompanystringRandstad's end client, when disclosed on the listing (Belgium only)
locationRawstringLocation as shown on the listing
locationParsedobject{ city, country }
languagestringISO 639-1 language code of the posting (en, nl or fr)
postedAtstringISO 8601 posting timestamp
descriptionSnippetstring300–400 character plain-text excerpt of the description
urlstringFull job listing URL
employmentTypestringContract type and working hours
salaryRawstringRaw salary data, when disclosed (rare)
sourcestringSource site identifier (randstad.be or randstad.nl)
scrapedAtstringISO 8601 timestamp of collection
jobIdstringUnique Randstad job identifier
categorystringRandstad'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 location input 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; salaryRaw is 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.

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.