StepStone Jobs Scraper & API — 18 Portals, Incremental avatar

StepStone Jobs Scraper & API — 18 Portals, Incremental

Pricing

Pay per usage

Go to Apify Store
StepStone Jobs Scraper & API — 18 Portals, Incremental

StepStone Jobs Scraper & API — 18 Portals, Incremental

StepStone scraper and jobs API covering 18 portals: stepstone.de/at/be/nl, TotalJobs, CWJobs, Caterer, PNet and more. Incremental mode, ML-predicted salary (ceSalary), full descriptions, 29 filters.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Black Falcon Data

Black Falcon Data

Maintained by Community

Actor stats

0

Bookmarked

6

Total users

1

Monthly active users

5 minutes ago

Last modified

Categories

Share

StepStone Jobs Scraper & API — 18 Portals, Salary Data, Incremental Feed

Access job listings from 18 StepStone Group portals — including StepStone, TotalJobs, CWJobs, Jobsite, and Caterer — using a single API.

Extract structured job data with salary information, skills, work arrangement, and full descriptions. The only StepStone job scraper with built-in incremental mode — schedule runs hourly and receive only new job postings with zero duplicates.

Built for data pipelines, job boards, HR analytics, and recruitment intelligence.

The StepStone Group operates some of Europe's largest job platforms — including StepStone, TotalJobs, CWJobs, Jobsite, and Caterer — reaching millions of job seekers across 18 countries. This actor gives you structured API access to that entire network.


Key features

🚀 Full StepStone network coverage

  • Scrape job listings across 18 StepStone Group portals with a single actor
  • Covers stepstone.de, stepstone.at, stepstone.be, and stepstone.nl
  • Includes TotalJobs, CWJobs, Jobsite, Caterer, PNet, and additional specialist job boards

🔄 Incremental job feed

  • Built-in incremental mode returns only new job postings since the previous run
  • Ideal for scheduled pipelines and near real-time job feeds
  • Avoid duplicates and reduce unnecessary dataset processing

💰 Salary intelligence

  • Extract published salary ranges via unifiedSalary
  • Access StepStone ML-predicted salary estimates via ceSalary
  • Analyse compensation trends across regions, companies, and roles

🔎 Advanced filtering

  • 29 input parameters for precise job queries
  • Filter by contract type, experience level, remote work, radius, posting age, and application method

📦 Flexible data output

  • Return only selected fields using outputFields
  • Job descriptions available as HTML, plain text, or Markdown
  • Structured JSON suitable for ETL pipelines, analytics, and data warehouses

🧹 Clean job listings

  • Exclude sponsored listings to return organic results only
  • Sort jobs by salary_low or salary_high to analyse compensation

Use cases

Job board aggregation Pull structured job listings from across the StepStone network into your own job search engine or aggregator. One API call covers Germany, UK, Belgium, Netherlands, and more.

Recruitment analytics & market intelligence Monitor hiring volume, salary ranges, and in-demand skills across industries, geographies, and companies. Track trends over time with incremental runs.

Lead generation Collect company names, job titles, locations, and contact signals from StepStone job postings. Identify businesses that are actively hiring in your target market.

ETL pipelines & data warehouses Feed StepStone job data directly into BigQuery, Snowflake, or your data lake. Use incremental mode to get only new records since the last run — no re-processing of duplicates.

Salary benchmarking Extract unifiedSalary and ML-predicted ceSalary fields to build salary comparison tools or benchmark compensation across roles and regions.

Academic & HR research Download historical job market datasets from StepStone for quantitative research on labour demand, skills gaps, remote work trends, and employment shifts across Europe.


Example output

{
"title": "Data Engineer",
"company": "Zalando",
"location": "Berlin",
"datePosted": "2026-03-07T00:00:00.000Z",
"postedDaysAgo": 1,
"workFromHomeLabel": "Hybrid",
"url": "https://www.stepstone.de/stellenangebote--Data-Engineer-Berlin-Zalando--12345678.html",
"skills": ["Python", "Spark", "AWS", "dbt"],
"unifiedSalary": {
"min": 60000,
"max": 75000,
"currency": "EUR",
"period": "year"
},
"ceSalary": {
"isPredicted": true,
"min": 65000,
"max": 82000,
"currency": "EUR",
"period": "year"
}
}

Try this example query

Paste this directly into the actor input and run:

{
"query": "data engineer",
"location": "Berlin",
"geo": "DE",
"maxResults": 20,
"includeDetails": true,
"excludeSponsored": true
}

Returns recent Data Engineer jobs in Berlin from the StepStone network — including salary data, skills, and company information.


Quick start

Minimal input:

{
"query": "data engineer",
"location": "Berlin",
"geo": "DE"
}

Full example with all common options:

{
"query": "data engineer",
"location": "Berlin",
"geo": "DE",
"maxResults": 100,
"sort": "date",
"age": 7,
"includeDetails": true,
"descriptionFormat": "text",
"excludeSponsored": true
}

Incremental mode — real-time StepStone job feed

The incremental mode is the core feature that separates this actor from every other StepStone scraper. Set up a scheduled run and receive only jobs posted since your last run — no re-scraping of listings you already have.

{
"query": "software engineer",
"location": "London",
"geo": "TOTALJOBS",
"mode": "incremental",
"stateStoreName": "my-pipeline-state"
}

State is scoped per query + location + geo and stored in a named Apify KV store. The same stateStoreName persists across scheduled runs.

Reset state: change stateStoreName to a new value. If you change query, location, or geo, use a different stateStoreName — otherwise the existing state scopes incorrectly and returns 0 jobs.

Typical use: schedule every 1–4 hours. Each run produces a small delta (the day's new postings) rather than thousands of duplicates.


Use your own StepStone search URLs

Feed existing StepStone search URLs directly into startUrls — bypasses query / location / geo:

{
"startUrls": [
{ "url": "https://www.stepstone.de/jobs/developer/in-berlin" },
{ "url": "https://www.totaljobs.com/jobs/python/in-london" }
],
"maxResults": 200
}

Supported portals

This StepStone scraper covers 18 portals across the StepStone Group network. Use the geo input parameter to select which portal to scrape.

RegionPortalgeo value
🇩🇪 Germanystepstone.deDE
🇦🇹 Austriastepstone.atAT
🇧🇪 Belgiumstepstone.beBE
🇳🇱 Netherlandsstepstone.nlNL
🇬🇧 United Kingdomtotaljobs.comTOTALJOBS
🇬🇧 United Kingdomcwjobs.co.ukCWJOBS
🇬🇧 United Kingdomjobsite.co.ukJOBSITE
🇬🇧 United Kingdommilkround.comMILKROUND
🇬🇧 United Kingdomcaterer.comCATERER
🇬🇧 United Kingdomretailchoice.comRETAILCHOICE
🇬🇧 United Kingdomcareerstructure.comCAREERSTRUCTURE
🇬🇧 United Kingdomcityjobs.comCITYJOBS
🇬🇧 United Kingdomjustengineers.netJUSTENGINEERS
🇬🇧 United Kingdomemedcareers.comEMEDCAREERS
🌐 Internationalcatererglobal.comCATERERGLOBAL
🇮🇪 Irelandnijobs.comNIJOBS
🇮🇪 Irelandjobs.ieJOBSIE
🇿🇦 South Africapnet.co.zaPNET

The actor automatically selects the optimal extraction method per portal to maximise reliability and cost efficiency.

Some portals require a paid Apify plan. The actor handles all configuration automatically.


Input parameters

ParameterTypeDescription
querystringSearch keywords
locationstringCity, region, or postcode
geoselectPortal — DE, BE, AT, NL, TOTALJOBS, CWJOBS, …
startUrlsarrayDirect search URLs — overrides query/location/geo
maxResultsnumberMax items to return
sortselectrelevance / date / salary_low / salary_high
ageselectPosted within 1 / 3 / 7 / 14 days
remotebooleanRemote jobs only
radiusnumberSearch radius in km (5–100)
minSalarynumberMinimum salary filter
contractTypeselectFull-time, part-time, contract, freelance, …
experienceselectno / required / executive
workTypeselectFULL_TIME / PART_TIME
applicationMethodselectINTERNAL (apply on StepStone) / EXTERNAL (apply on company site / ATS)
companyIdstringFilter to a specific company
modeselectfull (default) / incremental
stateStoreNamestringKV store name for incremental state (default: stepstone-state)
excludeSponsoredbooleanSkip promoted listings
includeDetailsbooleanCrawl detail pages — adds description, ceSalary, geo coordinates
descriptionFormatselecthtml / text / markdown
outputFieldsarrayReturn only selected fields, e.g. ["title","company","ceSalary"]
proxyConfigurationobjectApify proxy config

Examples

{
"query": "data engineer",
"geo": "DE",
"maxResults": 10
}

With job details

{
"query": "developer",
"geo": "DE",
"maxResults": 5,
"includeDetails": true
}

UK portal

{
"query": "software engineer",
"geo": "CWJOBS",
"maxResults": 10
}

Example output

{
"title": "Senior Data Engineer",
"company": "Siemens AG",
"location": "Munich, Bavaria",
"datePosted": "2026-03-07",
"detailsFetched": true
}

Output fields

Always returned

FieldTypeDescription
jobKeystringUnique job identifier
titlestringJob title
companystringEmployer name
locationstringLocation string as shown on the listing
postCodestringPostal code (when available)
urlstringDirect URL to the job listing
datePostedstring (ISO 8601)Date the listing was posted
postedDaysAgonumberDays since posting
workFromHomebooleanWhether the role is remote or hybrid
workFromHomeLabelstring"On-site" / "Hybrid" / "Remote"
unifiedSalaryobjectPosted salary range {min, max, currency, period} — null if not published
isSponsoredbooleanWhether the listing is a promoted/sponsored result
isAnonymousbooleanWhether the employer name is hidden
isHighlightedbooleanWhether the listing has a highlighted badge
isTopJobbooleanWhether the listing is marked as a Top Job
companyIdstringInternal company ID
companyUrlstringURL to the company profile on the portal
companyLogoUrlstringURL to the company logo image
skillsstring[]Skills extracted from the listing
labelsstring[]Labels attached to the listing (e.g. "New", "Hot")
sectionstringSearch result section (e.g. "organic", "top")
harmonisedIdstringCross-portal normalised ID
geostringPortal identifier — matches the geo input value
querystringSearch query used to find this listing
scrapedAtstring (ISO 8601)Timestamp of when this item was scraped

With includeDetails: true

Crawls the individual job listing page to add richer data.

FieldTypeDescription
descriptionstringFull job description — format controlled by descriptionFormat (html / text / markdown)
employmentTypestringEmployment type as reported in the structured data (e.g. "FULL_TIME")
validThroughstring (ISO 8601)Application deadline (when available)
locationDetailobject{city, postalCode, country, lat, lng} — geocoded location
ceSalaryobjectStepStone's ML-predicted salary {isPredicted, min, max, period, currency} — null when no prediction is available

Proxy requirements

Most portals work with default Apify proxy settings. Some UK portals require residential proxy access — the actor configures this automatically. Your Apify plan must include residential proxy access for these portals.


StepStone job data & API access

This actor provides structured access to StepStone job data through a developer-friendly API. Common use cases include:

  • StepStone jobs API — query job listings programmatically without a browser
  • StepStone job data extraction — download job titles, salaries, skills, and company data at scale
  • StepStone job listings dataset — build a dataset for research, analytics, or job board aggregation
  • StepStone job market analysis — track hiring trends, salary ranges, and in-demand skills across Europe
  • TotalJobs scraper — the same actor covers TotalJobs, CWJobs, and all other StepStone Group portals
  • CWJobs scraper — scrape developer and IT job listings from cwjobs.co.uk using the same actor
  • StepStone dataset — create a reusable dataset for analytics, research, or job board ingestion

Frequently asked questions

Is this a StepStone API? StepStone does not offer a public API for job data. This actor provides programmatic access to StepStone job listings through web scraping and returns structured JSON — effectively acting as a StepStone jobs API for your application.

Which portals does this StepStone scraper support? 18 portals in the StepStone Group network: stepstone.de, stepstone.at, stepstone.be, stepstone.nl, totaljobs.com, cwjobs.co.uk, jobsite.co.uk, milkround.com, caterer.com, retailchoice.com, careerstructure.com, cityjobs.com, justengineers.net, emedcareers.com, catererglobal.com, nijobs.com, jobs.ie, and pnet.co.za.

How is this different from other StepStone scrapers? Three things no other StepStone scraper on Apify offers: (1) incremental mode — only new jobs since your last run, (2) ML-predicted salary (ceSalary) from StepStone's own salary engine, and (3) excludeSponsored — filter out promoted listings and get organic results only.

Can I scrape TotalJobs with this actor? Yes. Set "geo": "TOTALJOBS" to scrape totaljobs.com. Note that TotalJobs requires a paid Apify plan with proxy access. The same actor covers CWJobs, Jobsite, Caterer, and other TotalJobs Group portals.

How often can I run it? As often as you want. With mode: "incremental", scheduling hourly is common — each run returns only jobs posted since the last run, keeping dataset costs low.

Does it return salary data? Yes. The unifiedSalary field returns the salary range from the job listing when published. With includeDetails: true, the ceSalary field returns StepStone's ML-predicted salary estimate for listings where it is available.


Known limitations

  • irishjobs.ie is not supported
  • ceSalary is only returned with includeDetails: true and only when StepStone's ML model has a prediction for that listing
  • totaljobs.com, cwjobs.co.uk, jobsite.co.uk, emedcareers.com, and caterer.com require a paid Apify plan (handled automatically)

📬 Support

Contact via Apify console. For bugs or feature requests, use the actor's issue tracker.


Last updated: March 2026