StepStone Jobs Scraper
Pricing
from $0.95 / 1,000 item extracteds
StepStone Jobs Scraper
Scrape StepStone jobs by keyword, location, or URL. Export titles, companies, locations, descriptions, salary signals, and hiring metadata.
Pricing
from $0.95 / 1,000 item extracteds
Rating
0.0
(0)
Developer
Hanna Nosova
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Share
Scrape public StepStone job listings by keyword, location, or StepStone URL.
Use this actor to collect structured job data from StepStone for recruiting research, lead generation, hiring intelligence, and labor-market monitoring.
What does StepStone Jobs Scraper do?
StepStone Jobs Scraper extracts public job listings from StepStone search and job pages.
It can return job titles, employers, locations, job URLs, descriptions, salary signals, employment type, requirements, skills, company logos, and source metadata.
The output is ready for spreadsheets, BI tools, dashboards, enrichment pipelines, and recruiting workflows.
Who is it for?
- ๐งโ๐ผ Recruiters tracking hiring demand by role and city.
- ๐ Labor-market analysts monitoring employer activity.
- ๐งฒ Lead-generation teams finding companies that are hiring.
- ๐ข Sales teams prospecting HR, staffing, and employer accounts.
- ๐งช Researchers comparing job titles, locations, skills, and salaries.
- ๐ค Automation teams feeding job data into internal systems.
Why use this actor?
- โ Search StepStone by job keyword and location.
- โ Process StepStone search URLs and job detail URLs.
- โ Keep every row traceable to the input query and source URL.
- โ Export clean structured data from the Apify dataset.
- โ
Limit runs with
maxItemsfor predictable costs. - โ Use the default German residential proxy route for reliable collection when StepStone stalls direct cloud traffic.
- โ Optimized job-detail collection with automatic fallback keeps larger runs fast without dropping full descriptions.
- โ
Inspect
RUN_SUMMARYfor discovered, saved, fallback, and failed-detail counts. - โ
Exit cleanly with partial rows and a
RUN_CHECKPOINTbefore long workloads reach the platform timeout.
Output fields
| Field | Description |
|---|---|
title | Job title shown on StepStone. |
company | Hiring company or organization. |
location | Job location when available. |
jobUrl | Canonical StepStone job URL. |
postedAt | Posting date when available. |
validThrough | Expiration date when available. |
employmentType | Full-time, part-time, contract, or similar signal. |
salary | Salary text or structured salary signal when available. |
description | Job description text. |
requirements | Requirements or profile text when detected. |
skills | Common skill keywords detected in the posting. |
companyLogo | Company logo URL when available. |
sourceQuery | Keyword used for the search. |
sourceLocation | Location used for the search. |
sourceUrl | Search or detail URL where the listing was found. |
scrapedAt | Timestamp of extraction. |
Pricing
This Actor uses Apify pay-per-event pricing. The prices below come from the current Actor pricing configuration. Apify public plans map to Store discount tiers, so the table shows both the user-facing plan context and the pricing tier name. The final price shown in Apify depends on the user account plan and any custom agreement.
| Event | What is charged | Price |
|---|---|---|
start | One-time fee charged when a run starts. Covers fixed startup cost (init, proxy warmup, first HTTP setup). | $0.005 |
| Event | What is charged | Free / no discount | Starter / Bronze | Scale / Silver | Business / Gold | Custom / Platinum | Custom / Diamond |
|---|---|---|---|---|---|---|---|
item | Charged per item extracted. | $1.8155 / 1,000 | $1.5787 / 1,000 | $1.2314 / 1,000 | $0.94722 / 1,000 | $0.63148 / 1,000 | $0.44203 / 1,000 |
Apify may also charge platform usage for compute, storage, proxies, or data transfer outside this Actor pricing. Check the Actor run and the Apify Pricing tab for the exact cost shown to your account.
Quick start
- Open the actor on Apify.
- Enter a job keyword such as
software engineer. - Enter a location such as
Berlin. - Set
maxItemsto the number of jobs you need. - Run the actor.
- Export results from the dataset as JSON, CSV, Excel, or via API.
Ready-to-run examples
- Build a StepStone employer lead list
- Compare Python developer jobs across German cities
- Scrape StepStone job detail URLs
- Extract healthcare jobs in Germany
- Find jobs posted in the last 24 hours
- Track DevOps engineer demand
- Find marketing manager jobs in Hamburg
- Monitor remote product manager jobs
- Find data analyst jobs in Munich
- Scrape software engineer jobs in Berlin
Input settings
| Input | Type | Description |
|---|---|---|
query | string | Job title, keyword, skill, or role. |
location | string | City, region, or country. |
startUrls | array | StepStone search or job detail URLs. |
maxItems | integer | Maximum number of job listings to save. |
radius | integer | Search radius in kilometers. |
postedWithin | string | Optional posting age filter. |
maxPages | integer | Maximum search pages to inspect. |
detailConcurrency | integer | Concurrent job details (1โ8; default 8). Lower it for a constrained custom proxy. |
runBudgetSeconds | integer | Work-admission budget (120โ840; default 540). Leaves time to save progress and exit before a 600-second run timeout. |
proxyConfiguration | object | German residential Apify Proxy by default. Disable it only if you accept a higher direct-blocking risk. |
Input recipes
Example input
{"query": "software engineer","location": "Berlin","maxItems": 25,"radius": 30,"postedWithin": "any","maxPages": 3,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "DE"}}
Using StepStone URLs
You can also provide StepStone URLs directly.
Use search URLs when you want the actor to discover listings from a StepStone results page.
Use detail URLs when you already have specific StepStone job pages to extract.
{"startUrls": [{ "url": "https://www.stepstone.de/jobs/software-engineer/in-berlin" }],"maxItems": 10}
Output example
{"title": "Senior Software Engineer","company": "Example GmbH","location": "Berlin","jobUrl": "https://www.stepstone.de/stellenangebote/example-job.html","postedAt": "2026-07-01","validThrough": null,"employmentType": "FULL_TIME","salary": null,"description": "Build and operate modern software products...","requirements": "Experience with TypeScript, cloud services, and agile teams...","skills": ["TypeScript", "AWS"],"companyLogo": "https://example.com/logo.png","sourceQuery": "software engineer","sourceLocation": "Berlin","sourceUrl": "https://www.stepstone.de/jobs/software-engineer/in-berlin","scrapedAt": "2026-07-04T08:00:00.000Z"}
Run diagnostics
Every started run writes a RUN_SUMMARY JSON record to the default key-value store. It reports the final status, runtime, pages opened, search-navigation retries, jobs discovered and saved, optimized-detail and fallback counts, search/detail failures, pending jobs, and whether a runtime or maximum charge limit stopped the run. These diagnostics are separate from the paid dataset rows.
The Actor also updates RUN_CHECKPOINT after search pages and detail batches. If a broad workload reaches runBudgetSeconds, already saved rows remain available, the run exits normally with a partial summary, and the checkpoint lists pending job URLs. Keep the Actor's platform timeout at least 60 seconds above runBudgetSeconds; saved tasks use the safe 540/600-second pairing by default.
A search page that loads successfully but contains no matching job links is a valid empty result and finishes successfully with jobsSaved: 0. The Actor still fails when search navigation fails or when discovered detail pages cannot produce any usable job rows.
Tips for better results
- ๐ฏ Use specific job titles for focused recruiting lists.
- ๐ Use broader locations for labor-market research.
- ๐ข Start with
maxItems: 10while testing. - ๐งน Deduplicate downstream by
jobUrl. - ๐ Schedule recurring runs to monitor new hiring activity.
- ๐งช Test several keyword variants for the same role.
Common use cases
Recruiting intelligence
Track which employers are hiring for a specific role in Germany.
Sales prospecting
Find companies with active hiring signals for HR software, staffing, payroll, training, or relocation services.
Labor-market dashboards
Measure demand by keyword, city, company, or posting recency.
Competitive hiring analysis
Monitor how often competitors post for specific departments or skills.
Salary research
Collect salary text when it is included in public listings.
Integrations
You can connect results to:
- Google Sheets for lightweight recruiting research.
- Airtable for lead review workflows.
- HubSpot or Salesforce via Make/Zapier.
- BigQuery, Snowflake, or S3 for analytics.
- Slack alerts for new jobs matching a saved query.
- Internal enrichment pipelines using the Apify API.
API usage
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('fetch_cat/stepstone-jobs-scraper').call({query: 'software engineer',location: 'Berlin',maxItems: 25});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python
from apify_client import ApifyClientclient = ApifyClient('YOUR_APIFY_TOKEN')run = client.actor('fetch_cat/stepstone-jobs-scraper').call(run_input={'query': 'software engineer','location': 'Berlin','maxItems': 25,})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~stepstone-jobs-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"query":"software engineer","location":"Berlin","maxItems":25}'
MCP integration
Use this actor from MCP-compatible assistants through Apify MCP Server.
MCP URL: https://mcp.apify.com/?tools=fetch_cat/stepstone-jobs-scraper
Claude Code example
$claude mcp add apify-stepstone-jobs --url "https://mcp.apify.com/?tools=fetch_cat/stepstone-jobs-scraper"
Claude Desktop example
{"mcpServers": {"apify-stepstone-jobs": {"url": "https://mcp.apify.com/?tools=fetch_cat/stepstone-jobs-scraper"}}}
Example MCP prompts
After connecting the MCP server, try prompts that explicitly ask your assistant to use the StepStone Jobs Scraper MCP tool. Example prompt ideas:
- "Use the StepStone Jobs Scraper MCP tool to find 20 software engineering jobs in Berlin, then return a table with title, company, location, and URL."
- "Use
fetch_cat/stepstone-jobs-scraperto collect StepStone hiring signals for data analyst roles in Munich and summarize which employers are hiring most often." - "Run the StepStone Jobs Scraper MCP tool for Java developer jobs in Germany, group the results by company, and summarize the most common skills."
- "Use the MCP scraper to monitor remote-friendly StepStone software roles and highlight any listings posted in the last week."
Scheduling
Schedule the actor daily or weekly to monitor a saved StepStone query.
Use small result limits for frequent monitoring.
Use larger result limits for monthly market snapshots.
Data quality notes
Some listings do not include salary.
Some listings do not expose structured skills.
Some listings may have broad regional locations rather than exact offices.
The actor keeps optional fields empty when StepStone does not publish that data.
FAQ and troubleshooting
Why did my run return fewer jobs than maxItems?
The query may have fewer public results, or StepStone may not expose every result page for that combination of keyword and location.
Try a broader keyword, larger radius, or broader location.
Why are salary fields empty?
Many StepStone postings do not publish salary information.
When salary is missing from the public job page, the actor leaves salary empty.
What should I do if StepStone blocks a run?
Try a smaller run first.
The default input uses German residential Apify Proxy because direct cloud connections can stall. If you disabled proxy use, restore the default RESIDENTIAL / DE configuration. Proxy traffic can add Apify platform usage charges outside this Actor's pay-per-event price.
Limits
Very broad searches can produce many duplicates across pages.
Use maxItems to cap output volume.
Large searches may finish with RUN_SUMMARY.status: "partial" when the runtime budget is reached. Consume the saved rows and use RUN_CHECKPOINT.pendingJobUrls for a follow-up run rather than increasing the platform timeout without a bound.
For production monitoring, run several specific searches instead of one extremely broad query.
Legality and ethical use
This actor extracts publicly available job listing information.
You are responsible for using the data in compliance with StepStone terms, privacy laws, and applicable regulations.
Do not use scraped data for spam, discrimination, or prohibited automated decisions.
Related Actors
Support
If a run fails or the output looks incomplete, open an issue on Apify and include:
- The run ID or run URL.
- The complete input JSON with secrets removed.
- The expected output and actual output returned by the dataset or run summary.
- A reproducible public URL when the problem concerns a specific StepStone search or job page.
Privacy and data handling
This Actor only requests the permissions needed to run the input you provide. It uses your input (such as URLs, search terms, identifiers, filters, and limits) only to fetch the requested public data from the relevant source site or API for this Actor, then writes results to your Apify dataset/key-value store.
Data may pass through Apify platform services and Apify Proxy during the run, and requests are sent only to the target site or public data provider required for this Actor's results. FetchCat does not send your inputs or outputs to advertising networks, data brokers, or model-training services, and does not retain run data outside Apify storage after the run except when you explicitly share run details for transient support debugging.
You are responsible for using this Actor lawfully, respecting the target site's terms, and avoiding unnecessary personal or sensitive data in inputs. Review the output before storing, sharing, or combining it with other data.