Stepstone Scraper | All-In-One | $4/ 1K
Pricing
$3.99 / 1,000 results
Stepstone Scraper | All-In-One | $4/ 1K
Extract job postings and hiring company details at scale from Stepstone .de, .at, .be, & .nl. Use direct URLs or build searches with filters for location, salary, & more. Get clean, structured job data Ideal for market research and job aggregation.
Pricing
$3.99 / 1,000 results
Rating
3.4
(4)
Developer

Fatih Tahta
Actor stats
9
Bookmarked
151
Total users
35
Monthly active users
14 hours
Issues response
11 days ago
Last modified
Categories
Share
StepStone Scraper
Slug: fatihtahta/stepstone-scraper-fast-reliable-4-1k
Overview
StepStone Scraper collects structured job listing data from StepStone, including core fields such as listing ID, URL, title, company details, location, posting metadata, and compensation-related fields when available. It supports both direct URL-based collection and keyword-based discovery with practical filters to narrow results by market and hiring criteria. The actor is designed for StepStone country domains including stepstone.de, stepstone.be, stepstone.at, and stepstone.nl, making it useful for cross-market hiring analysis and regional trend tracking. By automating collection into a consistent JSON output, it reduces manual research time and improves repeatability for recurring workflows. Teams can run it on demand or on a schedule to maintain fresh, analysis-ready datasets.
Why Use This Actor
- Market research & analytics: Analyze hiring trends, role volumes, location patterns, and posting freshness across countries or time windows.
- Product & content teams: Validate content opportunities and career-topic priorities using real job demand signals (titles, skills context, and employer activity).
- Developers & data engineering pipelines: Feed normalized listing records into BI dashboards, warehousing jobs, and enrichment workflows with minimal transformation.
- Lead generation & enrichment teams: Build targeted prospect lists by role, location, and company attributes to support outreach and account research.
- Monitoring & competitive tracking: Track shifts in hiring activity for specific employers, keywords, or markets through recurring scheduled runs.
Input Parameters
Provide any combination of URLs, queries, and filters to match your collection goals.
| Parameter | Type | Description | Default |
|---|---|---|---|
startUrls | array[string] | StepStone search-result or job-detail URLs to collect directly. Use multiple URLs to combine known pages in one run. | – |
domain | string | Country domain used for keyword-generated searches. Allowed values: stepstone.de, stepstone.at, stepstone.be, stepstone.nl. | stepstone.de |
queries | array[string] | Search keywords such as job titles, skills, departments, industries, or employer names. | – |
location | string | Optional location text (city/region/area) for keyword searches, such as Berlin, Vienna, Brussels, or Amsterdam. | – |
distanceFromSource | string | Search radius around the source location for keyword searches. Allowed values: 5, 10, 20, 30, 40, 50, 75, 100 (km). | 30 |
workRemote | array[string] | Optional remote-work filter for keyword searches. Allowed values: PARTIALLY_REMOTE_HYBRID, FULLY_REMOTE_ONLY. | [] |
ApplicationType | array[string] | Optional application method filter for keyword searches. Allowed values: EXTERNAL (apply on company website), INTERNAL (quick application). | [] |
listingLanguage | array[string] | Optional language filter for keyword searches. Allowed values: GERMAN, ENGLISH. | [] |
WorkingHours | array[string] | Optional working-hours filter for keyword searches. Allowed values: FULL_TIME, PART_TIME. | [] |
employmentType | array[string] | Optional employment-type filter for keyword searches. Allowed values: PERMANENT_POSITION, APPRENTICESHIP_STUDIES, FIXED_TERM_CONTRACT, ENTRY_LEVEL_TRAINEE, TEMPORARY_AGENCY_WORK, STUDENT_JOB_WORKING_STUDENT, INTERNSHIP, FREELANCE_PROJECT_BASED, BACHELORS_MASTERS_DIPLOMA_THESIS, PHD_POSTDOCTORAL_QUALIFICATION. | [] |
experience | array[string] | Optional experience-level filter for keyword searches. Allowed values: EXPERIENCE_REQUIRED, NO_EXPERIENCE_NEEDED, MANAGEMENT_EXPERIENCE_REQUIRED. | [] |
publishedDate | string | Optional recency window for keyword searches. Allowed values: "" (no filter), 24Hours, 7Days. | "" |
limit | integer | Maximum listings to store per query (minimum: 1). | 50000 |
Example Input
{"domain": "stepstone.de","queries": ["data analyst", "business intelligence"],"location": "Berlin","distanceFromSource": "30","workRemote": ["PARTIALLY_REMOTE_HYBRID"],"listingLanguage": ["GERMAN"],"publishedDate": "7Days","limit": 250}
Output
6.1 Output destination
The actor writes results to an Apify dataset as JSON records. And the dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs without post-processing.
6.2 Record envelope (all items)
Every record includes these stable identifiers:
- type (string, required)
- id (number, required)
- source (object, required)
Recommended idempotency key: type + ":" + id.
Use this key for deduplication and upserts when the same listing appears across multiple inputs or repeated runs.
6.3 Examples
Example: job listing (type = "job_listing")
{"type": "job_listing","id": 13686544,"source": {"url": "https://www.stepstone.de/stellenangebote--Facharzt-fuer-Innere-Medizin-m-w-d-MVZ-mit-Telemedizin-Voerde-Niederrhein-meinestadt-de--13686544-inline.html?rltr=1_1_25_seorl_m_0_0_0_0_0_0","source_url": "https://www.stepstone.de/jobs/facharzt-%c3%a4rztin-innere-medizin?action=facet_selected%3Bage%3Bage_1&ag=age_1&q=Facharzt%2F-%C3%A4rztin+-+Innere+Medizin","seed_value": "https://www.stepstone.de/jobs/facharzt-%c3%a4rztin-innere-medizin?action=facet_selected%3Bage%3Bage_1&ag=age_1&q=Facharzt%2F-%C3%A4rztin+-+Innere+Medizin"},"title": "Facharzt für Innere Medizin (m/w/d) – MVZ mit Telemedizin","seed_type": "url","scraped_at": "2026-02-24T09:12:34.567890+00:00","company_details": {"company_id": 218724,"company_name": "meinestadt.de","company_profile_url": "https://www.stepstone.de/cmp/de/meinestadtde-218724/jobs","company_logo_url": "https://www.stepstone.de/upload_DE/logo/D/logoPresented-by-meinestadt-de-218724DE.gif","is_anonymous_company": false},"posting_details": {"published_at": "2026-02-23T11:41:15+01:00","section": "main","has_future_posting": false},"workplace_details": {"job_location": "Voerde/Niederrhein","remote_work_type": "2","work_arrangement": "Hybrid"},"compensation_details": {"salary_text": "","salary_range": {"min": null,"max": null,"currency": null,"period": null,"salaryAvailable": true,"salaryType": null}},"listing_metadata": {"labels": [],"top_labels": [],"skills": [],"position_metadata": {"positionOnPage": 1,"positionAbsolute": 1},"harmonized_id": "C4A6AF81-5C91-44B7-A776-3A45F4A6D7F0","is_highlighted": false,"is_sponsored": false,"is_top_job": false,"is_partner_traffic": false},"partner_details": {"partnership": {"isPartnershipJob": false,"showPartnershipLabel": false,"isBackfilled": false,"sourceSiteFriendlyName": "","isCrossPosted": false}},"content_details": {"job_snippet_html": "Position: <strong>Facharzt</strong> für <strong>Innere</strong> <strong>Medizin</strong> (m/w/d) - MVZ * Stellendetails: Als <strong>Facharzt</strong> für <strong>Innere</strong> <strong>Medizin</strong> (m/w/d) übernehmen Sie die umfassende internistische-hausärztliche Betreuung Ihrer Patienten - sowohl in der Präsenzsprechstunde als auch digital per <strong>Telemedizin.</strong> * <strong>Facharzttitel</strong> in <strong>Innere</strong> <strong>Medizin</strong> * Fachrichtung: <strong>Innere</strong> <strong>Medizin</strong> - hausärztliche Versorgung - In diesem modernen MVZ am Rande des westlichen Ruhrgebiets verbinden Sie die internistisch-hausärztliche Versorgung mit innovativer <strong>Telemedizin.</strong> * Interesse an modernen Versorgungsformen wie <strong>Telemedizin</strong> * Anteilig <strong>Telemedizin</strong> mit Homeoffice-Möglichkeit","job_snippet_cleaned": "Position: Facharzt für Innere Medizin (m/w/d) - MVZ mit Telemedizin"}}
Field reference
Job listing fields (type = "job_listing")
- type (string, required): Record type identifier.
- id (number, required): Stable StepStone listing identifier.
- source.url (string, optional): Listing URL.
- title (string, optional): Listing title.
- source.source_url (string, optional): Source URL that led to discovery.
- seed_type (string, optional): Input origin category.
- source.seed_value (string, optional): Original input value used.
- scraped_at (string, required): UTC timestamp indicating when the record was produced.
- company_details.company_id (number, optional): Company identifier.
- company_details.company_name (string, optional): Company display name.
- company_details.company_profile_url (string, optional): Company profile URL.
- company_details.company_logo_url (string, optional): Company logo URL.
- company_details.is_anonymous_company (boolean, optional): Whether company is anonymized.
- posting_details.published_at (string, optional): Listing publish timestamp.
- posting_details.section (string, optional): Listing section label.
- posting_details.has_future_posting (boolean, optional): Indicates future-dated posting state.
- workplace_details.job_location (string, optional): Job location text.
- workplace_details.remote_work_type (string, optional): Remote-work indicator (
"0"on-site,"1"fully remote,"2"hybrid). - workplace_details.work_arrangement (string, optional): Human-readable remote arrangement derived from
remote_work_type("On-site","Fully Remote","Hybrid"). - compensation_details.salary_text (string, optional): Salary text as displayed.
- compensation_details.salary_range.min (number/null, optional): Minimum salary value.
- compensation_details.salary_range.max (number/null, optional): Maximum salary value.
- compensation_details.salary_range.currency (string/null, optional): Salary currency.
- compensation_details.salary_range.period (string/null, optional): Salary period.
- compensation_details.salary_range.salaryAvailable (boolean, optional): Salary availability flag.
- compensation_details.salary_range.salaryType (string/null, optional): Salary type label.
- listing_metadata.labels (array[object], optional): Listing labels when provided.
- listing_metadata.labels[].label (string, optional): Label text.
- listing_metadata.labels[].type (string, optional): Label category code.
- listing_metadata.top_labels (array[string], optional): Featured listing labels.
- listing_metadata.skills (array[string], optional): Listed skills.
- listing_metadata.position_metadata.positionOnPage (number, optional): Position index on page.
- listing_metadata.position_metadata.positionAbsolute (number, optional): Absolute position across results.
- listing_metadata.harmonized_id (string, optional): Harmonized listing identifier.
- listing_metadata.is_highlighted (boolean, optional): Highlight flag.
- listing_metadata.is_sponsored (boolean, optional): Sponsored flag.
- listing_metadata.is_top_job (boolean, optional): Top job flag.
- listing_metadata.is_partner_traffic (boolean, optional): Partner-traffic flag.
- partner_details.partnership.isPartnershipJob (boolean, optional): Partnership job flag.
- partner_details.partnership.showPartnershipLabel (boolean, optional): Partnership label visibility.
- partner_details.partnership.isBackfilled (boolean, optional): Backfilled listing flag.
- partner_details.partnership.sourceSiteFriendlyName (string, optional): Partner source label.
- partner_details.partnership.isCrossPosted (boolean, optional): Cross-posted flag.
- content_details.job_snippet_html (string, optional): Listing snippet in HTML.
- content_details.job_snippet_cleaned (string, optional): Plain-text snippet cleaned from HTML formatting.
Data guarantees & handling
- Best-effort extraction: fields may vary by region/session/availability/UI experiments.
- Optional fields: null-check in downstream code.
- Deduplication: recommend
type + ":" + id.
How to Run on Apify
- Open the actor in Apify Console.
- Configure your search parameters (for example keywords, domain, location, and optional filters).
- Set the maximum number of outputs to collect.
- Click Start and wait for the run to finish.
- Download results in JSON, CSV, Excel, or other supported formats.
Scheduling & Automation
Recurring Hiring Intelligence
StepStone listings change fast — new roles appear daily, salary fields update, and companies rotate campaigns. For serious market tracking, one-off runs are not enough.
This actor is designed for recurring, structured hiring monitoring across:
- Specific employers (e.g., monitor hiring spikes)
- Cities or regions (Berlin vs Vienna vs Amsterdam)
- Skill clusters (e.g., Data Analyst + Python)
- Remote/hybrid shifts
- Language segmentation (German vs English postings)
- Recency windows (24h / 7 days)
Typical automation setups:
- Daily runs (24Hours filter) → Capture newly published listings only
- Weekly runs (7Days filter) → Trend tracking & reporting snapshots
- Employer monitoring → Detect volume changes for specific companies
- Remote-work tracking → Measure hybrid vs fully remote adoption
How to Schedule
- Open the actor in Apify Console
- Configure a stable input (queries, domain, filters)
- Navigate to Schedules
- Create a recurring schedule (daily / weekly / cron)
- Keep
publishedDateset to24Hoursor7Daysfor delta-style monitoring
Production Automation Patterns
This actor is commonly used in structured pipelines:
-
Webhook → ETL → Data Warehouse Push new listings into Snowflake, BigQuery, Postgres, or S3.
-
Webhook → Enrichment → CRM Enrich company records or trigger sales research flows.
-
Scheduled Run → BI Dashboard Refresh Power hiring trend dashboards segmented by country or city.
-
Delta Monitoring Actor already deduplicates all of the data. But if you are doing it across a database, Use
idas an idempotency key to safely upsert listings without duplication.
Because listing IDs are stable, recurring runs are safe for incremental ingestion.
Performance
This actor is optimized for structured listing extraction at scale across StepStone country domains.
Typical runtime expectations:
- < 1,000 listings: ~2–3 minutes
- 1,000–5,000 listings: ~5–15 minutes
- 5,000+ listings: ~15–30 minutes
Performance depends primarily on:
- Number of queries
- Country domain used
- Result pagination depth
- Whether detailed pages are fetched via search discovery
For large recurring jobs:
- Segment queries by country for predictable throughput
- Use 24 hour trailing filter for daily delta monitoring
Compliance & Ethics
Intended Use
This actor collects publicly available job listing metadata from StepStone country domains:
- stepstone.de
- stepstone.at
- stepstone.be
- stepstone.nl
It is designed for:
- Labor market research
- Hiring trend analysis
- Competitive employer monitoring
- Salary transparency analysis
- Structured job data enrichment
Best Practices
- Use collected data in accordance with applicable laws, regulations, and the target site’s terms.
- Respect individual privacy and personal information.
- Use data responsibly and avoid disruptive or excessive collection.
- Do not use this actor for spamming, harassment, or other harmful purposes.
- Follow relevant data protection requirements where applicable (e.g., GDPR, CCPA).
Support
For help, use the actor page Issues section in Apify Console. When reporting a problem, include the input used (redacted), the run ID, a short expected-vs-actual behavior summary, and an optional small output sample to speed up troubleshooting.