Randstad Scraper: Job Listings in 6 European Countries avatar

Randstad Scraper: Job Listings in 6 European Countries

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
Randstad Scraper: Job Listings in 6 European Countries

Randstad Scraper: Job Listings in 6 European Countries

Scrape job listings from Randstad in Belgium, the Netherlands, Germany, France, Italy and Poland, the world's largest staffing agency. Search by keyword in the local language. 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

2 days ago

Last modified

Categories

Share

Randstad Scraper — Belgium, Netherlands, Germany, France, Italy & Poland

Extract job listings from Randstad in Belgium, the Netherlands, Germany, France, Italy and Poland, 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, and for every other country the 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. The other countries publish in their local language 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, Netherlands, Germany, France, Italy or Poland.
  2. Set a Search Query. For Belgium this hits the site's own search engine (e.g. warehouse, magazijnier, comptable, logistiek). For every other country this actor matches your keyword against each live job's URL slug — job-title words in the local language work best (logistiek NL, lager DE, technicien FR, magazziniere IT, pracownik PL).
  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 every other country.
  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 other countries, 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, nl, de, fr, it or pl. Default: be.
searchQuerystringKeyword to search for. Belgium: English, Dutch or French all work against the site's own search. Other countries: matched against each job's URL slug — keywords in the local language 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. Runs for the other countries make a few requests for the job sitemaps 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

  • Six countries. Belgium, Netherlands, Germany, France, Italy and Poland. Randstad Spain disallows all crawling in its robots.txt and is not included.
  • 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 sitemap countries are capped the same way for consistency. Run multiple searches with different keywords for broader coverage.
  • Search in the sitemap countries matches URL slugs, not a real search index. This actor matches 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.