Randstad.nl Vacatures Scraper avatar

Randstad.nl Vacatures Scraper

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Randstad.nl Vacatures Scraper

Randstad.nl Vacatures Scraper

Extract job listings from Randstad.nl — the largest Dutch staffing agency with thousands of temp and permanent vacancies. Part of the unfenced-group Dutch jobs portfolio: consistent output format across NVB, Intermediair, Werk.nl, Randstad and Jobbird.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

Unfenced Group

Unfenced Group

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

0

Monthly active users

26 minutes ago

Last modified

Share

Randstad Scraper

Scrape job listings from randstad.nl — the Netherlands' largest staffing platform covering Randstad, Yacht, Tempo-Team, and BMC brands with tens of thousands of active vacancies. Filter by keyword, city, radius, contract type, education level, sector, and hours per week. No API key required.


Why this scraper?

☎️ Recruiter contact details

Randstad publishes contact persons with many vacancies. The scraper retrieves recruiter name, department, phone, and email where available — useful for direct outreach without going through the standard application flow.

💰 Normalized salary data

Salary data is returned as structured fields — no parsing required:

FieldExample
salary"€15.66 - €18.72 per hour"
salaryMin15.66
salaryMax18.72
salaryType"hourly"

Supports hourly, monthly, and annual salary formats.

🔄 Repost detection — unique in the market

Companies frequently republish the same vacancy to stay at the top of search results. This scraper detects reposts automatically and flags them — so you only pay for genuinely new listings.

Each result includes:

  • isRepost: true/false — is this a republished vacancy?
  • originalPublishDate — when did this vacancy first appear?
  • originalUrl — link to the original listing

Use skipReposts: true to automatically exclude reposts from your results.

🔁 Automatic retries in the background

On temporary server errors, the scraper automatically retries with exponential backoff. Failed attempts are not charged — you only pay for successfully retrieved vacancies.

🏢 Multi-brand coverage

Randstad operates multiple brands under one platform. The opco field identifies which brand posted the vacancy:

ValueBrand
RANDSTADRandstad
YACHTYacht (professionals & secondment)
TEMPO-TEAMTempo-Team (flex & temp)
BMCBMC (government & healthcare consultancy)

📄 Three description formats

Every vacancy description is returned in three formats out of the box:

  • description — original HTML
  • descriptionText — plain text
  • descriptionMarkdown — Markdown (ready for RAG pipelines and LLM workflows)

Input parameters

ParameterTypeDescriptionDefault
searchQuerystringSearch term, e.g. "developer"
citystringCity, e.g. "Amsterdam"
radiusselectSearch radius in km: 5/10/20/30/40/50/75/10040
contractTypeselectpermanent / temporary / secondment / temporary with permanent prospect
educationLevelselectprimary / vmbo / mbo / havo-vwo / hbo / wo
sectorstringSector, e.g. "ict" or "financieel"
hoursPerWeekselect0–8 / 9–16 / 17–24 / 25–32 / 33–36 / 37–40+ hours
maxResultsintegerMaximum number of results (1–5000)100
fetchDetailsbooleanRetrieve full description, recruiter info, benefits and structured sectionstrue
daysOldintegerOnly return vacancies from the last X days
skipRepostsbooleanSkip republished vacanciesfalse

Output schema

{
"id": "12345678",
"title": "Java Developer",
"url": "https://www.randstad.nl/vacatures/...",
"company": "ING",
"opco": "YACHT",
"vacancyUnitCode": "R0012345",
"city": "Amsterdam",
"jobLocation": {
"streetAddress": "Bijlmerplein 888",
"postalCode": "1102MG",
"city": "Amsterdam",
"region": "Noord-Holland",
"country": "Netherlands"
},
"salary": "€5,000 - €7,000",
"salaryMin": 5000,
"salaryMax": 7000,
"salaryType": "monthly",
"hours": "40 hours",
"workday": "Fulltime",
"educationLevel": "HBO",
"contractType": "Permanent",
"workFromHome": true,
"student": false,
"experienceRequirements": "3+ years of Java experience",
"experienceYears": 3.0,
"recruiterName": "Maaike Deegens",
"recruiterDepartment": "Yacht Technology",
"recruiterPhone": "0612345678",
"recruiterEmail": "maaike.deegens@nl.randstad.com",
"summary": "Short vacancy teaser...",
"description": "<p>Full vacancy text...</p>",
"descriptionText": "Full vacancy text...",
"descriptionMarkdown": "Full vacancy text...",
"benefits": [{ "type": "salary", "text": "Competitive salary" }],
"sections": {
"whatWeOffer": "...",
"whoAreYou": "...",
"whatWillYouDo": "...",
"whereWillYouWork": "...",
"apply": "..."
},
"publishDate": "2026-03-20",
"publishDateISO": "2026-03-20T00:00:00.000Z",
"validThrough": "2026-04-20",
"logoUrl": "https://...",
"applyUrl": "https://...",
"isRepost": false,
"originalPublishDate": null,
"originalUrl": null,
"contentHash": "sha256...",
"source": "randstad.nl",
"scrapedAt": "2026-03-22T10:00:00.000Z"
}

Note: fetchDetails: false skips recruiter info, jobLocation, benefits, sections, and full description. Use for fast list-only runs.


Examples

ICT vacancies in Amsterdam:

{ "searchQuery": "developer", "city": "Amsterdam", "sector": "ict" }

Part-time vacancies, 17–24 hours per week:

{ "hoursPerWeek": "17 - 24 uur", "maxResults": 50 }

New Yacht secondment vacancies, no reposts:

{
"contractType": "Detachering",
"daysOld": 7,
"skipReposts": true,
"fetchDetails": true
}

💰 Pricing

$1.50 per 1,000 results — you only pay for successfully retrieved vacancies. Failed retries and filtered reposts are never charged.

ResultsCost
100~$0.1
1,000~$1.00
10,000~$10.00

Flat-rate alternatives typically charge $29–$49/month regardless of usage. At 10,000 results/month, this scraper costs significantly less with no commitment.

Use the Max results cap in the input to control your spend exactly.


Performance

RunTime
100 vacancies (list only)~5s
100 vacancies (with details)~1 min
1,000 vacancies (with details)~10 min

fetchDetails: true makes one additional request per vacancy to retrieve full descriptions and recruiter info. Use fetchDetails: false for fast bulk runs where contact details are not needed.


Built by unfenced-group · Issues? Open a ticket or send a message.