# StepStone.de Job Scraper - Germany Salary & Company Data (`clearpath/stepstone-de-job-scraper`) Actor

Scrape StepStone job listings from Germany, Austria, Belgium and the Netherlands. Every job returns the salary range StepStone keeps behind its login, structured benefits, skills from the advert, and the hiring company's sector, size and open roles.

- **URL**: https://apify.com/clearpath/stepstone-de-job-scraper.md
- **Developed by:** [ClearPath](https://apify.com/clearpath) (community)
- **Categories:** Jobs, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.99 / 1,000 job scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## StepStone.de Job Scraper | Germany Salary Ranges, Benefits & Company Data (2026)

[![Salary estimates. Skills. Benefits. Company size. Industry. Open roles.](https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/stepstone-de-job-scraper-readme-hero-v1.png)](https://console.apify.com/actors/cB8bzys6LuwcwX70q/input)

From <strong>Clearpath</strong>, creators of <a href="https://apify.com/clearpath/welcome-to-the-jungle-jobs-api">Welcome to the Jungle Jobs</a> and <a href="https://apify.com/clearpath/wellfound-api-ppe">Wellfound Jobs</a>. Job-market data with the pay, role and employer context needed for recruitment and research.

### Why choose this actor?

<strong>Compare pay, skills and benefits.</strong> Get salary estimates as minimum and maximum values, skills matched from the advert, and benefits as separate entries. German listings include StepStone’s salary estimate where available; other listings return no estimate.

<strong>Know who is hiring.</strong> Company industry, employee band and open-role count help you segment employers and assess hiring activity.

<strong>Detailed jobs from four StepStone sites.</strong> Search Germany, Austria, Belgium and the Netherlands by keyword and location, or paste job and search links. Each result includes the full job description and its sections, with no separate detail upgrade.

<a href="https://console.apify.com/actors/cB8bzys6LuwcwX70q/input"><img src="https://api.apify.com/v2/key-value-stores/pJ7iaZsTFhR3k9tjV/records/stepstone-de-job-scraper-readme-cta-v1.svg" width="228" height="48" alt="Explore your job market"/></a>

### Quick start

Try ten software-engineering roles around Berlin. Change the keyword and location to match your market.

```json
{
  "keyword": "software engineer",
  "location": "Berlin",
  "country": "de",
  "radius": 30,
  "maxItems": 10
}
```

<a href="https://console.apify.com/actors/cB8bzys6LuwcwX70q/input">Open actor input</a> to select a country, location and filters. Export JSON, CSV or Excel; JSON preserves salary objects, benefits and company details.

<table><tr><td colspan="3" style="background:#0C2577;color:#FFFFFF;padding:10px 14px;font-size:13px;font-weight:700">Clearpath · Job Market Data</td></tr><tr><td style="background:#DCE5FF;padding:8px 10px;border:1px solid #C4D3EF;vertical-align:top"><span style="white-space:nowrap"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/stepstone-de-job-scraper-icon.png" width="20" height="20" alt="" style="display:inline-block;vertical-align:middle;margin:0"/>&nbsp;<a href="https://console.apify.com/actors/cB8bzys6LuwcwX70q/input" style="color:#0C2577;text-decoration:none;font-weight:700;font-size:13px">StepStone</a></span><br><span style="color:#31456C;font-size:12px;white-space:nowrap">You are here</span></td><td style="background:#EDF2FF;padding:8px 10px;border:1px solid #C4D3EF;vertical-align:top"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-MdJIadsWKRaguareT-XPALnVdNgE-welcome-to-the-jungle-jobs-scraper-logo.png" width="20" height="20" alt="" style="display:inline-block;vertical-align:middle;margin:0"/>&nbsp;<a href="https://apify.com/clearpath/welcome-to-the-jungle-jobs-api" style="color:#0C2577;text-decoration:none;font-weight:700;font-size:13px">Welcome to the Jungle</a></span><br><span style="color:#31456C;font-size:12px;white-space:nowrap">Jobs & companies</span></td><td style="background:#EDF2FF;padding:8px 10px;border:1px solid #C4D3EF;vertical-align:top"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-sqkHGNG0toRTR3ORV-zgctRChWeu-wellfound-jobs-scraper-logo.png" width="20" height="20" alt="" style="display:inline-block;vertical-align:middle;margin:0"/>&nbsp;<a href="https://apify.com/clearpath/wellfound-api-ppe" style="color:#0C2577;text-decoration:none;font-weight:700;font-size:13px">Wellfound</a></span><br><span style="color:#31456C;font-size:12px;white-space:nowrap">Salary & equity</span></td></tr></table>

#### Copy to your AI assistant

```
clearpath/stepstone-de-job-scraper on Apify. Scrapes StepStone job listings (stepstone.de/.at/.be/.nl) and returns one fully detailed row per job: salary range object, benefits list, skills, badges, sectioned description, home-office flag, street address and postcode, and hiring-company sector/employee-band/open-jobs/address/website/employee-rating/founded-year/self-description/photos. There are no modes and no enrichment switch, every row is full detail at one price. Search with keyword + location (+ country de|at|be|nl, radius up to 100 km needs a location, workType vollzeit|teilzeit, publishedSince 24h|7d, workFromHome only|partial), OR pass startUrls with StepStone result/job page URLs, which REPLACE the keyword search and its filters entirely and split maxItems evenly between result pages. maxItems is the run-wide total, default 100, 0 means keep going until results run out but never past 10,000 in one run. exactMatchesOnly (default false) drops the related-title and nearby-town results StepStone pads a list with; every row carries matchType exact|related|nearby|suggested either way, and skipped rows are never charged. Constraints to respect before promising fields: salary estimates exist only for German listings and not for every advert (salary is null otherwise), skills are matched from the advert's own wording, and contactEmails/contactPhones appear only where the employer printed them, so expect empty lists on many rows. Expired listings are skipped, never billed. Pricing: pay per event, $2.99 per 1,000 jobs, plus the standard Apify Actor start fee per run. Full spec (input schema, dataset fields, README): GET https://api.apify.com/v2/actors/clearpath~stepstone-de-job-scraper/builds/default with Authorization: Bearer <APIFY_TOKEN>. Token: https://console.apify.com/account/integrations
```

### What you get that other StepStone scrapers skip

- **The salary range, as numbers.** StepStone shows salary behind a "Gehalt anzeigen" link and a login. This actor returns it as a structured object with `min`, `max`, `currency` and `period`, ready to sort and average. Salary estimates are a German feature, so they come from stepstone.de listings.
- **Benefits as a list, not a paragraph.** Company car, Weihnachtsgeld, Homeoffice, pension, extra leave and the rest, each as its own entry.
- **The hiring company, in depth.** Sector, employee band, how many other roles that company currently has open, its own website, its employee rating and review count, the year it was founded, its self-description, its logo, photos and StepStone company page.
- **The address of the job, not just the city.** Street and postcode where the advert states them, plus coordinates.
- **Skills mentioned in the advert.** Matched against StepStone's own skill vocabulary plus the tools, standards, licences and languages German job ads name. Deterministic matching of what the advert says, so no AI cost and nothing invented.
- **Application contacts the employer printed.** Where the advert names a recruiter address or phone number, you get it. Nothing is looked up anywhere else.
- **You can tell a real match from a filler one.** StepStone pads a result list with jobs that carry a different title or sit outside the town you asked for. Every row says which it is in `matchType`, and `exactMatchesOnly` drops the padding before it is ever charged.
- **The description, already split.** Intro, tasks, profile and benefits sections separately, plus the full HTML.
- **Built for volume.** A measured run collected **1,000 jobs in 1 minute 32 seconds**, every one unique, with no failed pages. Set `maxItems` to `0` and it keeps going until the search runs out, up to 10,000 jobs in one run.

### Search examples

#### Search by keyword and location

```json
{
    "keyword": "software engineer",
    "location": "Berlin",
    "country": "de",
    "radius": 30,
    "maxItems": 100
}
```

#### Only part-time nursing jobs posted this week

```json
{
    "keyword": "Pflegefachkraft",
    "location": "Köln",
    "workType": "teilzeit",
    "publishedSince": "7d",
    "maxItems": 200
}
```

#### Fully remote roles, no keyword

```json
{
    "location": "Deutschland",
    "workFromHome": "only",
    "maxItems": 500
}
```

#### Your own StepStone searches

Build the search on StepStone with whatever filters you like, then paste the address. The maximum is split evenly across the pages you add.

```json
{
    "startUrls": [
        { "url": "https://www.stepstone.de/jobs/controller/in-hamburg" },
        { "url": "https://www.stepstone.at/jobs/software-engineer/in-wien" },
        { "url": "https://www.stepstone.nl/vacatures/developer/in-amsterdam" }
    ],
    "maxItems": 300
}
```

### Sample output

```json
{
  "id": "13949404",
  "title": "Software Engineer Enterprise Search (all genders)",
  "url": "https://www.stepstone.de/stellenangebote--Software-Engineer-Enterprise-Search--13949404-inline.html",
  "country": "de",
  "location": "Berlin, Hamburg, München, Köln, Frankfurt, Stuttgart, Leipzig, Dortmund",
  "streetAddress": "Adessoplatz 1",
  "postalCode": "44269",
  "workType": "Homeoffice möglich, Vollzeit",
  "isRemote": true,
  "matchType": "exact",
  "employmentType": "FULL_TIME",
  "industry": "IT, IT-Softwareentwicklung",
  "postedAt": "2026-09-10T00:03:32.880Z",
  "expiresAt": "2026-09-24T23:53:22.617Z",
  "isDirectApply": true,
  "salary": {
    "min": 47000,
    "max": 79000,
    "currency": "EUR",
    "period": "Jahr",
    "type": "brutto",
    "isEstimate": true
  },
  "skills": ["AWS", "Azure", "Englisch"],
  "benefits": ["Firmenwagen", "Coaching-Angebote", "Mitarbeiter-Laptop", "Betriebsarzt im Unternehmen"],
  "badges": ["Anschreiben nicht erforderlich"],
  "contactEmails": [],
  "contactPhones": [],
  "company": {
    "id": 7420,
    "name": "adesso SE",
    "sectors": ["IT & Tech", "Wirtschaftsprüfung und Recht"],
    "employees": "10000+",
    "foundedYear": 1997,
    "openJobs": 226,
    "address": "Adessoplatz 1, Dortmund",
    "website": "https://www.adesso.de",
    "rating": { "score": 3.93027, "reviews": 33 },
    "logoUrl": "https://www.stepstone.de/upload_DE/logo/7/logoadesso-SE-7420DE-2605220913.gif",
    "jobsUrl": "https://www.stepstone.de/cmp/de/adesso-SE-7420/jobs.html",
    "images": [{ "url": "https://www.stepstone.de/upload_de/offers/htmlfiles/x7/1827/images/_CH_galery02.jpg", "type": "CompanyPassportImage" }],
    "videos": [{ "url": "https://www.youtube.com/watch?v=KpilO7xicio", "provider": "youtubecom" }],
    "about": [{ "title": "About Us", "contentHtml": "..." }]
  },
  "descriptionSections": [
    { "name": "introduction", "title": "Einleitung", "contentHtml": "..." },
    { "name": "description", "title": "DEINE ROLLE", "contentHtml": "..." },
    { "name": "profile", "title": "DEIN PROFIL", "contentHtml": "..." }
  ],
  "descriptionHtml": "...",
  "language": "de"
}
```

### Input reference

| Field | Type | What it does |
|---|---|---|
| `keyword` | string | What to search for. Leave empty to get every job in the location. |
| `location` | string | City or region. Leave empty to search the whole country. |
| `country` | select | `de`, `at`, `be` or `nl`. Germany when not set. |
| `radius` | integer | Kilometres around the location, up to 100. Needs a location. |
| `workType` | select | `vollzeit` or `teilzeit`. Both when not set. |
| `publishedSince` | select | `24h` or `7d`. Any age when not set. |
| `workFromHome` | select | `only` for fully remote, `partial` for partly remote. |
| `startUrls` | array | StepStone result pages or single job pages. Replaces the keyword search. |
| `exactMatchesOnly` | boolean | Keep only jobs that match your search. StepStone pads result lists with related titles and nearby towns; skipped jobs are never charged. Off by default. |
| `maxItems` | integer | Total jobs for the run. `0` means keep going until results run out, up to 10,000. Default 100. |

### Pricing

**$2.99 per 1,000 jobs.** No monthly fee. Expired listings are skipped and never billed.

Every row is a full job: the salary range where StepStone provides one, the benefits, the skills, the company detail and the complete description. There is no cheaper "listing only" tier to upgrade from and no second charge for detail.

New accounts get a free allowance to try the actor before paying.

### FAQ

**Which StepStone sites are covered?**
stepstone.de, stepstone.at, stepstone.be and stepstone.nl. StepStone Denmark runs a different site and is not supported. Totaljobs in the UK is a separate brand on a separate site; it has its own actor, <a href="https://apify.com/clearpath/totaljobs-uk-job-scraper">Totaljobs Jobs</a>, which also covers CWJobs, Jobsite, Caterer and Milkround.

**Do all jobs have a salary?**
No. StepStone computes salary estimates for German listings and does not publish one for every advert. Jobs without one return `salary: null` rather than a guess. Austrian, Belgian and Dutch listings return every other field but no salary estimate.

**Where do the skills come from?**
From the advert text. StepStone does not publish a skills field on a job, so this actor matches the wording of the advert against StepStone's own skill vocabulary plus the tools, standards, licences and languages German job ads commonly name. It reports what the advert says and never guesses.

**Where do the contact details come from?**
From the advert itself, where the employer printed a recruiter address or phone number. Many adverts do not name one, and those rows come back with empty lists.

**Can I scrape a single job page?**
Yes. Put the job address in `startUrls` and you get that one row.

**How far back does a search go?**
As deep as StepStone's own results go. Set `maxItems` to `0` to take everything a search returns.

**What happens to expired jobs?**
Listings that have already closed are skipped and reported separately, never billed and never returned as empty rows.

# Actor input Schema

## `keyword` (type: `string`):

What to search for, for example <b>software engineer</b>, <b>Pflegefachkraft</b> or <b>Controller</b>. Leave empty to get every job in the location.

## `location` (type: `string`):

City or region to search in, for example <b>Berlin</b>, <b>München</b> or <b>Nordrhein-Westfalen</b>. Leave empty to search the whole country.

## `country` (type: `string`):

Which StepStone site to search. Germany is used when nothing is selected. Salary estimates are only available for Germany; the other sites return every other field.

## `radius` (type: `integer`):

How far around the location to include jobs. Only applies when a location is set. StepStone widens up to 100 km.

## `workType` (type: `string`):

Leave empty to get both full-time and part-time jobs.

## `publishedSince` (type: `string`):

Only return recently published jobs. Useful for a daily or weekly run that should pick up new postings only.

## `workFromHome` (type: `string`):

Only return jobs that offer remote work.

## `exactMatchesOnly` (type: `boolean`):

StepStone pads a result list with jobs that carry a different title or sit outside the location you asked for. Tick this to keep only the jobs that match your search. Skipped jobs are never charged. Every row tells you which it is in <b>matchType</b>.

## `startUrls` (type: `array`):

Paste StepStone result pages or single job pages, from any of the four sites. <b>These replace the keyword search above</b>, including the filters. The maximum below is split evenly across the result pages you add.

## `maxItems` (type: `integer`):

How many jobs to return in total across the whole run. Set to <b>0</b> to keep going until the search runs out, up to 10,000 jobs per run.

## Actor input object example

```json
{
  "keyword": "software engineer",
  "location": "Berlin",
  "country": "de",
  "radius": 30,
  "exactMatchesOnly": false,
  "maxItems": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keyword": "software engineer",
    "location": "Berlin",
    "country": "de",
    "radius": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearpath/stepstone-de-job-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keyword": "software engineer",
    "location": "Berlin",
    "country": "de",
    "radius": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("clearpath/stepstone-de-job-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keyword": "software engineer",
  "location": "Berlin",
  "country": "de",
  "radius": 30
}' |
apify call clearpath/stepstone-de-job-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearpath/stepstone-de-job-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cB8bzys6LuwcwX70q/builds/r6wdRlEDfVLnrQIuz/openapi.json
