# StepStone New Jobs Scraper - stepstone.de Germany Jobs Feed (`kamerozkan/stepstone-jobs-scraper`) Actor

StepStone new jobs scraper for stepstone.de: StepStone DE jobs by keyword, city and radius with salary range, company page, home-office flag and posting date. New-jobs-only feed for daily alerts, 24h and 7-day filters, optional full description. No login.

- **URL**: https://apify.com/kamerozkan/stepstone-jobs-scraper.md
- **Developed by:** [Kamer Ozkan](https://apify.com/kamerozkan) (community)
- **Categories:** Jobs, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 job listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 New Jobs Scraper - stepstone.de Germany Jobs Feed

StepStone new jobs scraper for stepstone.de: search StepStone DE jobs by keyword, city and radius and get one clean row per job ad with salary range, company page, home-office flag and posting date. Filter to the last 24 hours or 7 days, turn on **Only new jobs** and schedule it for a StepStone job feed that charges only for listings you have not seen before.

### What does StepStone New Jobs Scraper do?

It reads the public StepStone result lists (the same pages every visitor sees on stepstone.de) and returns the structured job data behind them: title, company and company jobs page, location, posting and expiry dates, StepStone's salary range, home-office level, quick-apply flag, the job summary and benefits text and the job ad URL.

- **Search like on the site**: keywords plus a city with a radius, a keyword for all of Germany, or a city without keywords. You can also paste result-list URLs from stepstone.de, including ones with filters already applied.
- **StepStone filters**: published within 24 hours or 7 days, partly or only home office, contract types (permanent, fixed-term, working student, apprenticeship, internship, trainee, freelance), experience level, ad language (German or English), minimum salary, discipline, and newest-first or relevance sorting.
- **New jobs feed**: with **Only new jobs** the actor remembers the job ids it delivered per search. Schedule the same input daily and each run returns (and charges) only new listings, with `isNew` on every row.
- **Clean rows**: the same result count as the site. StepStone adds jobs from nearby towns on top of its count; they are left out unless you turn on **Include nearby jobs** (`matchType` regional).

No login, no StepStone account and no API key are needed. Proxy is included in the price.

### Who is it for?

- **Recruiters and staffing agencies** who want every new StepStone job for their roles and cities each morning, without opening the site.
- **Job boards and aggregators** that need stepstone.de listings as structured data by keyword, region and freshness.
- **Hiring-signal and sales teams** watching which companies in Germany are hiring for which roles, with links to the company jobs pages.
- **HR and compensation analysts** using StepStone salary ranges by job title and city.
- **Data teams** who want a StepStone API alternative that works with the Apify API, webhooks and schedules.

### What data can you get?

| Field | Example |
|---|---|
| `jobId`, `url` | 14624288, link to the job ad |
| `title` | Software-Entwickler/Kunden- & Produktsupport (m/w/d) |
| `company`, `companyId`, `companyUrl`, `companyLogoUrl` | epostbox epb GmbH, 334748, StepStone company jobs page, logo |
| `location` | Berlin (several cities are listed comma-separated) |
| `datePosted`, `publishToDate` | 2026-10-16T05:59:26Z, 2026-11-15T06:59:26Z |
| `salaryMin`, `salaryMax`, `salaryPeriod`, `salaryCurrency`, `salaryType` | 55000, 85000, Annually, EUR, Predicted (StepStone estimate) or stated by the employer |
| `workFromHome` | none, partly or only |
| `quickApply`, `isSponsored`, `isTopJob` | true / false |
| `snippet`, `benefits` | job summary and the benefits paragraph of the ad |
| `matchType` | main (title match), semantic (search match) or regional (nearby town, opt-in) |
| `searchTerm`, `searchLocation`, `isNew`, `scrapedAt` | which search found the job, whether it is new since the last run, when |

### How much does it cost?

You pay only for job rows: **$1.00 per 1,000 jobs** on the Free plan, with lower prices on paid Apify plans. Result pages and the proxy are not charged extra.

Worked examples:

- All software developer jobs in Berlin posted in the last 7 days (about 1,500 jobs) cost about **$1.50**.
- A recruiter who follows 5 searches with **Only new jobs** every morning and gets about 60 new ads a day pays about **$1.80 per month**.
- A job board that imports 20,000 StepStone jobs a month pays **$20.00**.

Set "Max jobs" or a maximum cost per run to cap spending.

### How to use it

1. Click **Try for free**.
2. Enter one or more **Search terms** and a **Location** (or paste **StepStone search URLs**).
3. Optional: choose **Published within** (24 hours or 7 days), **Home office**, contract types, experience, language or a minimum salary.
4. Click **Start**, then download the results as JSON, CSV or Excel, or read them with the API.
5. For a new jobs feed, turn on **Only new jobs**, save the input as a task and add a daily schedule. The first run delivers the current listings, later runs only the new ones.

### Input example

```json
{
  "searchTerms": ["Data Engineer", "Pflegefachkraft"],
  "location": "München",
  "radiusKm": 50,
  "publishedWithin": "7d",
  "workFromHome": "partly",
  "maxItems": 30
}
```

### Output example

Real row from a run on 2026-10-18 (Software Entwickler in Berlin, newest first):

```json
{
  "jobId": "14624288",
  "title": "Software-Entwickler/Kunden- & Produktsupport (m/w/d)",
  "company": "epostbox epb GmbH",
  "companyId": 334748,
  "companyUrl": "https://www.stepstone.de/cmp/de/epostbox-epb-gmbh-334748/jobs",
  "companyLogoUrl": "https://www.stepstone.de/upload_DE/logo/E/logoepostbox-epb-GmbH-334748DE-2502281027.gif",
  "location": "Berlin",
  "url": "https://www.stepstone.de/stellenangebote--Software-Entwickler-Kunden-Produktsupport-m-w-d-Berlin-epostbox-epb-GmbH--14624288-inline.html",
  "datePosted": "2026-10-16T05:59:26.65Z",
  "publishToDate": "2026-11-15T06:59:26.65Z",
  "workFromHome": "partly",
  "salaryMin": 55000,
  "salaryMax": 85000,
  "salaryPeriod": "Annually",
  "salaryCurrency": "EUR",
  "salaryType": "Predicted",
  "snippet": "nolas workspace ist ein Spin-off einer Berliner Unternehmensgruppe, das eine Infrastruktur-Software für Organisationsprozesse entwickelt. Gesucht wird ein Software-Entwickler/Kunden- & Produktsupport (m/w/d) zur Unterstützung von Kunden bei der Plugin-Entwicklung und beim Onboarding sowie zur Bearbeitung von Kundenanfragen.",
  "benefits": "Kein Benefits-Bingo\nKein Kicker, kein Work-Life-Balance. Einfach Support für dein Wachstum in einem leistungsstarken Team.",
  "quickApply": false,
  "isSponsored": false,
  "isTopJob": false,
  "matchType": "main",
  "searchTerm": "Software Entwickler",
  "searchLocation": "Berlin",
  "isNew": null,
  "scrapedAt": "2026-10-18T13:34:40Z"
}
```

The OUTPUT record of the run shows the number of jobs per search, pages read, requests and any page that could not be loaded.

### Integrations and API

Run it from your code with the Apify API or the `apify-client` package, schedule it in Apify, or connect it to Make, n8n, Zapier, Google Sheets or a webhook (for example a Slack message for every row with `isNew` true).

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("kamerozkan/stepstone-jobs-scraper").call(run_input={
    "searchTerms": ["Software Entwickler"],
    "location": "Berlin",
    "publishedWithin": "24h",
    "onlyNewJobs": True,
    "maxItems": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["datePosted"], item["title"], item["company"], item["location"], item["url"])
```

### FAQ

**How do I get only new StepStone jobs?** Turn on **Only new jobs**. The actor stores the ids of delivered jobs per search in a key-value store in your own Apify account and skips them next time. Combine it with **Published within: last 24 hours** and a daily schedule; the first run delivers the current list, later runs only the new ads. Use **History key** to share one history between tasks or to reset it.

**What do `salaryMin` and `salaryMax` mean?** StepStone shows a salary range for most ads. `salaryType` tells you whether it is Predicted (StepStone's own estimate) or stated by the employer. Ranges are annual EUR figures unless `salaryPeriod` says otherwise.

**Can I search all of Germany?** Yes, leave **Location** empty. A location without search terms returns all jobs around that city.

**Can I paste a StepStone URL?** Yes, put result-list URLs from stepstone.de into **StepStone search URLs**, for example a full-time list like `https://www.stepstone.de/jobs/vollzeit/software-entwickler/in-berlin`. Page numbers are handled by the actor; the filters you set in the input are added to the URL.

**Does the job count match the site?** Yes. The actor returns the jobs StepStone counts as results (`matchType` main for title matches and semantic for search matches). StepStone also shows jobs from nearby towns on top of that count; turn on **Include nearby jobs** to get them too (`matchType` regional).

**Does it return the full job description?** This version returns the job summary (`snippet`) and the benefits text from the result list, not the complete ad text. Full descriptions from the job ad pages are planned; open an issue if you need them and they move up the list.

**Does it need a proxy or a browser?** No browser. The actor uses German residential proxy from Apify (StepStone lets most datacenter connections time out), included in the price.

**Is it legal to collect this data?** It collects public job advertisements that employers publish on stepstone.de for everyone to see: job, company, location, salary range and dates. No logins, no applicant or recruiter personal data. You are responsible for how you use it, including privacy laws like GDPR.

### Support and feedback

- Found a bug or missing a field? Open an issue on the **Issues** tab of this Actor with your run link. We reply within
  48 hours and ship most fixes within a few days.
- Have an idea for a feature? Issues are the fastest way to get it built.
- If the Actor saves you time, a short review on this page helps other users find it.

# Actor input Schema

## `searchTerms` (type: `array`):

Job titles or keywords as you would type them on stepstone.de, for example "Software Entwickler", "Data Engineer" or "Pflegefachkraft". Each term is searched separately and duplicates are removed. Leave empty to get all jobs in the location.

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

City or region in Germany, for example "Berlin", "München" or "Hamburg". Leave empty to search all of Germany.

## `radiusKm` (type: `integer`):

Search radius around the location in kilometres (StepStone default 30). Used only when a location is set.

## `searchUrls` (type: `array`):

Optional. Result-list URLs copied from stepstone.de, for example https://www.stepstone.de/jobs/vollzeit/software-entwickler/in-berlin or a URL with filters already applied. Read in addition to the search terms; the filters below are added to them.

## `publishedWithin` (type: `string`):

Only jobs posted in the last 24 hours or the last 7 days (the StepStone "Neuer als" filter). Combine with Only new jobs and a daily schedule for a job alert feed.

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

Only jobs with partial home office (hybrid) or only fully remote jobs.

## `contractTypes` (type: `array`):

Optional filter. Leave empty for all contract types.

## `experience` (type: `string`):

Optional filter on the StepStone experience facet.

## `language` (type: `string`):

Only job ads written in German or only in English.

## `minSalaryEur` (type: `integer`):

Optional. Only jobs whose StepStone salary range reaches at least this annual amount, for example 60000. StepStone steps are 10,000 to 100,000.

## `discipline` (type: `string`):

Optional StepStone discipline facet, written as on the site, for example "IT", "Marketing", "Ingenieurwesen" or "Vertrieb und Verkauf".

## `sortBy` (type: `string`):

Newest jobs first (default) or StepStone relevance.

## `includeNearbyJobs` (type: `boolean`):

StepStone adds jobs from nearby towns on top of the result count (matchType regional). Off by default: only the jobs StepStone counts as results (matchType main or semantic) are returned and charged.

## `onlyNewJobs` (type: `boolean`):

Return only jobs that earlier runs with the same searches did not return. Use with an Apify Schedule for a StepStone new jobs feed: you pay only for new listings.

## `historyKey` (type: `string`):

Optional name for the new-jobs-only history. Runs with the same key share one history. By default the key is derived from the searches and filters.

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

Stop after this many jobs. You are charged per job, so this also caps the cost of the run.

## `proxyConfiguration` (type: `object`):

Apify Proxy. By default the run uses German residential proxy (StepStone lets most datacenter connections time out); choose proxy groups here to override.

## Actor input object example

```json
{
  "searchTerms": [
    "Software Entwickler"
  ],
  "location": "Berlin",
  "radiusKm": 30,
  "publishedWithin": "any",
  "workFromHome": "any",
  "experience": "any",
  "language": "any",
  "sortBy": "date",
  "includeNearbyJobs": false,
  "onlyNewJobs": false,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One row per result in the default dataset.

# 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 = {
    "searchTerms": [
        "Software Entwickler"
    ],
    "location": "Berlin",
    "maxItems": 50,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("kamerozkan/stepstone-jobs-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 = {
    "searchTerms": ["Software Entwickler"],
    "location": "Berlin",
    "maxItems": 50,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("kamerozkan/stepstone-jobs-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 '{
  "searchTerms": [
    "Software Entwickler"
  ],
  "location": "Berlin",
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call kamerozkan/stepstone-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kamerozkan/stepstone-jobs-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/ofkbjlmQCmQx41kVN/builds/O0XiA5HUYGxFF1Ft4/openapi.json
