StepStone Jobs Scraper DE, AT, BE, NL — New Jobs, No Login avatar

StepStone Jobs Scraper DE, AT, BE, NL — New Jobs, No Login

Pricing

from $0.68 / 1,000 saved jobs

Go to Apify Store
StepStone Jobs Scraper DE, AT, BE, NL — New Jobs, No Login

StepStone Jobs Scraper DE, AT, BE, NL — New Jobs, No Login

Search public StepStone jobs in Germany, Austria, Belgium and the Netherlands. Export title, company, salary, workplace type and dates. Return only new jobs. No login.

Pricing

from $0.68 / 1,000 saved jobs

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Categories

Share

Search public StepStone job listings in Germany, Austria, Belgium and the Netherlands and get one clean row per job: title, company, location, posting date, salary as numbers, workplace type and job URL. No login and no API key are needed. A typical run with 20 jobs takes about 5 seconds and costs $0.022.

Use it if you are a recruiter, a sourcing agency or a labour-market analyst who tracks jobs in DACH or Benelux. The smallest run is one search query, for example python developer in Berlin.

StepStone Jobs Scraper: search query and city in, clean job rows with salary and workplace type out, export as JSON or CSV

Table of contents

What it does

The Actor opens the public StepStone search for each of your queries, reads the job list and saves each job as one Dataset row. It works on four StepStone sites: stepstone.de, stepstone.at, stepstone.be and stepstone.nl.

Each row has absolute job and company URLs, an ISO date, salary as numbers with a currency and period, and a workplaceType of onsite, remote or hybrid. You can also:

  • keep only jobs that earlier runs did not return (onlyNew), for daily monitoring;
  • open every job page and add the full description and employment type (includeDetails);
  • search up to 10 queries in one run; a job found by two queries is saved once.

Good fit

  • Daily or weekly lists of new jobs for a role and a city.
  • Salary ranges for a role in one city, for market research.
  • A list of companies that hire for a skill right now, for sales or sourcing.

Not a fit / limits

  • No login, no applications, no recruiter names, e-mails or phone numbers. E-mails and phone numbers in descriptions are replaced with [removed].
  • Only stepstone.de, .at, .be and .nl. Other StepStone countries are not supported.
  • Most salaries are StepStone's own estimates, not employer figures (salaryIsEstimate: true). In our tests they come only with the first 150 results of a query (search pages 1–6). Later pages are read from StepStone's result list without estimates, so those jobs have empty salary fields.
  • Up to 1000 jobs per run. StepStone itself may stop a search earlier.

Quick start

  1. Open the Input tab.
  2. In Search queries (queries), keep python developer or type your own job title.
  3. Keep Location (location) as Berlin or type your city. Keep Maximum jobs (maxItems) at 20.
  4. Click Start.
  5. Open the Output tab and check the Jobs view: title, company, location, salaryMin, salaryMax, url.

Expected result: about 20 rows in 5–10 seconds. On our test runs 19 of 20 rows had a salary estimate.

Use cases

Buyer jobInput pathOutput entityKey fieldsNext integration
Get new jobs for a role every dayqueries, location, onlyNew: truejobtitle, company, postedAt, urlApify schedule + Google Sheets or webhook
Compare salary ranges in a cityqueries, location, maxItems: 200jobsalaryMin, salaryMax, salaryPeriod, salaryIsEstimateCSV / Excel export
Find companies that hire for a skillqueries with several skills, empty locationjobcompany, companyUrl, locationCRM import
Read full job texts for analysisincludeDetails: truejobdescriptionText, employmentType, expiresAtYour own text or AI pipeline

Input

Input fields

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesEffectExampleRecommendation
queriesSearch queriesarray of stringsyesprefill ["python developer"]1–10 items, 1–100 characters eachOne StepStone search per query. Each query is charged once.["SAP Berater", "data analyst"]Use job titles as people type them on StepStone.
locationLocationstringnodefault empty, prefill Berlinup to 100 charactersCity or region. Empty = the whole country.MünchenUse a city from the selected country site.
radiusKmRadius (km)integerno300–100Search radius around location. Ignored when location is empty.50Larger radius = more jobs.
domainCountry sitestring (select)nodede, at, be, nlWhich StepStone site to search.atMatch it with the location country.
postedWithinDaysPosted in the last daysintegerno00, 1, 3, 7, 14, 30Keeps only jobs posted in that many days. 0 = no date filter.7Use 1 or 7 for daily or weekly lists. Other numbers fail input validation.
workplaceWorkplacestring (select)noanyany, remote, hybridKeeps only remote or only hybrid jobs.remoteLeave any unless you need home office.
sortBySort bystring (select)norelevancerelevance, dateOrder of StepStone results.datedate is used automatically with onlyNew and with 3, 14 or 30 days.
includeDetailsFull job descriptionbooleannofalsetrue / falseOpens each job page: full description, employmentType, exact expiresAt. Adds the job-details charge.trueAbout 1 job per second. Use only when you need the full text.
maxItemsMaximum jobsintegernodefault 50, prefill 201–1000Stops after this many saved jobs in total, across all queries.200Start small, then raise it.
onlyNewOnly new jobsbooleannofalsetrue / falseSaves only jobs that earlier runs with the same settings did not return.trueUse with a schedule. The first run saves the current jobs as a baseline.

Unknown input keys fail the run with a clear input error. Duplicate jobs inside one run are saved once.

Interacting settings

WhenInput AInput BEffective behaviorExampleCost/result effect
No citylocation emptyradiusKmRadius is ignored; the whole country is searched.location: ""More results for the same query.
MonitoringonlyNew: truesortByNewest first is used; a query stops at the first page with nothing new.daily scheduleAn unchanged run saves 0 rows and costs $0.006.
Date filterpostedWithinDays 3, 14 or 30sortByNewest first is used; rows older than the limit are dropped.14Pages are still read, so query is charged even with 0 rows.
Several queriesqueriesmaxItemsmaxItems is the total for the run, not per query.3 queries, maxItems: 100Later queries may get fewer rows.
Full textsincludeDetails: truemaxItemsOne extra page per saved job.100 jobs ≈ 2 minutesAdds $0.005 per job (FREE tier).

Input examples

New Python jobs in Berlin

{
"queries": ["python developer"],
"location": "Berlin",
"maxItems": 20
}

Expected behavior: one search on stepstone.de, 30 km around Berlin. Expected output: up to 20 jobs with title, company, salaryMin, salaryMax, workplaceType. Limit or cost note: $0.022 on the FREE tier.

Weekly nursing jobs in Vienna

{
"queries": ["pflege"],
"location": "Wien",
"domain": "at",
"postedWithinDays": 7,
"maxItems": 50
}

Expected behavior: stepstone.at, only jobs from the last 7 days.

Daily monitor for data jobs in Amsterdam, with full texts

{
"queries": ["data analyst"],
"location": "Amsterdam",
"domain": "nl",
"includeDetails": true,
"onlyNew": true,
"maxItems": 50
}

Expected behavior: the first run saves the current jobs. Later runs save only new jobs, each with the full description.

Output

Output fields

FieldMeaningTypeCan be empty?Example / enumSource / notes
jobIdStepStone job IDstringno13818030
titleJob titlestringnoBackend Entwickler Python (m/w/d) - Data Engineer Python
companyEmployer namestringyesRatbacher GmbHnull if StepStone hides it
companyUrlCompany page on StepStonestringyeshttps://www.stepstone.de/cmp/de/ratbacher-gmbh-46710/jobsabsolute URL
locationLocation textstringyesBerlin, Mannheim, Frankfurtas shown on StepStone
countryCountry of the sitestringnoDE, AT, BE, NLfrom domain
urlJob pagestringnohttps://www.stepstone.de/stellenangebote--...--13818030-inline.htmlabsolute, no tracking parameters
postedAtPosting datestring (ISO 8601, UTC)yes2026-09-22T11:03:04.747ZStepStone may refresh this date
expiresAtListing end datestring (ISO 8601)yes2027-03-21T11:30:13.917Zexact with includeDetails
salaryMinLower salary boundnumberyes53000null = no salary shown
salaryMaxUpper salary boundnumberyes74000null = no salary shown
salaryCurrencyCurrencystringyesEURISO code
salaryPeriodSalary periodstringyesyear, month, week, day, hour
salaryIsEstimateSalary is StepStone's estimatebooleanyestruenull when there is no salary
employmentTypeContract typestringyesfull_time, part_time, contract, temporary, internship, otheronly with includeDetails, else null
workplaceTypeHome office optionstringyesonsite, remote, hybrid
descriptionTextPlain textstringyesshort snippet or full textcontacts replaced with [removed]
descriptionHtmlFull description HTMLstringyesonly with includeDetails
descriptionTypeWhich text you gotstringnosnippet, fullsnippet if a job page failed
isSponsoredPromoted listingbooleanyesfalse
queryQuery that found the jobstringnopython developer
sourceSource namestringnoStepStone
fetchedAtCollection timestring (ISO 8601)no2026-10-14T12:54:39.873Z

null means StepStone did not show the value. The Actor never writes 0 or "" instead of an unknown value.

Output entities and surfaces

SituationDataset/API/KVS/live viewResult shapeUser action
Normal itemDataset, Jobs viewone row per jobExport or use url
No jobs for the searchEmpty Dataset; RUN_SUMMARY with status: "not_found"run SUCCEEDEDChange the query or location
Monitor with nothing newEmpty Dataset; status: "complete", skippedSeen > 0run SUCCEEDEDNothing to do
Partial result (cost limit, time limit)Saved rows + RUN_SUMMARY with status: "partial" and reason (CHARGE_LIMIT, TIME_LIMIT, SCAN_LIMIT, DETAILS_UNAVAILABLE)run SUCCEEDEDCHARGE_LIMIT: raise the cost limit. TIME_LIMIT: raise the timeout or lower maxItems. SCAN_LIMIT: narrow the query or filters. DETAILS_UNAVAILABLE: run again later or without includeDetails
Source error or blockSaved rows (if any) + RUN_SUMMARY with reason like SOURCE_HTTP_403run FAILEDTry again later

RUN_SUMMARY (Key-value store, Run status and counters in the Output tab) also has counters per query: sourceTotal, pages, saved, hasMore.

Output example

From the first input example (one row, description shortened):

{
"jobId": "13818030",
"title": "Backend Entwickler Python (m/w/d) - Data Engineer Python",
"company": "Ratbacher GmbH",
"companyUrl": "https://www.stepstone.de/cmp/de/ratbacher-gmbh-46710/jobs",
"location": "Berlin, Mannheim, Frankfurt, Stuttgart, Karlsruhe",
"country": "DE",
"url": "https://www.stepstone.de/stellenangebote--Backend-Entwickler-Python-m-w-d-Data-Engineer-Python-Berlin-Mannheim-Frankfurt-Stuttgart-Karlsruhe-Ratbacher-GmbH--13818030-inline.html",
"postedAt": "2026-09-22T11:03:04.747Z",
"expiresAt": "2027-03-21T11:30:13.917Z",
"salaryMin": 53000,
"salaryMax": 74000,
"salaryCurrency": "EUR",
"salaryPeriod": "year",
"salaryIsEstimate": true,
"employmentType": null,
"workplaceType": "hybrid",
"descriptionText": "Als Backend Entwickler Python (m/w/d) übernimmst Du eine zentrale Rolle: ...",
"descriptionHtml": null,
"descriptionType": "snippet",
"isSponsored": false,
"query": "python developer",
"source": "StepStone",
"fetchedAt": "2026-10-14T12:54:39.873Z"
}

employmentType and descriptionHtml are null because includeDetails was off.

Field names compared with raw StepStone data

If you used raw StepStone search data before, these are the new names:

Raw StepStone fieldThis ActorChange
idjobIdstring
titletitlesame
companyNamecompany
companyUrlcompanyUrlabsolute URL
locationlocationextra spaces removed
urlurlabsolute URL, tracking removed
datePostedpostedAtISO 8601 UTC
unifiedSalary.min / maxsalaryMin / salaryMaxnumbers, StepStone estimate included
unifiedSalary.currencyIso / periodsalaryCurrency / salaryPeriodlower-case period
unifiedSalary.salaryTypesalaryIsEstimateboolean
workFromHomeworkplaceTypeonsite / remote / hybrid instead of 0 / 1 / 2
textSnippetdescriptionTextplain text, contacts removed

Pricing and limits

Pricing unit

The Actor uses pay-per-event pricing. You pay only for these events:

EventWhenFREEBRONZESILVERGOLD+
apify-actor-startonce per run$0.001$0.001$0.001$0.001
queryonce per query, after StepStone answers the first page$0.005$0.005$0.005$0.005
jobeach saved job$0.0008$0.00076$0.00072$0.00068
job-detailseach job with a full description (includeDetails)$0.005$0.0048$0.0046$0.0045

Platform usage (compute, proxy) is included; you do not pay it separately.

  • A search with 0 jobs, a date filter with no matches and a monitor run with nothing new each cost $0.006 (start + one query).
  • If StepStone fails before the first page, the query event is not charged.
  • If a job page fails with includeDetails, the row is saved with the snippet and job-details is not charged. After 6 failed job pages in a row the Actor stops opening job pages and ends with reason: "DETAILS_UNAVAILABLE"; rows already found are saved.
  • Partial runs charge only for saved rows. When your run cost limit is reached, the Actor stops and saves reason: "CHARGE_LIMIT".

Cost examples

FREE tier prices. Times are from our test runs.

ScenarioInput scopeSaved jobsBase chargeOptional chargeRun time
Quick start1 query, maxItems: 2020$0.022none~5 s
Medium1 query, maxItems: 200200$0.166none~35 s
Large3 queries, maxItems: 10001000$0.811 (2 queries used)none~2.5 min
Full texts1 query, 10 jobs, includeDetails: true10$0.014$0.050~20 s
Empty search1 query, no jobs0$0.006none~5 s
Monitor, nothing new1 query, onlyNew: true0$0.006none~3 s

Limits: up to 10 queries and 1000 saved jobs per run; up to 40 search pages per query and 80 per run. With includeDetails the Actor opens about 1 job page per second, so 1000 jobs take about 17 minutes. The default run timeout is 30 minutes.

API, export and integrations

  • Export: download the Dataset as JSON, CSV, Excel, XML or HTML from the Output tab.
  • API: start the Actor and read the Dataset with the Apify API. Use the jobs view: /datasets/{id}/items?view=jobs.
  • Scheduling: create a schedule with onlyNew: true to get only new jobs every day.
  • Webhooks / no-code: send the Dataset to Google Sheets, Slack, Make or Zapier with Apify integrations after each run.

Use with AI agents (MCP)

  • MCP server with only this Actor: https://mcp.apify.com?tools=cliqtomedia/stepstone-jobs-scraper (Apify MCP docs).
  • Smallest useful input:
{ "queries": ["python developer"], "location": "Berlin", "maxItems": 20 }
  • Key output fields: title (job title), company (employer), location (city text), salaryMin / salaryMax (numbers, often a StepStone estimate), url (job page).
  • Typical call: about 5 seconds and $0.022 for 20 jobs. Keep maxItems at 100 or less and includeDetails off for fast answers.

Troubleshooting

The run finished with 0 jobs

Symptom: empty Dataset, run SUCCEEDED, RUN_SUMMARY.status is not_found. Likely reason: StepStone has no jobs for this query, location or filter. Check: open the same search on the StepStone site. Action: use a shorter query, a bigger radiusKm or an empty location.

A monitor run saved 0 jobs

Symptom: status: "complete", saved: 0, skippedSeen > 0. Likely reason: no new jobs since the last run with the same settings. Action: nothing to fix. This is normal for onlyNew.

Full descriptions stopped

Symptom: status: "partial", reason: "DETAILS_UNAVAILABLE", rows have descriptionType: "snippet". Likely reason: StepStone job pages failed 6 times in a row. Action: run again later, or turn off includeDetails to get the search rows only.

Jobs have no salary

Symptom: salaryMin and salaryMax are null. Likely reason: StepStone shows no salary for the job, or the job is after the first 150 results of the query. Action: use a narrower query or a city to get the jobs you need into the first 150 results.

The run failed with a SOURCE_ reason

Symptom: run FAILED, reason like SOURCE_HTTP_403 or SOURCE_UNAVAILABLE. Likely reason: StepStone blocked or did not answer after 4 tries. Action: start the run again later. Jobs saved before the error stay in the Dataset.

The run stopped early with CHARGE_LIMIT

Symptom: status: "partial", reason: "CHARGE_LIMIT". Likely reason: the maximum cost per run in your run options was reached. Action: raise the maximum cost or lower maxItems.

FAQ

Do I need a StepStone account or API key?

No. The Actor reads only public search and job pages. It does not log in.

Are the salaries real?

Most are StepStone's estimates (salaryIsEstimate: true), not the employer's figures. When the salary is not marked as an estimate, salaryIsEstimate is false. Use estimates as a market range, not as an offer.

Is the output complete?

The Actor saves what StepStone shows for your search, up to maxItems. StepStone may show a different order or count on different days. RUN_SUMMARY.queries[].sourceTotal shows how many jobs StepStone reported.

How fresh are the jobs?

Each run reads StepStone live. postedAt is the date StepStone shows; StepStone sometimes refreshes this date for older jobs.

Can I get recruiter contacts?

No. E-mails and phone numbers in descriptions are replaced with [removed].

Support

For a bug, a question or a feature request, open an issue in the Issues tab of this Actor. Add the run ID, your input (without private data) and the reason from RUN_SUMMARY. Never send tokens, cookies or billing data.