StepStone Scraper
Pricing
from $0.75 / 1,000 results
StepStone Scraper
Scrape job listings from StepStone.de, Germany's leading job board. Extract job titles, companies, locations, salaries, full descriptions, employment types, posting dates and recruiter contact emails. Perfect for recruitment analytics, market research, salary benchmarking and lead generation.
Pricing
from $0.75 / 1,000 results
Rating
0.0
(0)
Developer
SilentFlow
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Turn StepStone.de into structured, ready-to-use job data. Pull titles, companies, locations, salary, and full job descriptions from Germany's leading job board. Hundreds of listings in minutes, not hours.
How it works

✨ Why teams choose this over other StepStone scrapers
Tired of scrapers that only hand you a title and a link? Rebuilding job descriptions by hand because the data stops at the search page? Getting inconsistent rows every time you run a search?
- 📄 Full job descriptions, not just search snippets. Turn on
includeDetailsand every row gets the complete description, employment type, and exact geo-location pulled from the job page itself, not the truncated preview shown on the results list. - 🎯 The richest StepStone data available. Most StepStone scrapers stop at search-result summaries. This one adds description, employment type, and precise location per job, the fields recruiters and analysts actually need.
- 🧱 One clean row per job. Every listing lands in your dataset with the same structure: title, company, location, salary, dates, and skills, ready to filter, sort, or load into a spreadsheet without cleanup.
- 🔓 No login required. Scrape all public job listings without an account, an API key, or any manual setup.
- 🇩🇪 Built for the German market. Search by keyword and city, or paste StepStone.de search URLs directly. Locations, salary text, and posting dates come back exactly as StepStone publishes them.
🎯 What you can do with StepStone data
| Team | What they build |
|---|---|
| Recruiters & staffing agencies | Source live roles and hiring companies, and monitor competitor job postings as they go up |
| HR & people analytics | Benchmark salary ranges and benefits language across roles, industries, and regions |
| Market researchers | Track German labor-market and hiring-trend shifts over time, by city, sector, or job title |
| Sales & lead generation | Find companies actively hiring as a buying-intent signal for outbound targeting |
| Data teams | Feed a job-market dataset into dashboards, models, or internal search tools |
📥 Input parameters
What to scrape
| Parameter | Type | Description |
|---|---|---|
searchUrls | array | StepStone.de search-result URLs to scrape. Run a search on StepStone.de and paste the resulting URL here. |
keyword | string | Job keyword to search when no URL is given, e.g. "data engineer". |
location | string | City or region to focus the keyword search, e.g. "Berlin". |
Options
| Parameter | Type | Default | Description |
|---|---|---|---|
includeDetails | boolean | off | Visit each job page to add the full description, employment type, and exact location. |
Limits
| Parameter | Type | Default | Description |
|---|---|---|---|
maxItems | integer | 50 | Maximum number of jobs to collect. |
Advanced
| Parameter | Type | Default | Description |
|---|---|---|---|
debugMode | boolean | off | Detailed logs for troubleshooting. |
Note: Proxies are automatically configured in Pay Per Event mode. No proxy setup needed.
📊 Output data
Listing-level item (includeDetails off)
{"id": 9876543,"harmonisedId": "9876543_de","title": "Data Engineer (m/w/d)","url": "https://www.stepstone.de/stellenangebote--Data-Engineer-Berlin--9876543","companyName": "Beispiel GmbH","companyUrl": "https://www.stepstone.de/cmp/de/beispiel-gmbh","companyLogoUrl": "https://www.stepstone.de/logos/beispiel-gmbh.png","location": "Berlin","postCode": "10115","salary": "55.000 € - 70.000 €","datePosted": "2026-06-28","workFromHome": "2","textSnippet": "Wir suchen einen Data Engineer zur Verstärkung unseres Teams...","labels": ["Festanstellung", "Vollzeit"],"skills": ["SQL", "Python", "Airflow"],"section": "IT","isSponsored": false,"searchUrl": "https://www.stepstone.de/jobs/data-engineer?ws=Berlin","scrapedAt": "2026-07-02T10:30:00Z"}
Full detail item (includeDetails on)
{"id": 9876543,"harmonisedId": "9876543_de","title": "Data Engineer (m/w/d)","url": "https://www.stepstone.de/stellenangebote--Data-Engineer-Berlin--9876543","companyName": "Beispiel GmbH","companyUrl": "https://www.stepstone.de/cmp/de/beispiel-gmbh","companyLogoUrl": "https://www.stepstone.de/logos/beispiel-gmbh.png","location": "Berlin","postCode": "10115","salary": "55.000 € - 70.000 €","datePosted": "2026-06-28","workFromHome": "2","textSnippet": "Wir suchen einen Data Engineer zur Verstärkung unseres Teams...","labels": ["Festanstellung", "Vollzeit"],"skills": ["SQL", "Python", "Airflow"],"section": "IT","isSponsored": false,"description": "Full job description text, unabridged, as published on the job page...","descriptionHtml": "<p>Full job description text, unabridged, as published on the job page...</p>","employmentType": "FULL_TIME","validThrough": "2026-08-15","latitude": 52.5200,"longitude": 13.4050,"streetAddress": "Musterstraße 12","searchUrl": "https://www.stepstone.de/jobs/data-engineer?ws=Berlin","scrapedAt": "2026-07-02T10:30:00Z"}
🗂️ Data fields
| Category | Fields |
|---|---|
| Identity | id, harmonisedId, title, url |
| Company | companyName, companyId, companyUrl, companyLogoUrl |
| Location | location, postCode, streetAddress*, latitude*, longitude* |
| Compensation | salary, unifiedSalary |
| Timing | datePosted, validThrough* |
| Job details | description*, descriptionHtml*, employmentType*, workFromHome, textSnippet |
| Recruiter contact | contactEmail*, contactPhone* |
| Classification | labels, topLabels, skills, section, partnership, isSponsored, isAnonymous, isHighlighted, isTopJob |
| Meta | searchUrl, scrapedAt |
* Added only when includeDetails is turned on. contactEmail and contactPhone are the recruiter contact details when the listing publishes them, ready for outreach. workFromHome is StepStone's remote-work indicator, returned as a short code (values such as "1" or "2"), signalling whether a role offers remote or home-office work. salary can be empty when the employer does not publish a figure, which is common on StepStone.
companyId- StepStone's internal identifier for the hiring company.unifiedSalary- structured salary range (min, max, currency, period) when available.labels/topLabels- badges shown on the listing (for example new, top job).skills- skills highlighted on the listing when present.partnership- details when a listing comes from a partner job board.isAnonymous- true when the employer is not named on the listing.isHighlighted/isTopJob- promotion flags for the listing.
🚀 Examples
Search jobs by keyword and city
{"keyword": "data engineer","location": "Berlin","maxItems": 50}
Pull full descriptions for every result
{"keyword": "product manager","location": "München","includeDetails": true,"maxItems": 100}
Scrape a StepStone search URL you already built on the site
{"searchUrls": ["https://www.stepstone.de/jobs/software-engineer/in-hamburg"],"maxItems": 200}
Track new postings for a role in a specific city
{"keyword": "data engineer","location": "Berlin","includeDetails": true,"maxItems": 30}
Fast, listing-only run for a large keyword sweep
{"keyword": "sales manager","location": "Frankfurt","includeDetails": false,"maxItems": 500}
💻 Integrations
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("{username}/stepstone-scraper").call(run_input={"keyword": "data engineer","location": "Berlin","includeDetails": True,"maxItems": 100,})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(f"{job['title']} at {job['companyName']} ({job['location']}) - {job['salary']}")
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('{username}/stepstone-scraper').call({keyword: 'product manager',location: 'München',includeDetails: true,maxItems: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(job => {console.log(`${job.title} at ${job.companyName}: ${job.salary || 'salary not published'}`);});
📈 Performance
| Metric | Value |
|---|---|
| Speed (listing only) | Fastest mode, one page fetch per batch of results |
Speed (with includeDetails) | One extra page fetch per job, for the full description and exact location |
| Data freshness | Real-time, listings reflect what is live on StepStone.de at scrape time |
| Max items per run | 10,000 |
💡 Tips for best results
- Start with
maxItems: 50to confirm your keyword and location return the roles you expect, then scale up. - Set
locationprecisely."Berlin"returns tighter results than a broader region name. - Turn on
includeDetailsfor analytics work. Salary benchmarking, skills extraction, and remote-work analysis all need the full job description, not just the search snippet. - Turn off
includeDetailsfor large keyword sweeps. When you only need title, company, and location across thousands of jobs, the listing-only run is faster. - Paste a
searchUrlsentry when you already filtered on the site. Any filters you set on StepStone.de (contract type, seniority, radius) carry over automatically because the URL encodes them.
❓ FAQ
Do I need a StepStone account? No. The scraper extracts publicly available job listings. No login, no API key.
What's the difference between listing-only and full detail runs?
Listing-only returns the fields shown on the search page. Turning on includeDetails adds the complete job description, employment type, and exact location by visiting each job page.
Can I search by keyword without building a URL myself?
Yes. Set keyword and, optionally, location. The scraper builds the search for you.
Can I paste a search URL directly from StepStone.de?
Yes. Copy the URL from your browser after running a search on StepStone.de and add it to searchUrls.
Why is salary sometimes empty?
Not every employer publishes a salary range on StepStone. When it is missing on the source page, it is left empty rather than guessed.
Does it handle pagination automatically?
Yes. The scraper keeps collecting jobs across result pages until it reaches maxItems.
📬 Support
Need something this scraper doesn't do yet? We ship features fast.
- Feature requests go straight to our backlog
- Enterprise needs? We do custom integrations
Response time: usually under 24 hours.