StepStone Jobs Scraper — Salary, Company & Full Job Details
Pricing
from $2.29 / 1,000 results
StepStone Jobs Scraper — Salary, Company & Full Job Details
Scrape job listings from StepStone across DACH & Benelux — title, company, location, salary, contract type, description and apply URL.
Pricing
from $2.29 / 1,000 results
Rating
0.0
(0)
Developer
Haketa
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
0
Monthly active users
20 hours ago
Last modified
Categories
Features
Share
Scrape job listings from StepStone — the #1 job board in Germany (stepstone.de) and Austria (stepstone.at) — as clean, structured data with no login and no coding. This StepStone scraper searches by keyword and location (or follows your own filtered StepStone URLs) and extracts the job title, hiring company, location, structured salary range (salaryMin, salaryMax, salaryCurrency, salaryPeriod), contract type, remote/hybrid work model, full job description, benefits, ISO posting date, company profile, and application link for every result.
Unlike basic job scrapers that only grab a title and company name from search cards, this StepStone data extractor opens each job posting to capture the complete hiring intelligence record — including structured compensation ranges that ~86–93% of listings expose. Export to JSON, CSV, Excel, or API for recruitment pipelines, B2B lead generation, salary benchmarking, and DACH labor-market intelligence.
⚡ At a glance
| Feature | Details |
|---|---|
| Target domains | stepstone.de (Germany), stepstone.at (Austria) + any filtered StepStone URL via startUrls |
| Search modes | Keyword + City dropdown / Custom location + Radius (km), Search URLs, or Direct Job URLs |
| Extracted fields | 36 structured fields per job — identity, company, location, structured salary, contract/remote model, full text, dates & apply link |
| Salary intelligence | salary (formatted), salaryMin, salaryMax, salaryCurrency (EUR), salaryPeriod (Jahr/Monat), salaryPredicted (true/false) |
| Detail enrichment | Toggle scrapeDetails: true (default) for full description + salary + benefits, or false for high-speed list overview |
| Pagination & scale | Automatic multi-page pagination (?page=N, ~25 jobs/page) + multi-city/keyword expansion for 1,000+ results |
| Deduplication | 100% deduplicated in-memory by canonical jobId across all pages and searches |
| Export formats | JSON, JSONL, CSV, Excel (.xlsx), HTML, XML, RSS, and REST API |
🔎 Why scrape StepStone?
StepStone is the dominant recruitment marketplace across the German-speaking DACH region, hosting hundreds of thousands of active vacancies from Mittelstand leaders, DAX enterprises, tech startups, and staffing agencies. Every job listing is a high-intent signal: it reveals which companies are investing, what technology stacks or qualifications they need, where they are expanding, and how much they pay.
Collecting StepStone data manually does not scale. Search results are split across dozens of pages, salary ranges are tucked inside interactive components, full descriptions and benefits sit on individual detail pages, and standard datacenter requests are blocked. A dedicated StepStone job scraper turns the entire job board into a clean, structured dataset you can query, schedule, and pipe directly into your ATS, CRM, or analytics warehouse.
Common reasons teams scrape StepStone
- 🎯 Recruiting & talent sourcing — build a live feed of open roles for specific titles, skills, or German/Austrian cities and engage hiring managers first.
- 💶 Salary benchmarking & compensation analytics — analyze
salaryMinandsalaryMaxacross roles, seniority levels, industries, and regions. - 📈 B2B lead generation & sales prospecting — turn actively hiring companies (
company,companyProfileUrl,industry,locality,postalCode) into high-intent outbound prospect lists. - 📊 DACH labor-market & skills research — track hiring velocity, remote/hybrid work adoption (
Homeoffice möglich), and skill demand over time. - 🕵️ Competitive intelligence — monitor competitors' open positions, department expansion, and regional hiring footprint.
- 🔁 Job board & ATS aggregation — ingest normalized StepStone job postings into your own job portal, career marketplace, or internal database.
- 🗓️ Automated daily job alerts — schedule recurring runs and deduplicate on
jobIdto surface only newly published vacancies.
✨ What this StepStone scraper does
- ✅ Keyword + location search across stepstone.de (Germany) and stepstone.at (Austria), with 19 major DACH cities in a one-click dropdown plus free-text
locationCustomandradius(0–100 km). - ✅ Start-URL mode (
startUrls) — paste any StepStone search URL with custom browser filters applied (remote work, seniority, discipline, date posted, industry) or paste individual job URLs. - ✅ Unlocked 1,000+ deep pagination — automatically walks through every result page (
?page=1, 2, 3…, ~25 jobs per page) and expands across cities/keywords whenmaxItems >= 1000, governed cleanly by yourmaxItemslimit. - ✅ Full detail-page enrichment (
scrapeDetails) — visits each job posting to extract the complete job description, employee benefits, structured salary bounds, contract type, work model, ISO publication/expiration dates, and direct application URL. - ✅ Structured compensation fields — parses
salaryMin,salaryMax,salaryCurrency, andsalaryPeriodas typed fields alongside asalaryPredictedboolean so you can separate employer-stated pay from StepStone salary estimates. - ✅ Remote & home-office detection — populates
workFromHome(e.g.Homeoffice möglich,Home-Office) andworkType(Vollzeit,Teilzeit) so you can filter remote-friendly positions immediately. - ✅ Fast list-only mode — set
scrapeDetails: falsewhen you only need a rapid scan of titles, companies, locations, relative dates, and snippets. - ✅ Zero duplicates & timeout safety — deduplicates every record by
jobId, streams items to the dataset in real time, and stops gracefully before any platform timeout so your collected data is always preserved.
🎯 Use cases
| Persona | How they use StepStone Jobs Scraper |
|---|---|
| Recruitment & Staffing Agencies | Automate daily discovery of companies hiring for hard-to-fill engineering, healthcare (Pflegefachkraft), finance, and sales roles across Germany and Austria. |
| B2B Sales & GTM Teams | Identify growing DACH companies by their active job openings and enrich CRM pipelines with hiring company names, StepStone company profiles, cities, and industries. |
| HR Tech & People Analytics | Build proprietary DACH salary benchmarks using numeric salaryMin / salaryMax ranges segmented by job title, city, and industry. |
| Job Aggregators & Career Portals | Populate niche job boards with fresh, schema-normalized vacancies including full descriptions, benefits, company logos, and applyUrl links. |
| Market & Economic Researchers | Measure regional labor demand, contract types (Feste Anstellung vs Befristeter Vertrag), and remote-work trends across German federal states and Austrian provinces. |
| Venture Capital & Private Equity | Track portfolio and target-company headcount velocity by monitoring new job postings and department growth week over week. |
📥 Input parameters
Configure the Actor using the visual form in the Apify Console or pass a JSON object via the API. No field is required — an empty input {} automatically collects a diverse sample of popular jobs across Germany.
| Field | Type | Default | Description |
|---|---|---|---|
keyword | string | "software developer" (prefill) | Job title or keyword to search (e.g. software developer, pflegefachkraft, projektmanager, data analyst). Leave empty for a mixed sample across top roles. |
domain | string | "de" | Country site to search: "de" (stepstone.de Germany) or "at" (stepstone.at Austria). |
location | string | "" (All locations) | Dropdown of 19 major German and Austrian cities (berlin, münchen, hamburg, köln, frankfurt-am-main, wien, graz, etc.) or country-wide. |
locationCustom | string | "" | Optional free-text city, town, or region name that overrides the location dropdown (e.g. karlsruhe, bonn, mannheim, linz). |
radius | integer | 0 | Search radius in kilometers (0–100) around the selected city. 0 keeps results strictly inside the target location. |
scrapeDetails | boolean | true | Open each job detail page to extract full description, structured salary (salaryMin/salaryMax), benefits, contract type, ISO dates, and applyUrl. Set false for fast list-only mode. |
maxItems | integer | 0 (50 prefill) | Maximum number of unique jobs to collect. 0 = unlimited (empty filter runs cap at 100 by default). Set 1000 or higher for bulk extraction. |
maxPagesPerSearch | integer | 0 | Maximum result pages per search query (~25 jobs per page). 0 = automatic / unlimited, governed by maxItems. |
startUrls | array | [] | Optional list of StepStone search-result URLs (with any custom filters applied) or direct individual job posting URLs. |
proxyConfiguration | object | DE Residential | Proxy configuration. European residential proxy (RESIDENTIAL, country DE or AT) is pre-configured and strongly recommended. |
requestDelay | integer | 800 | Polite delay between requests in milliseconds (0–20000). |
maxConcurrency | integer | 6 | Number of detail pages fetched in parallel (1–20). |
Example 1 — Targeted keyword & city search (Germany)
{"keyword": "software developer","location": "berlin","domain": "de","radius": 20,"scrapeDetails": true,"maxItems": 250,"maxPagesPerSearch": 0,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "DE"}}
Example 2 — High-volume 1,000+ job extraction
{"keyword": "ingenieur","domain": "de","scrapeDetails": true,"maxItems": 1200,"maxPagesPerSearch": 0,"maxConcurrency": 8}
Example 3 — Filtered StepStone search URLs (startUrls)
Apply any filters on StepStone in your browser (remote/home-office, seniority, full-time/part-time, posted within 7 days), copy the URL, and paste it into startUrls:
{"startUrls": ["https://www.stepstone.de/jobs/data-engineer/in-hamburg?wfh=2","https://www.stepstone.at/jobs/marketing/in-wien"],"scrapeDetails": true,"maxItems": 500}
Example 4 — Fast list-only scan (scrapeDetails: false)
{"keyword": "controller","location": "frankfurt-am-main","scrapeDetails": false,"maxItems": 1000}
📤 Output format & schema
Each job is saved as one normalized JSON object in the dataset. Below is a real record from a live software developer run:
{"jobId": "10478856","title": "Software Developer (m/w/d) Defence","url": "https://www.stepstone.de/stellenangebote--Software-Developer-m-w-d-Defence-Ulm-FERCHAU-Connecting-People-and-Technologies--10478856-inline.html","company": "FERCHAU – Connecting People and Technologies","companyUrl": "https://www.stepstone.de/cmp/de/FERCHAU-Connecting-People-and-Technologies-6095/jobs.html","companyProfileUrl": "https://www.stepstone.de/cmp/de/FERCHAU-Connecting-People-and-Technologies-6095/jobs.html","companyLogo": "https://www.stepstone.de/upload_DE/logo/F/logoFERCHAU-GmbH-6095DE.gif","location": "Ulm","country": "DE","region": null,"locality": "Ulm","postalCode": "89077","workFromHome": "Homeoffice möglich","contractType": "Feste Anstellung","workType": "Homeoffice möglich, Vollzeit","employmentType": "FULL_TIME","industry": "IT, IT-Softwareentwicklung","salary": "52.000 – 80.000 EUR/Jahr (geschätzt)","salaryMin": 52000,"salaryMax": 80000,"salaryCurrency": "EUR","salaryPeriod": "Jahr","salaryPredicted": true,"datePosted": "2026-11-01T03:03:07.533Z","validThrough": "2026-12-29T23:34:56.393Z","postedRelative": "vor 21 Stunden","snippet": "FERCHAU ist eine führende europäische Plattform für Technologie-Dienstleistungen …","description": "Technologischer Fortschritt gelingt nur, wenn Visionen zur Realität werden …","benefits": "Faszinierende und wegweisende Entwicklung von technologischen Lösungen …","applyUrl": "https://www.stepstone.de/stellenangebote--Software-Developer-m-w-d-Defence-Ulm-FERCHAU-Connecting-People-and-Technologies--10478856-inline.html","directApply": true,"searchWhat": "software developer","searchWhere": null,"searchDomain": "de","rank": 2,"scrapedAt": "2026-11-02T00:33:34.856Z"}
🗂️ Field reference by category
🆔 Job Identity & Links
| Field | Type | Coverage | Description |
|---|---|---|---|
jobId | string | 🟢 High (100%) | Unique StepStone job identifier — stable key for cross-run deduplication. |
title | string | 🟢 High (100%) | Full job posting title. |
url | string | 🟢 High (100%) | Canonical StepStone job detail URL. |
applyUrl | string | 🟢 High (~100%) | Direct application link (scrapeDetails: true). |
directApply | boolean | 🟢 High (~100%) | Whether candidates can apply directly on StepStone. |
🏢 Hiring Company (B2B Lead Signals)
| Field | Type | Coverage | Description |
|---|---|---|---|
company | string | 🟢 High (100%) | Name of the hiring organization. |
companyUrl | string | 🟡 Conditional (~73%) | Organization URL from structured job data when provided. |
companyProfileUrl | string | 🟡 Conditional (~73%) | Link to the employer's StepStone company profile and open jobs page. |
companyLogo | string | 🟢 High (~98%) | URL of the employer's logo image. |
industry | string | 🟢 High (~98%) | Employer industry and job function category (scrapeDetails: true). |
📍 Location & Geography
| Field | Type | Coverage | Description |
|---|---|---|---|
location | string | 🟢 High (100%) | Display location string on the job card (city or multiple cities). |
country | string | 🟢 High (100%) | ISO country code (DE, AT, etc.). |
locality | string | 🟢 High (~95%) | Parsed city/municipality from the detail page. |
postalCode | string | 🟡 Conditional (~45%) | Postal code (PLZ) when published by the employer. |
region | string | 🟡 Conditional (<5%) | Federal state/region when explicitly included in structured address data. |
💶 Compensation & Salary Intelligence
| Field | Type | Coverage | Description |
|---|---|---|---|
salary | string | 🟢 High (~86–93%) | Formatted compensation string (e.g. 52.000 – 80.000 EUR/Jahr (geschätzt)). |
salaryMin | integer | 🟢 High (~86–93%) | Lower bound of the annual/monthly salary range as an integer. |
salaryMax | integer | 🟢 High (~86–93%) | Upper bound of the annual/monthly salary range as an integer. |
salaryCurrency | string | 🟢 High (~86–93%) | ISO currency code (typically EUR). |
salaryPeriod | string | 🟢 High (~86–93%) | Pay period (Jahr, Monat, or Stunde). |
salaryPredicted | boolean | 🟢 High (100%) | true when the range is StepStone's salary model estimate; false when employer-stated. |
🕒 Work Model, Contract & Dates
| Field | Type | Coverage | Description |
|---|---|---|---|
contractType | string | 🟢 High (~95%) | Contract type (e.g. Feste Anstellung, Befristeter Vertrag, Praktikum). |
workType | string | 🟢 High (~95%) | Working time and remote mode (e.g. Homeoffice möglich, Vollzeit, Teilzeit). |
workFromHome | string | 🟡 Conditional | Populated whenever remote/hybrid/home-office work is indicated (Homeoffice möglich). |
employmentType | string | 🟢 High (~98%) | Normalized employment type (FULL_TIME, PART_TIME, CONTRACTOR, etc.). |
datePosted | string | 🟢 High (~100%) | Exact ISO 8601 publication timestamp (scrapeDetails: true). |
validThrough | string | 🟢 High (~95%) | ISO 8601 listing expiration timestamp (scrapeDetails: true). |
postedRelative | string | 🟢 High (~95%) | Human-readable relative age from the search card (e.g. vor 2 Tagen). |
📄 Job Content & Search Metadata
| Field | Type | Coverage | Description |
|---|---|---|---|
snippet | string | 🟢 High (100%) | Short teaser text from the search result card. |
description | string | 🟢 High (~100%) | Full plain-text job description (scrapeDetails: true). |
benefits | string | 🟢 High (~95%) | Employee benefits and perks section (scrapeDetails: true). |
searchWhat | string | 🟢 High | Keyword query that discovered this listing. |
searchWhere | string | 🟡 Conditional | Location filter used for the search. |
searchDomain | string | 🟢 High (100%) | StepStone country domain (de, at). |
rank | integer | 🟢 High (100%) | 1-based ranking position within the search query. |
scrapedAt | string | 🟢 High (100%) | ISO 8601 timestamp when the record was extracted. |
🔁 Pagination & 1,000+ scaling
The Actor paginates StepStone search results automatically:
- Multi-page traversal: For each search query, it walks page
1, 2, 3…(?page=N, ~25 job cards per page) untilmaxItemsis reached,maxPagesPerSearchis reached (when set> 0), or no more results exist. - Automatic multi-city / keyword expansion: When
maxItems >= 1000(withmaxPagesPerSearch: 0), if a single search query exhausts its pages before hitting your target, the scraper automatically expands across top German (DE) or Austrian (AT) cities and popular job categories to deliver 1,000+ unique, deduplicated job listings in a single run. - Global deduplication: Every job is tracked by its numeric
jobIdin a globalSet, ensuring zero duplicate records even when overlapping searches or cities are combined.
💻 How to use via API
Python (apify-client)
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_API_TOKEN")run_input = {"keyword": "software developer","location": "berlin","domain": "de","scrapeDetails": True,"maxItems": 200,"maxPagesPerSearch": 0,}run = client.actor("haketa/stepstone-scraper").call(run_input=run_input)for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{job['title']} | {job['company']} | {job['salary']} | {job['url']}")
JavaScript / Node.js (apify-client)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_API_TOKEN' });const run = await client.actor('haketa/stepstone-scraper').call({keyword: 'data engineer',location: 'münchen',domain: 'de',scrapeDetails: true,maxItems: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Extracted ${items.length} StepStone jobs:`, items[0]);
💡 Best practices & tips
- Keep European residential proxies enabled — StepStone blocks standard datacenter IPs. The default
RESIDENTIALproxy configuration (DE) ensures smooth, uninterrupted extraction. - Leave
maxPagesPerSearchat0for large runs — settingmaxPagesPerSearch: 0letsmaxItemscontrol the exact stop point, whether you want 50 jobs or 2,000+ jobs. - Use
scrapeDetails: falsefor rapid market sizing — list-only mode fetches 25 jobs per single HTTP request and finishes 1,000+ listings in under a minute. - Filter remote roles easily — inspect
workFromHomeandworkTypeforHomeoffice möglichor pass a pre-filtered remote URL (?wfh=2) instartUrls. - Schedule daily incremental runs — combine the Apify Scheduler with webhook/Make/Zapier integrations and deduplicate on
jobIdto trigger instant alerts on newly posted roles.
⚠️ Limitations
- Residential proxy requirement: Because StepStone protects its pages against datacenter traffic, runs without residential proxies will fail or return 0 results.
- Region field sparsity: StepStone's structured address data rarely populates
region(federal state), whereaslocality(city),postalCode, andcountryare reliably populated. - Predicted vs. stated salaries: When an employer does not state an explicit salary range in the ad, StepStone provides a calculated benchmark (
salaryPredicted: true). Both are clearly distinguished in the output.
❓ FAQ
How many jobs can StepStone Jobs Scraper extract?
As many as your search criteria expose — from a quick 50-job sample to 1,000+ deduplicated jobs in a single run. Set maxPagesPerSearch: 0 and set maxItems to your desired total (or 0 for unlimited).
Does this scraper extract real salary numbers?
Yes. Whenever StepStone includes a stated or estimated compensation range on the detail page (~86–93% of listings), the Actor extracts salary (formatted string), salaryMin (integer), salaryMax (integer), salaryCurrency (EUR), salaryPeriod (Jahr/Monat), and salaryPredicted (boolean).
Do I need a StepStone account or cookies?
No. The scraper extracts public job listings without requiring any login, cookies, or account credentials.
Which StepStone countries are supported?
Direct keyword + location search supports Germany (stepstone.de) and Austria (stepstone.at). You can also pass search or job URLs from other StepStone domains via startUrls.
How fast is a typical run?
List-only mode (scrapeDetails: false) collects ~25 jobs per second. Full detail mode (scrapeDetails: true) enriches 6 jobs concurrently by default, collecting 50 full job records in ~20–30 seconds and 400+ full records in ~4 minutes.
Can I scrape only specific job URLs?
Yes. Paste individual StepStone job posting URLs (.../stellenangebote--...html) into startUrls and the Actor will scrape their full details directly.
🔗 Related scrapers
- SEEK Jobs Scraper (Australia & NZ, with Salary)
- ZipRecruiter Jobs & Salary Scraper (US, UK, IE, CA)
- Workana Freelance Jobs Scraper
- H1B Visa Database Scraper
- GoodFirms B2B Companies & Software Scraper
📋 Changelog
- v1.2 (2026-11) — Unlocked 1,000+ deep pagination: changed
maxPagesPerSearchdefault to0(auto/unlimited governed bymaxItems), removed partial-page early break, added automatic multi-city/keyword expansion for 1,000+ runs, and optimized default prefill (maxItems: 50) for fast<30sverification runs. - v1.1 (2026-08) — Added automatic
workFromHomeremote/hybrid signal extraction from work-model chips and Turkishİ/ıinput normalization. - v1.0 (2026-06) — Initial release with
stepstone.de&stepstone.atsearch,startUrlssupport, full detail enrichment, and structuredsalaryMin/salaryMaxextraction.