Stepstone.de Scraper
Pricing
from $0.80 / 1,000 results
Stepstone.de Scraper
Scrape Stepstone.de, Germany's largest job board with 200,000+ listings. Returns job titles, companies, locations, salary ranges, and full descriptions. Supports keyword/location search, fetchDetails, daily deduplication, and start URLs. $0.80 per 1,000 results — the lowest price on Apify.
Pricing
from $0.80 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
4
Bookmarked
53
Total users
9
Monthly active users
3 days ago
Last modified
Categories
Share
Stepstone.de Scraper — Germany Job Listings

Extract structured job listings from stepstone.de — Germany's largest job board with 200,000+ listings. No API key required.
Why this scraper?
🔍 Keyword + location search
Search by job title, skill, or keyword. Filter by city, region, or Bundesland with configurable radius.
📋 Rich structured output
Every listing includes title, company, location, salary range, contract type, work schedule, and full job description (HTML, plain text, and Markdown).
🏷️ Skills, labels & remote flags
Returns Stepstone's own structured metadata per job: required skills list, job badges (Quick Apply, No Cover Letter), remote/hybrid flag, and cross-platform job UUID.
📅 Age filtering & deduplication
Filter by days since posting. Skip reposts with cross-run deduplication (90-day window) — ideal for daily incremental feeds.
🔗 startUrls support
Paste any Stepstone.de search results page or direct job URL to scrape specific results without re-entering filters.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | — | Job title, keyword, or skill. Examples: "Software Engineer", "Data Analyst", "Ingenieur". Leave empty to browse all listings. |
location | string | — | City, region, or Bundesland. Examples: "Berlin", "München", "Bayern". Leave empty for all of Germany. |
radius | integer | 40 | Search radius in kilometres around the specified location. |
daysOld | integer | — | Only return listings published within the last N days. Leave blank for all. |
maxResults | integer | 100 | Maximum number of job listings to return. |
fetchDetails | boolean | false | Fetch full job description and salary from each detail page (slower, higher cost). |
skipReposts | boolean | false | Skip listings already seen in previous runs (90-day deduplication window). |
startUrls | array | — | Paste specific Stepstone.de search or job detail URLs here. Overrides search filters above. |
Output schema
Always present
| Field | Type | Description |
|---|---|---|
url | string | Full URL of the job listing |
jobId | string | Stepstone numeric job ID extracted from URL |
source | string | Always stepstone.de |
language | string | Always de |
title | string | Job title |
company | string | Employer name |
companyUrl | string | Stepstone company profile URL |
companyId | number | Stepstone internal company ID |
companyLogoUrl | string | Company logo image URL (when available) |
city | string | Job location city |
location | string | Location display string |
country | string | Always DE |
contractType | string | Employment type (FULL_TIME, PART_TIME, CONTRACT, INTERNSHIP) |
workSchedule | string | Work schedule label |
salary | string | Raw salary string as shown on listing |
salaryMin | number | Minimum salary (parsed from listing) |
salaryMax | number | Maximum salary (parsed from listing) |
salaryType | string | Salary period (HOUR, MONTH, YEAR) |
salaryCurrency | string | Always EUR when salary is present |
publishDate | string | ISO date the listing was posted (YYYY-MM-DD) |
publishDateISO | string | Full ISO 8601 datetime |
daysOld | number | Days since the listing was posted |
skills | array | Required skills as tagged by Stepstone (e.g. ["Python", "AWS"]) |
labels | array | Job badges e.g. [{"label":"Anschreiben nicht erforderlich","type":"NO_COVER_LETTER"}] |
topLabels | array | Highlighted label badges shown prominently on the card |
workFromHome | string | Remote work flag: "0"=no, "2"=yes/hybrid |
postCode | string | Postal code of job location (when provided) |
harmonisedId | string | Cross-platform job UUID (e.g. "cd30f8ea-4c6e-4106-9757-ddc74e8e7d1a") |
isSponsored | boolean | Whether the listing is a sponsored/paid placement |
isTopJob | boolean | Whether the listing is marked as a Top Job |
isHighlighted | boolean | Whether the listing is visually highlighted |
isPartnershipJob | boolean | Whether the listing is from a partner site |
isBackfilled | boolean | Whether the listing is backfilled from another source |
isCrossPosted | boolean | Whether the listing is cross-posted across platforms |
unifiedSalaryMin | number | Stepstone-normalised salary minimum |
unifiedSalaryMax | number | Stepstone-normalised salary maximum |
unifiedSalaryCurrency | string | Currency from Stepstone's unified salary model |
unifiedSalaryPeriod | string | Period from Stepstone's unified salary model |
textSnippet | string | Short HTML snippet shown in search results |
isRepost | boolean | Whether this listing was seen in a previous run |
contentHash | string | MD5 hash for downstream deduplication |
scrapedAt | string | ISO 8601 timestamp of when the data was scraped |
With fetchDetails: true (additional fields)
| Field | Type | Description |
|---|---|---|
description | string | Full job description as HTML |
descriptionText | string | Full description as plain text |
descriptionMarkdown | string | Full description as Markdown |
expiryDate | string | Listing expiry date (ISO date) |
applyUrl | string | Always null — Stepstone uses a login modal for applications |
summary | string | First 200 characters of the description |
Example record
{"url": "https://www.stepstone.de/stellenangebote--Software-Engineer-Berlin-Acme-GmbH--12345-inline.html","jobId": "12345","source": "stepstone.de","language": "de","title": "Senior Software Engineer (m/w/d)","company": "Acme GmbH","companyUrl": "https://www.stepstone.de/cmp/de/acme-gmbh-12345/jobs","companyId": 12345,"city": "Berlin","country": "DE","contractType": "FULL_TIME","salary": "80.000 – 100.000 EUR (YEAR)","salaryMin": 80000,"salaryMax": 100000,"salaryType": "YEAR","publishDate": "2026-06-10","skills": ["Python", "Kubernetes", "AWS"],"labels": [{"label": "Anschreiben nicht erforderlich", "type": "NO_COVER_LETTER"}],"workFromHome": "2","harmonisedId": "cd30f8ea-4c6e-4106-9757-ddc74e8e7d1a","isSponsored": false,"isTopJob": false,"scrapedAt": "2026-06-14T12:00:00.000Z"}
Examples
Software engineers in Berlin
{"searchQuery": "Software Engineer","location": "Berlin","maxResults": 100}
Safety roles with skills filter (nationwide)
{"searchQuery": "Functional Safety Manager","maxResults": 50,"fetchDetails": true}
Recent roles in Munich with full descriptions
{"searchQuery": "Produktmanager","location": "München","daysOld": 14,"maxResults": 100,"fetchDetails": true}
Daily incremental feed — new listings only
{"searchQuery": "Softwareentwickler","location": "Hamburg","daysOld": 1,"skipReposts": true,"maxResults": 1000}
💰 Pricing
$1.50 per 1,000 results — you only pay for successfully retrieved listings. Failed retries and filtered reposts are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.15 |
| 1,000 | ~$1.50 |
| 10,000 | ~$15.00 |
| 100,000 | ~$150.00 |
Flat-rate alternatives typically charge $29–$49/month regardless of usage.
Use the Max results cap in the input to control your spend exactly.
Performance
- ~25 jobs per list page, no browser required
fetchDetails: false: ~50–100 jobs/minutefetchDetails: true: ~5–10 jobs/minute (one extra request per job)- Memory: 512 MB
Technical details
- Source: stepstone.de — Germany's largest job board
- Memory: 512 MB
- Repost storage: KeyValueStore
stepstone-de-job-dedup, 90-day TTL - Retry: Automatic retry on network errors, exponential backoff, 3 attempts per request
Known limitations
applyUrlis alwaysnull— Stepstone uses a login modal for applications- Salary data is not published by all employers —
nullis normal skillsis an empty array for many listings — Stepstone does not require employers to tag skills
Need a custom scraper?
Unfenced Group builds Apify actors for any website — for free.
If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves.
Get in touch: www.unfencedgroup.nl