StepStone Jobs Scraper - DE, AT, UK, NL & BE avatar

StepStone Jobs Scraper - DE, AT, UK, NL & BE

Pricing

$3.00 / 1,000 job returneds

Go to Apify Store
StepStone Jobs Scraper - DE, AT, UK, NL & BE

StepStone Jobs Scraper - DE, AT, UK, NL & BE

StepStone runs a site per country and they don't agree on the word for a job: the Dutch one lists under /vacatures/, the German under /jobs/. Pick a site, keyword and location; each card carries title, company, salary when shown and link. $3.00 per 1,000 jobs, no start fee.

Pricing

$3.00 / 1,000 job returneds

Rating

5.0

(2)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

2 days ago

Last modified

Share

StepStone Jobs Scraper

StepStone runs a separate site per country, and they do not agree on the word for a job: the Dutch one lists under /vacatures/ where the German one uses /jobs/. Pick the country site, give it a keyword and a location, and the job cards come back as rows. Five sites are wired up: Germany, Austria, the UK, the Netherlands and Belgium.

StepStone sits behind DataDome, which is why plain HTTP clients get a challenge page instead of listings. This actor loads the pages the way a browser does and takes a fresh exit address whenever one gets blocked.

What you get per job

FieldNotes
jobIdStepStone's listing id. null when the URL carries no id.
titleJob title.
companyHiring company. null when StepStone hides it on the card.
locationCity or region.
salaryOnly when the listing publishes one. Most German listings don't, so expect null more often than not.
postedTextAs shown, e.g. vor 5 Tagen. Not a parsed date.
workFromHomeBoolean remote flag.
snippetThe description excerpt from the card, a couple of sentences.
urlLink to the listing.
siteWhich country site the row came from.

Real row from a software engineer / de run:

{
"ok": true,
"site": "de",
"jobId": "14295362",
"title": "Software Engineer (m/w/d)",
"company": "Menck GmbH",
"location": "Kaltenkirchen",
"salary": null,
"postedText": "vor 5 Tagen",
"workFromHome": false,
"snippet": "Menck, als bedeutender Akteur der renommierten ACTEON-Gruppe…",
"url": "https://www.stepstone.de/stellenangebote--Software-Engineer-m-w-d-…-14295362-inline.html"
}

Input

{
"keywords": "software engineer",
"location": "Berlin",
"site": "de",
"maxItems": 100
}
FieldDefaultNotes
keywordsrequiredJob title or search terms. German works: krankenpflege, vertrieb.
locationemptyCity or region. Leave it out for a nationwide search.
sitedede, at, uk, nl, be.
maxItems251 to 2000. Pages are about 25 jobs each.
proxyConfigurationApify datacenterLeave it alone. The actor rotates datacenter addresses itself. Fill it in only if you own proxy servers you'd rather use.
notionConnector / notionParentIdOptional delivery into Notion via an Apify MCP connector.

The country site is picked by domain, not by where the request comes from, so site: "uk" gets you UK jobs regardless of the exit address. Umlauts are transliterated the way StepStone's own search does it (Münchenmuenchen), and stepstone.nl uses its vacatures path.

Limits worth knowing

  • Card data only. You get what's on the search results page. The full job description lives on the detail page and isn't fetched.
  • salary is usually null, because most StepStone listings don't publish pay.
  • postedText is a string in the site's language, not a timestamp. Parse it yourself if you need a date.
  • Pagination stops at 50 pages or when two consecutive pages bring nothing new.
  • A run has a four-minute budget. If DataDome is being difficult it stops there rather than burning compute on a search it isn't going to win.

When a search gets blocked, you don't pay

  • No matches → one NO_RESULTS row, uncharged.
  • Blocked on every rotation → one BLOCKED row, uncharged.
  • Blocked part way through → the rows already gathered come back marked ok: false, partial: true alongside a BLOCKED row, and none of them are charged. Run it again; a different exit address usually finishes the job.

Billing

$3.00 per 1,000 jobs ($0.003 each), with no run-start fee. Flat on every plan.

You're charged once per job row with ok: true. Everything else — diagnostics, partial blocked results, duplicates — is free.