StepStone.de Scraper — Germany's Largest Job Board
Pricing
from $0.64 / 1,000 results
StepStone.de Scraper — Germany's Largest Job Board
Scrape Stepstone.de, Germany's largest job board. Returns job title, company, company logo, location, contract type, work schedule, labels, remote flags and full job descriptions. Keyword and location search, radius, date and contract filters, deduplication and start URLs.
Pricing
from $0.64 / 1,000 results
Rating
0.0
(0)
Developer
Unfenced Group
Maintained by CommunityActor stats
4
Bookmarked
75
Total users
19
Monthly active users
4 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, company logo, location, contract type, work schedule, and full job description (HTML, plain text, and Markdown). Salary is included where the employer publishes it.
🏷️ Labels & remote flags
Returns Stepstone's own structured metadata per job: job badges (Quick Apply, No Cover Letter), remote/hybrid flag, and a cross-platform job UUID for matching listings across boards.
📅 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 | "Software Engineer" | Job title, keyword, or skill to search for. Examples: "Software Engineer", "Data Analyst", "Ingenieur". Leave empty to browse all listings. Use searchQueries below to run multiple searches in one run. |
searchQueries | array | (empty) | Run multiple keyword searches in a single actor run. Each item can be a plain string ("Software Engineer") or an object {"query": "Ingenieur", "location": "München"}. Results from all queries are combined. Takes precedence over Search keywords above when provided. |
location | string | "Berlin" | City, region, or Bundesland to filter by. Examples: "Berlin", "München", "Bayern". Leave empty to search all of Germany. |
radius | integer | 40 | Search radius in kilometres around the specified location. Set to 0 for exact location match. |
sortBy | string | "relevance" | Sort results by relevance (default Stepstone ranking) or date (newest listings first). |
contractType | string | "FULL_TIME" | Filter by employment type. Leave empty for all types. |
workFromHome | string | (empty) | Filter by remote work availability. Leave empty for all listings. |
daysOld | integer | (empty) | Only return listings published within the last N days. Leave blank for all listings. Use 1 for today, 7 for the past week. |
maxResults | integer | 100 | Maximum number of job listings to return. Set to 0 for no limit. Default is 100 — increase for production runs. |
fetchDetails | boolean | false | ON: fetches full job description, salary, company info, and all details. OFF: returns basic listing info only (faster, lower cost). |
skipReposts | boolean | false | Skip listings already seen in previous runs. Uses a 90-day deduplication window stored in Key-Value Store. Ideal for daily incremental feeds — only new listings are returned. |
startUrls | array | (empty) | Paste specific Stepstone.de search result URLs or job detail page URLs here. When provided, the search query and location filters above are ignored. Useful for pre-filtered searches or bookmarked pages. |
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 |
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, when the employer publishes one (often null) |
salaryMin | number | Minimum salary, when published (often null) |
salaryMax | number | Maximum salary, when published (often null) |
salaryType | string | Salary period (HOUR, MONTH, YEAR), when published |
salaryCurrency | string | EUR when a 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 |
labels | array | Job badges e.g. [{"label":"Anschreiben nicht erforderlich","type":"NO_COVER_LETTER"}] |
workFromHome | string | Remote work flag: "0"=no, "2"=yes/hybrid |
postCode | string | Postal code of job location (published on a minority of listings) |
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 |
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) |
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": null,"salaryMin": null,"salaryMax": null,"publishDate": "2026-06-10","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
$0.8 per 1,000 results — you only pay for successfully retrieved listings. Failed retries and filtered reposts are never charged.
| Results | Cost |
|---|---|
| 100 | ~$0.08 |
| 1,000 | ~$0.8 |
| 10,000 | ~$8 |
| 100,000 | ~$80 |
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
- Salary is published by very few employers on Stepstone.de, so
salary,salaryMinandsalaryMaxarenullon most listings. When an employer publishes a range, it is captured. postCodeis provided on a minority of listings and isnullotherwise.- Job descriptions require
fetchDetails: true, which fetches each listing's detail page.
Related scrapers
Other scrapers in our Jobs — Germany, Austria & Switzerland collection:
Run it on a schedule
This actor is built for repeat use. Set it to run daily, weekly, or hourly, and the data keeps flowing without you touching it.
- Schedule runs — open the actor, go to Schedules, and pick a cadence. Each run only charges you for the results it returns.
- Connect it to your stack — push results straight to Google Sheets, Slack, a webhook, or your database using Apify Integrations. No glue code needed.
- Pull results via API — every run writes a clean dataset you can fetch with one API call, ready for whatever you build on top of it.
Set it once and it runs on its own.
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. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.
Get in touch: www.unfencedgroup.nl