Stepstone Jobs Scraper
Pricing
Pay per event
Stepstone Jobs Scraper
Search StepStone Germany and export jobs with employer websites, application links, and public contact fields.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Search stepstone jobs by keyword or StepStone.de URL and export structured vacancies with employer websites, application links, and public contact details shown in each posting.
The Actor is designed for recurring recruiting research, vacancy monitoring, German hiring-market analysis, and employer lead enrichment. It uses StepStone's public result pages and structured job metadata; no login is required.
What can the Stepstone Jobs Scraper do?
- Build StepStone Germany searches from one or more keywords.
- Narrow generated searches by city or region and radius.
- Accept existing StepStone search-results URLs.
- Accept individual StepStone job-detail URLs.
- Follow result pagination until
maxItemsis reached. - Deduplicate jobs by the stable StepStone listing ID.
- Extract company, location, date, salary, remote-work, skills, and description fields.
- Enrich records with employer career websites and application links found in the posting.
- Extract public recruiter emails, phone numbers, and named contacts when StepStone displays them.
- Return clean JSON rows in the default Apify dataset for download or automation.
Who is this StepStone jobs extractor for?
Recruiters and staffing teams
Build a current vacancy list for a role and region, identify hiring employers, and keep the public contact fields supplied in the job advertisement next to each opportunity.
B2B sales and lead-research teams
Use active hiring as a company signal. Export the employer, role, location, career website, application URL, and available public contact information into a CRM or research sheet.
Labor-market analysts
Collect reproducible samples of job titles, employers, locations, posting dates, salary fields, and remote-work signals for analysis.
Job-data and automation teams
Schedule the same search URLs or keywords, then send dataset rows to a database, webhook, spreadsheet, or monitoring pipeline.
Why use this Actor?
The output joins the search result with public details from the matching job advertisement. This avoids a second manual enrichment step for fields such as the full description, employer careers URL, application URL, and advertised contact person.
The Actor also preserves sourceSearchUrl and the stable listing jobId, making it practical to compare scheduled runs and identify records that appeared, disappeared, or changed.
It does not invent employer contacts. Contact arrays remain empty when a posting does not display that information.
What StepStone job data is extracted?
| Field | Meaning |
|---|---|
jobId | Stable StepStone listing identifier |
title | Advertised job title |
url | StepStone job-detail URL |
companyName | Hiring employer |
companyId | StepStone employer identifier |
companyPageUrl | Employer page on StepStone |
companyLogoUrl | Employer logo when available |
location | Advertised location |
postCode | Postal code when available |
datePosted | Source publication date |
salaryText | Salary text supplied by StepStone |
salaryMin, salaryMax | Normalized salary bounds when available |
salaryCurrency | Salary currency |
workFromHome | Remote or hybrid signal |
descriptionText | Plain-text job description or preview |
skills | Skills supplied in structured metadata |
labels | StepStone listing labels |
employerWebsite | Public employer or careers website in the posting |
applicationUrl | Public external application URL |
contactEmails | Public email addresses displayed in the posting |
contactPhones | Public phone numbers displayed in the posting |
contactNames | Named contacts displayed in the posting |
sourceSearchUrl | Input/search page that produced the row |
scrapedAt | UTC extraction timestamp |
How to scrape StepStone jobs
- Open the Actor input page.
- Add one or more job keywords, StepStone URLs, or both.
- Optionally set a location and radius for keyword searches.
- Keep Enrich job and employer contacts enabled for detail fields.
- Set
maxItemsto bound the run. - Click Start.
- Open the Dataset tab to preview, download, or integrate the results.
A useful first run is:
{"keywords": ["software engineer"],"location": "Berlin","radiusKm": 30,"maxItems": 25,"includeDetails": true}
Input parameters
keywords
An array of role or skill searches. The Actor creates StepStone.de URLs for each value. Empty keyword values are rejected.
startUrls
StepStone.de search-results or individual job-detail URLs. Other domains and non-HTTPS URLs are rejected. Search URLs are useful when you already configured filters on StepStone.
location and radiusKm
These apply to generated keyword searches. The radius can be from 0 to 100 km.
maxItems
Maximum unique records across all keywords and URLs. Valid range: 1 to 5,000. The Actor stops scheduling work once this limit is reached.
includeDetails
When true, each result detail page is fetched for description, application, employer website, and public contact fields. Set it to false for a lighter search-results-only export.
maxRequestRetries
Bounded retries for temporary network, rate-limit, server, or challenge responses. Valid range: 0 to 5.
Output example
A representative enriched row looks like this:
{"jobId": "14361030","title": "Senior Software Entwickler / Architekt (m/w/d)","companyName": "BIOTRONIK Corporate Services SE","location": "Berlin","datePosted": "2026-08-04T17:16:14+02:00","employerWebsite": "https://www.biotronik.com/karriere","applicationUrl": "https://www.biotronik.com/karriere","contactEmails": [],"contactPhones": ["+49 30689053513"],"contactNames": ["Juan Sánchez"],"sourceSearchUrl": "https://www.stepstone.de/jobs/software-entwickler/in-berlin"}
Fields are nullable because employers do not supply every field on every job. Empty contact arrays mean the advertisement did not expose that contact type.
How much does it cost to scrape StepStone jobs?
This Actor uses pay-per-event pricing: one small start charge per run plus an item charge for each job saved to the dataset. Failed, duplicate, or rejected rows are not charged as items.
At the current FREE tier, the prices are:
$0.005per run start;$0.00184per saved job.
Examples at that tier:
| Saved jobs | Estimated Actor charge |
|---|---|
| 1 | $0.00684 |
| 25 | $0.05100 |
| 100 | $0.18900 |
| 1,000 | $1.84500 |
Higher Apify plan tiers receive lower per-item prices. Platform resource usage can vary by input; the Console estimate is the final source for a run.
Monitoring new or changed jobs
Run the same input on a schedule and compare records by jobId.
A typical workflow is:
- Schedule the Actor daily.
- Store
jobId,datePosted, and selected fields in your database. - Treat previously unseen IDs as new vacancies.
- Compare tracked fields for changed vacancies.
- Mark IDs absent from later complete runs according to your own retention policy.
The Actor emits current source records; it does not maintain historical state or send alerts by itself.
Lead enrichment workflow
For each job, use companyName, employerWebsite, applicationUrl, and the contact arrays as source-attributed research fields. Keep the StepStone job URL with the record so a reviewer can inspect context and freshness.
Do not infer that a job contact has consented to unrelated outreach. Apply your organization's legal basis, suppression lists, and contact policies before using public data.
Export StepStone jobs to a spreadsheet or database
From the Dataset tab, download JSON, CSV, Excel, XML, or RSS. For automation, use the dataset API URL in the run output.
Common destinations include:
- Google Sheets through Make or Zapier;
- Airtable or a CRM staging table;
- PostgreSQL, BigQuery, Snowflake, or a data lake;
- Slack or email notifications for newly observed IDs;
- internal recruiter dashboards.
Run with the Apify API
cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~stepstone-jobs-contact-enrichment/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords":["data engineer"],"location":"Hamburg","maxItems":50,"includeDetails":true}'
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/stepstone-jobs-contact-enrichment').call({keywords: ['data engineer'],location: 'Hamburg',maxItems: 50,includeDetails: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient(token="YOUR_APIFY_TOKEN")run = client.actor("automation-lab/stepstone-jobs-contact-enrichment").call(run_input={"keywords": ["data engineer"],"location": "Hamburg","maxItems": 50,"includeDetails": True,})items = client.dataset(run["defaultDatasetId"]).list_items().itemsprint(items)
Use with MCP and AI agents
Add the Actor to Claude Code:
claude mcp add --transport http apify \"https://mcp.apify.com?tools=automation-lab/stepstone-jobs-contact-enrichment"
Claude Desktop MCP setup
Add this server to Claude Desktop's MCP configuration:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=automation-lab/stepstone-jobs-contact-enrichment"}}}
Cursor MCP setup
Use the same mcpServers.apify.url value in Cursor's MCP settings.
VS Code MCP setup
Add the same HTTP MCP server URL to your VS Code MCP configuration.
Example prompts:
- "Find up to 30 current StepStone data engineer jobs in Hamburg and return employer websites."
- "Extract this StepStone results URL and group jobs by hiring company."
- "Compare today's StepStone job IDs with yesterday's dataset and list new employers."
Reliability, retries, and limits
StepStone can vary response timing and anti-bot behavior by route. The Actor verifies recognizable structured data instead of treating a challenge page as an empty result. It starts with direct HTTP and bounded exponential backoff, then escalates exhausted requests to datacenter sessions, German residential sessions, and finally resource-limited browser rendering/network requests.
Cookies and proxy identity stay together in bounded session pools. Healthy sessions are reused; challenged sessions are retired and rotated rather than retried indefinitely. Detail enrichment can still be unavailable for an individual result even when the search row succeeds. In that case, the Actor emits the useful search record and leaves unavailable detail/contact fields empty rather than inventing data.
Use conservative limits and schedules. Very broad keywords can return thousands of results and naturally take longer when detail enrichment is enabled.
Troubleshooting
The run says that input is missing
Provide at least one non-empty keywords value or one valid StepStone.de URL in startUrls.
I received jobs but no contact email
Many advertisements do not publish an email address. Check contactPhones, contactNames, employerWebsite, and applicationUrl; empty arrays are expected when the source does not display that field.
A detail record has only search fields
The detail route may have timed out or returned a temporary challenge. Increase maxRequestRetries modestly and try again later. Avoid repeated aggressive retries.
My URL was rejected
Only public HTTPS URLs on stepstone.de are supported. Other StepStone country domains are outside this Actor's current scope.
Responsible and legal use
Scrape only public data and follow StepStone's terms, robots guidance, applicable database rights, privacy law, and your organization's policies. Minimize collection, respect individuals' rights, and keep source URLs and timestamps for auditability.
Publicly displayed contact information is not blanket consent for marketing. Users are responsible for establishing a lawful purpose, honoring opt-outs, and securing exported data.
This Actor is an independent automation tool and is not affiliated with or endorsed by StepStone.
Frequently asked questions
Does it require a StepStone login?
No. It is designed for public StepStone.de job pages.
Does it cover StepStone Austria, Belgium, or the Netherlands?
No. The current input contract intentionally validates stepstone.de only.
Can it monitor jobs continuously?
Use an Apify schedule and compare stable job IDs between runs. The Actor itself returns the current source state and does not retain history.
Does it guarantee employer contact details?
No. It extracts public contact fields only when they appear in a posting. Results without those fields remain useful job records with empty contact arrays.
Can I disable detail requests?
Yes. Set includeDetails to false for faster search-list exports without full descriptions or contact enrichment.
Are duplicate jobs charged twice?
No. Jobs are deduplicated by source ID within each run, and item charges apply only when a unique row is saved.
Related automation-lab Actors
Use the Apify Store profile for automation-lab to find related job-board and employer-research Actors. This Actor is intentionally StepStone.de-specific so its fields and route validation remain clear.