StepStone Jobs Scraper & New Job Monitor - DE, AT, BE, NL avatar

StepStone Jobs Scraper & New Job Monitor - DE, AT, BE, NL

Pricing

from $1.75 / 1,000 job returneds

Go to Apify Store
StepStone Jobs Scraper & New Job Monitor - DE, AT, BE, NL

StepStone Jobs Scraper & New Job Monitor - DE, AT, BE, NL

For recruiters, job alerts and hiring lead lists: StepStone jobs on stepstone.de, .at, .be and .nl by keyword and city, with company, location, date, remote or hybrid and link; job details optional. StepStone re-dates old ads (7 of the top 25 on 2026-09-25); monitor mode returns only new jobs.

Pricing

from $1.75 / 1,000 job returneds

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

24 days ago

Last modified

Share

Get StepStone jobs as clean JSON from stepstone.de, stepstone.at, stepstone.be and stepstone.nl: job title, company, location, date posted, remote work (hybrid or fully remote), easy apply, and the link. Search by job title or keyword and city, or paste StepStone search URLs. Turn on Monitor mode and scheduled runs return only jobs that are new since the last check - so a recruiter, a job alert, a Slack or Telegram bot or a lead list gets the new ones without paying for the same jobs again. Turn on job page details to add employment type (full-time, part-time ...), the application deadline, the industry and the full description.

  • New job monitor that does not sell old ads as new. StepStone re-dates older ads to today. In our check on 2026-09-25, 7 of the top 25 Pflegefachkraft jobs in Germany were ads with old StepStone IDs (for example 10973152) dated that night. Monitor mode tells them apart with StepStone's job IDs (they grow with every new ad) and the date: changeType: new is only for a job dated after the last check whose ID is higher than every job this watch has seen. Re-dated old ads can be returned separately as reposted.
  • Only the jobs you searched for. When a search has few matches, StepStone fills the page with similar job titles and recommendations. On 2026-09-25, python on stepstone.nl showed 1 match and 24 recommendations, and data scientist in München showed 18 matches and 7 similar jobs (Data Platform Architect, Business Data Analyst ...). By default this Actor returns only the matches and jobs in nearby places, and says which is which in matchType.
  • Salary only when it is there, and where it comes from. StepStone puts a salary on the search page only sometimes, and then it is usually StepStone's own estimate, not a number from the employer: in our production runs on 2026-09-25, 0 of 109 jobs had one; in one of our checks StepStone's estimates came for 22 of 25 jobs. salarySource says stepstone-estimate or posted (stated in the ad, read from the job page with includeJobDetails). Nothing is made up.
  • Remote work filter. remoteWork: hybrid or fully remote, or fully remote only.
  • Four countries in one run. stepstone.de, .at, .be and .nl: keywords times locations times sites, plus search URLs, up to 20 searches per run.
  • Honest about what can be read. StepStone's robots.txt does not allow page numbers or filters in the URL, so this Actor reads the first page of each search: 25 jobs, most relevant first. When a search has more, a free row says so.
  • No charge when nothing could be delivered. A search with no jobs, nothing that passes your filters, a page that could not be read, and a check page come back as free rows that say why.

Unofficial. Reads the public StepStone search result pages (and, if you turn it on, the public job pages), the same pages a person sees without logging in, and follows StepStone's robots.txt. It does not log in, does not apply to jobs, and does not solve or bypass check pages. It returns the company, not the people: there are no recruiter or contact person columns. Contact sections of job descriptions are left out, and in the remaining text phone numbers, e-mail addresses and names are replaced with [phone removed], [email removed], [name removed]: names after a title (Frau, Herr, Mr, Ms, Mevrouw, Madame ...) or a label (Ansprechpartner, Kontakt, Contact ...), names before a recruiting job title (Personalreferentin, Recruiter, HR Manager, Talent Acquisition ...) and names right before an e-mail address or phone number. A name written anywhere else in free text is not recognised (see Limits). Companies that post anonymously stay anonymous (company: null, companyAnonymous: true).

What you get

One row per job. Example (a production run on 2026-09-25, Data Scientist in München with job page details; description and snippet are shortened here):

{
"status": "ok",
"changeType": null,
"jobId": "14532604",
"title": "Data Scientist (w/m/d)",
"company": "TÜV SÜD",
"companyAnonymous": false,
"companyId": "54474",
"companyUrl": "https://www.stepstone.de/cmp/de/t%c3%9cv-s%c3%9cd-54474/jobs",
"companyLogoUrl": "https://www.stepstone.de/upload_DE/logo/B/logoTUV-SUD-54474DE-2305081235.gif",
"location": "München",
"locations": [
"München"
],
"postalCode": "80686",
"country": "de",
"datePosted": "2026-09-22T23:51:45.000Z",
"datePostedLocal": "2026-09-23T01:51:45+02:00",
"remoteWork": "hybrid",
"employmentType": [
"full-time"
],
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"salaryPeriod": null,
"salarySource": null,
"validThrough": "2026-11-22T06:51:31.037Z",
"industry": "Wissenschaften, Wissenschaften-Data Science",
"description": "Einleitung Bei der TÜV SÜD Gruppe leben wir unsere Leidenschaft für Technik. Innovationen beeinflussen unser Leben in vielfältiger Weise. Bei der TÜV SÜD Gruppe sind wir in hohem Maße bestrebt, ein wichtiger Teil dieses Fortschritts zu sein. Wir ...",
"snippet": "Bei der TÜV SÜD Gruppe leben wir unsere Leidenschaft für Technik. Innovationen beeinflussen unser Leben in vielfältiger Weise. Bei der TÜV SÜD Gruppe sind wir in hohem Maße ...",
"benefits": null,
"skills": [],
"easyApply": false,
"noCoverLetter": false,
"isPromoted": false,
"matchType": "exact",
"sourceSite": null,
"latitude": 48.143295,
"longitude": 11.564068,
"detailsStatus": "ok",
"url": "https://www.stepstone.de/stellenangebote--Data-Scientist-w-m-d-Muenchen-TUEV-SUED--14532604-inline.html",
"positionInSearch": 1,
"jobsInSearch": 24,
"searchQuery": "Data Scientist",
"searchLocation": "München",
"searchCountry": "de",
"searchUrl": "https://www.stepstone.de/jobs/data-scientist/in-m%C3%BCnchen",
"watchName": null,
"checkedAt": "2026-09-24T23:45:16.822Z"
}

Checked in a browser after the runs: 5 of 5 jobs from that run showed the same title, company and place on the StepStone job page, and the job page of the example says "Feste Anstellung", "Homeoffice möglich, Vollzeit" (employmentType: full-time, remoteWork: hybrid).

ColumnMeaning
statusok for a job row. Other values are free rows that say why nothing (or not everything) was returned (below)
changeTypeMonitor mode only: first-check (first run of this watch), new, or reposted (only with includeReposted). Null when monitor mode is off
jobId, urlStepStone's job ID and the job page
titleJob title
company, companyId, companyUrl, companyLogoUrlThe employer as shown on StepStone. Null (and companyAnonymous: true) when the ad is anonymous
location, locations, postalCodeLocation text as shown, the same split into places, and the postal code when StepStone gives one
countryde, at, be or nl (the StepStone site)
datePosted, datePostedLocalThe date on the job as UTC and as shown by StepStone with its time zone. StepStone re-dates some older ads; see changeType
remoteWorkfully-remote (home office only), hybrid (partly home office), or null when the ad does not say
salaryMin, salaryMax, salaryCurrency, salaryPeriod, salarySourceSalary range, only when StepStone shows one (often it does not). salarySource is stepstone-estimate (StepStone's estimate on the search page) or posted (stated in the ad, from the job page). Null when there is none; nothing is made up
employmentType, validThrough, industry, description, latitude, longitudeWith includeJobDetails only: employment type (full-time, part-time ...), application deadline, industry, full description (contacts removed), and coordinates when the job page has them
detailsStatusWith includeJobDetails: ok, gone (the job page no longer exists), unreadable, blocked or not-allowed-by-robots-txt
snippet, benefitsThe short description and benefits shown on the search result (contacts removed)
skillsSkills StepStone lists for the job, when it shows them
easyApply, noCoverLetterStepStone's "Schnelle Bewerbung" (quick apply) and "Anschreiben nicht erforderlich" (no cover letter) labels
isPromotedThe job is a paid top or highlighted ad
matchTypeexact (matches your search), nearby (in a place near your location), related or recommended (only with includeRelatedJobs)
sourceSitePartner site the ad comes from, when StepStone shows one
positionInSearch, jobsInSearchPosition on the first page, and the number of matching jobs StepStone reports (matches plus nearby)
searchQuery, searchLocation, searchCountry, searchUrlThe search this row came from
noteFree rows only: why nothing (or not everything) was returned
watchName, checkedAtThe watch name you gave, and the time of the check

Free rows (not charged)

statusWhen
no-resultsStepStone has no job for this search (also what StepStone answers for a place it does not know)
none-match-filtersJobs were read, but none passes your filters (remote work, posted within, matches only)
not-foundStepStone does not have this page (HTTP 404), or sent the search to a page robots.txt does not allow
no-new-jobsMonitor mode: nothing new since the previous check
more-not-returnedNormal search: the search has more jobs than the first page, which is all robots.txt allows; says how many and what to do. Monitor mode: more new jobs than maxResultsPerSearch (a later run returns them), or, on the first check, how many jobs are now the starting point and that only the first page is watched
more-new-than-readableMonitor mode: jobs an earlier run could not return (because of maxResultsPerSearch or the charge limit) left the first page before they could be returned
already-returnedEverything on this search was already returned by an earlier search of the same run; it is not returned or charged twice
not-allowed-by-robots-txtA search StepStone's robots.txt does not allow: a URL with a page number or a filter (?page=, ?radius=, ?sort= ...), or a keyword that points to a disallowed page (vollzeit, teilzeit, home-office on stepstone.de, full-time, work-from-home on stepstone.be and .nl). Nothing was requested
unreadableStepStone could not be read, even after asking again from other IP addresses, or the page layout changed. Nothing is guessed and nothing is remembered
blockedStepStone showed a check page. This Actor does not solve or bypass check pages; it stops and does not run the remaining searches (if it happened on a job page, the jobs already read from that search are returned, without job page details from that point on, detailsStatus: blocked)
budget-reachedThe run hit the maximum total charge you set. In monitor mode the jobs not returned are returned by the next run
bad-inputThe input could not be used (for example an unknown site). The run ends as failed

Input

FieldTypeDefaultDescription
searchQuerieslist of strings-Job titles or keywords: Data Scientist, Pflegefachkraft, Python, Buchhalter, SAP ... Leave keywords, locations and search URLs all empty to run the example: Data Scientist in Berlin on stepstone.de
locationslist of stringswhole countryCities or regions as StepStone writes them: Berlin, München, Frankfurt am Main, Wien, Brussels, Amsterdam
countrieslist of de, at, be, nldeStepStone sites to search
searchUrlslist of strings-StepStone search result pages copied from the browser, for example https://www.stepstone.de/jobs/data-scientist/in-berlin (the plain first page, without filters in the URL)
remoteWorkany, hybrid-or-remote, fully-remoteanyRemote work filter, applied to the jobs on the first page
postedWithinDaysinteger 1-60-Only jobs posted within this many days, applied to the jobs on the first page
includeRelatedJobsbooleanfalseAlso return StepStone's similar-title and recommended jobs, marked in matchType
includeJobDetailsbooleanfalseAlso read each returned job's page: employment type, deadline, industry, full description, posted salary, coordinates
maxResultsPerSearchinteger 1-2525Most jobs returned for one search. In monitor mode: most new jobs per search in one run (the rest come first in the next run, while they are still on the first page)
onlyNewbooleanfalseMonitor mode: return only jobs that are new since the previous check
includeRepostedbooleanfalseMonitor mode: also return ads dated after the previous check whose ID is lower than the newest ID this watch has seen (re-dated older ads, rarely an ad StepStone published late), as reposted
watchNamestring-Separate memories for monitor mode, for example one per client or per alert
resetMonitoringStatebooleanfalseForget what this watch has seen, so the run is a first check again

Each keyword is searched in each location on each site (up to 20 searches per run). A keyword alone searches the whole country; a location alone lists all jobs there.

Examples

Data scientists in Munich and Berlin, hybrid or remote, with employment type and full description:

{ "searchQueries": ["Data Scientist"], "locations": ["München", "Berlin"], "remoteWork": "hybrid-or-remote", "includeJobDetails": true }

A daily job alert: new Python jobs in Vienna and Brussels and data engineer jobs in the Netherlands (schedule this input):

{ "searchUrls": ["https://www.stepstone.at/jobs/python/in-wien", "https://www.stepstone.be/jobs/python/in-brussels", "https://www.stepstone.nl/vacatures/data-engineer"], "onlyNew": true, "watchName": "python-data-benelux-at" }

Nursing jobs posted in the last 3 days in Hamburg:

{ "searchQueries": ["Pflegefachkraft"], "locations": ["Hamburg"], "postedWithinDays": 3 }

Pricing

Pay per event:

  • Run start - once per run that read StepStone: in a normal search, before the first job row is returned (so not charged when nothing passes your filters); in monitor mode, when a list was read and compared, also when nothing is new - that pays for the check. Never charged when nothing could be read or robots.txt does not allow the page.
  • Job returned - per job row.
  • Job with details - per job row with job page details (includeJobDetails), instead of Job returned. A row whose job page could not be read is charged as Job returned.

Free rows are never charged. If you set a maximum total charge for a run, the run stops before it would go over it and says so; a run whose maximum has no room for the start fee plus one job does not request anything, and job pages are only read for rows that fit.

Monitor mode, step by step

  1. First run: reads the first page of each search, returns up to maxResultsPerSearch as first-check, and remembers the jobs as the starting point.
  2. Later runs: read the first page again. A job this watch has not seen is new when it is dated after the previous check (with 3 hours of slack for StepStone's indexing) and its StepStone job ID is higher than every job ID this watch has seen (IDs grow with every new ad). A job dated after the previous check with a lower ID is a re-dated older ad: remembered, and returned only with includeReposted (as reposted). An older job that moved up into the first page is remembered but not returned. Jobs that were not returned because of maxResultsPerSearch or the charge limit are returned first by the next run, as long as they are still on the first page.
  3. Nothing is judged from a page that could not be read (nothing returned, remembered or charged); the next run checks it again.

Within one run, a job found by two overlapping searches is returned once.

Keep one schedule per search and watch name. Two overlapping runs of the same watch can both return the same new job (the memory is a key-value store without transactions).

Limits

  • StepStone's robots.txt does not allow page numbers, sorting or filters in the URL, so only the first page of each search is read: 25 jobs, most relevant first (not newest first). A new job that StepStone ranks lower is not seen by monitor mode. Narrow broad searches (a city, a more exact job title) and split one big search into several smaller ones in the same run.
  • The radius and StepStone's own filters (full-time, part-time, date posted, remote) cannot be put in the URL; remoteWork and postedWithinDays are applied to the jobs read from the first page.
  • Salaries are often missing: StepStone shows its estimate on the search page only sometimes, and a salary stated in the ad is only read with includeJobDetails (and only when the ad's job page lists it).
  • Names in job descriptions are recognised only next to a title, a label, a recruiting job title or an e-mail address or phone number (see above); other names in free text are not. In 10 production job pages on 2026-09-25 two recruiter names appeared in such places and both are removed now. Contact sections, phone numbers and e-mail addresses are removed.
  • Monitor mode counts a job as new only when its ID is higher than every ID the watch has seen. An ad StepStone publishes late with an older ID (for example a scheduled ad) comes back as reposted (with includeReposted) instead of new.
  • If StepStone refuses datacenter IP addresses, pages are read over residential IP addresses in the site's country: up to 20 search pages and 60 job pages per run, and up to 2 search pages per monitor run. stepstone.at refused residential IP addresses in our checks on 2026-09-25; it is read from Apify's own IP addresses.

Support

Questions, a field you need, or a search that does not work: open an issue on the Issues tab of this Actor.