# StepStone Jobs Scraper (`intelscrape/stepstone-scraper`) Actor

Scrape StepStone.de job listings — salary range, skills, apply URLs, company data — by keyword, location, Bundesland, or radius. 100% run success, incremental monitoring, compact LLM mode, flat $1.20/1K, no monthly fee.

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

## Pricing

from $2.00 / 1,000 stepstone job extracteds

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

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

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## 🇪🇺 StepStone Jobs Scraper — High-Speed European Recruiting

![StepStone Jobs Banner](https://files.catbox.moe/rw07yc.png)

#### 🏆 Top-Rated Data APIs
**IntelScrape** builds reliable APIs for agencies & B2B sales.

##### 🔥 Popular Scrapers:
1. **[Local Lead Finder](https://apify.com/intelscrape/local-lead-finder)** — Extract Google Maps businesses missing a website.
2. **[Skip Trace PRO](https://apify.com/intelscrape/skip-trace-pro)** — Reverse Phone & Email Finder.
3. **[Google Maps Leads](https://apify.com/intelscrape/google-maps-lead-generator)** — Extract raw local businesses & contacts.
4. **[Building Permits](https://apify.com/intelscrape/building-permit-scraper)** — Extract new construction permits.
5. **[UCC Financing](https://apify.com/intelscrape/ucc-lien-scraper)** — MCA & equipment finance leads.
6. **[Shopify Emails](https://apify.com/intelscrape/shopify-owner-email)** — Harvest Shopify founder direct emails.
7. **[Niche E-Com Finder](https://apify.com/intelscrape/niche-ecommerce-website-finder)** — Generate CSVs of e-com URLs in any niche.
8. **[Dice Job Scraper Pro](https://apify.com/intelscrape/dice-jobs)** — Extract fresh IT job postings & salaries.
9. **[Email Verifier](https://apify.com/intelscrape/email-verifier)** — Live SMTP bulk email validation.

---

### 🎯 About This Bot

**StepStone Jobs** Scraper is the most advanced, high-speed automated extraction tool for Europe's leading career platform. Easily extract detailed job postings, salaries, remote opportunities, HR contacts, and company data in real-time. Built for B2B recruiters and elite staffing agencies.

**StepStone Jobs** extraction API. Hyper-fast SSR bypass for recruiting agencies. Scrape thousands of fresh German IT jobs, remote salaries, and company intel in seconds to scale your B2B leads.

---

⚡ **Use this Actor in n8n — no code**

Building no-code workflows in [n8n](https://n8n.io)? It works natively! Use the official **Apify** node to drop this Actor straight onto your canvas.

**Setup (30 seconds):**
1. In n8n, add the official **Apify** node to your workflow.
2. Connect your **Apify API token** in the credentials.
3. Select **Run an Actor**, and paste this actor's ID: `IntelScrape/stepstone-job-scraper`.
4. Fill in the JSON input and run!

---

![price](https://img.shields.io/badge/price-$3.00_/_1K-2ea44f) ![billing](https://img.shields.io/badge/billing-pay_for_results-2ea44f) ![API key](https://img.shields.io/badge/API_key-not_required-blue) ![rating](https://img.shields.io/badge/rating-5.0★-ffc107)

Unlock the European tech job market with lightning speed! Extract job listings, company details, salaries, and full job descriptions from StepStone.de. Built for recruiters, staffing agencies, data scientists, and B2B tech sales.

---

### 🚀 Why This Tool Exists

European tech recruitment is highly competitive. Finding fresh, verified job postings with full descriptions and salary data is crucial for matching top talent with the right companies before your competitors do. 

Unlike other scrapers that use slow, memory-intensive headless browsers, **StepStone Jobs** Scraper is built using an ultra-fast Server-Side Rendering (SSR) bypass. This means it extracts jobs **100x faster** than the competition, bypassing anti-bot protections and saving you both time and Apify compute units.

---

### 💰 How to Make Money With This

This tool is a complete **Business in a Box** for anyone in recruitment, staffing, or B2B tech sales.

#### 1. B2B Tech Recruitment (Staffing Agencies)
Search for `Senior React Developer` or `Cloud Architect`. The bot will return a massive CSV of companies actively hiring for these high-paying roles. You can immediately find the HR manager or CTO on LinkedIn and pitch your recruiting services or candidate roster.

#### 2. Job Market Analytics & Salary Data Sales
Extract thousands of job postings across different tech hubs (Berlin, Munich, Remote) to build comprehensive salary trend reports. You can sell these localized salary insights to HR departments, bootcamps, and career coaches who need to know the current market rate for specific tech stacks.

#### 3. Automate Your Own Job Hunt
Are you a developer looking for a high-paying remote job? Run this scraper daily to extract the freshest remote job postings with salaries above €80k. Automatically pipe the results into an AI agent to draft and send tailored resumes and cover letters within minutes of a job being posted!

---

### 🖼️ What The Data Looks Like

The scraper provides clean, beautifully structured JSON/CSV data.

```json
{
  "jobId": "89b840de-8179-42f3-a8b0-87c952905e91",
  "title": "Senior Frontend Developer (React)",
  "company": "VortexLink GmbH",
  "location": "Hybrid in Berlin",
  "salary": "€80,000 - €100,000",
  "datePosted": "2026-07-01T12:00:00Z",
  "url": "https://www.stepstone.de/jobs/...",
  "raw_data": {
    "..."
  }
}
````

***

### 🔒 Security & Pricing

- **Pay Per Result:** You are ONLY charged for successful jobs extracted.
- **Premium Data Rate:** Basic fields are incredibly cheap.

Built for performance by **IntelScrape**.

***

### ⭐ Please Leave a 5-Star Review! (Support Our Work)

If this scraper is saving you hours of manual research and protecting your sender reputation, please take 10 seconds to [**leave a 5-star review here**](https://console.apify.com/actors/).

Every 5-star review helps us keep the API updated, bypass new anti-bot protections, and add even more features to the scraper. We genuinely appreciate your support! 🙏

#### 🇪🇸 Español (Spanish)

**¡Por favor deja una reseña de 5 estrellas!** Si este scraper te está ahorrando horas de validación y protegiendo tu reputación, tómate 10 segundos para dejar una reseña de 5 estrellas. ¡Cada reseña nos ayuda a mantener la API actualizada y gratuita para funciones básicas! 🙏

#### 🇫🇷 Français (French)

**Merci de laisser un avis 5 étoiles !** Si ce scraper vous fait gagner des heures de validation et protège votre réputation d'expéditeur, prenez 10 secondes pour laisser un avis 5 étoiles. Chaque avis nous aide à maintenir l'API à jour ! 🙏

#### 🇩🇪 Deutsch (German)

**Bitte hinterlassen Sie eine 5-Sterne-Bewertung!** Wenn dieser Scraper Ihnen stundenlange manuelle Überprüfung erspart, nehmen Sie sich bitte 10 Sekunden Zeit, um eine 5-Sterne-Bewertung zu hinterlassen. Jede Bewertung hilft uns, die API aktuell zu halten! 🙏

#### 🇧🇷 Português (Portuguese)

**Por favor, deixe uma avaliação de 5 estrelas!** Se este scraper está economizando horas de pesquisa e protegendo sua reputação de remetente, tire 10 segundos para deixar uma avaliação de 5 estrelas. Cada avaliação nos ajuda a manter a API atualizada! 🙏

#### 🇮🇳 हिन्दी (Hindi)

**कृपया 5-स्टार रिव्यू दें!** यदि यह टूल आपके घंटों की मैन्युअल वैलिडेशन बचा रहा है, तो कृपया 10 सेकंड निकालकर 5-स्टार रिव्यू दें। आपकी हर एक समीक्षा हमें इस टूल को अपडेट रखने में मदद करती है! 🙏

#### 🇨🇳 中文 (Chinese)

**请留下 5 星好评！** 如果这个抓取工具为您节省了大量的验证时间并保护了您的发送者声誉，请花 10 秒钟留下 5 星评价。每一条评价都能帮助我们保持 API 的更新！🙏

***

## 🇩🇪 StepStone Jobs Scraper — Hochgeschwindigkeits-Recruiting in Europa

![StepStone Jobs Banner (Deutsch)](https://files.catbox.moe/rw07yc.png)

#### 🏆 Erstklassige Daten-APIs

**IntelScrape** entwickelt zuverlässige APIs für Agenturen & B2B-Vertrieb.

##### 🔥 Beliebte Scraper:

1. **[Local Lead Finder](https://apify.com/intelscrape/local-lead-finder)** — Google Maps Unternehmen ohne Website extrahieren.
2. **[Skip Trace PRO](https://apify.com/intelscrape/skip-trace-pro)** — Rückwärtssuche für Telefonnummern & E-Mails.
3. **[Google Maps Leads](https://apify.com/intelscrape/google-maps-lead-generator)** — Lokale Unternehmen & Kontakte extrahieren.
4. **[Building Permits](https://apify.com/intelscrape/building-permit-scraper)** — Baugenehmigungen extrahieren.
5. **[UCC Financing](https://apify.com/intelscrape/ucc-lien-scraper)** — Leads für Ausrüstungsfinanzierung.
6. **[Shopify Emails](https://apify.com/intelscrape/shopify-owner-email)** — Direkte E-Mails von Shopify-Gründern sammeln.
7. **[Niche E-Com Finder](https://apify.com/intelscrape/niche-ecommerce-website-finder)** — E-Commerce-URLs in jeder Nische finden.
8. **[Dice Job Scraper Pro](https://apify.com/intelscrape/dice-jobs)** — Frische IT-Stellenangebote & Gehälter extrahieren.
9. **[Email Verifier](https://apify.com/intelscrape/email-verifier)** — Live SMTP Massen-E-Mail-Überprüfung.

***

### 🎯 Über diesen Bot

**StepStone Jobs** Scraper ist das fortschrittlichste und schnellste Automatisierungstool für Europas führende Karriereplattform. Extrahieren Sie detaillierte Stellenanzeigen, Gehälter, Remote-Möglichkeiten, HR-Kontakte und Unternehmensdaten in Echtzeit. Entwickelt für B2B-Recruiter und Elite-Personalagenturen.

**StepStone Jobs** Extraktions-API. Hyperschneller SSR-Bypass für Personalagenturen. Scrapen Sie Tausende von frischen deutschen IT-Jobs, Remote-Gehältern und Unternehmensdaten in Sekunden, um Ihre B2B-Leads zu skalieren.

***

⚡ **Nutzen Sie diesen Actor in n8n — no code**

Erstellen Sie No-Code-Workflows in [n8n](https://n8n.io)? Es funktioniert nativ! Verwenden Sie den offiziellen **Apify** Node, um diesen Actor direkt auf Ihr Canvas zu ziehen.

**Einrichtung (30 Sekunden):**

1. Fügen Sie in n8n den offiziellen **Apify** Node zu Ihrem Workflow hinzu.
2. Verbinden Sie Ihr **Apify API-Token** in den Zugangsdaten.
3. Wählen Sie **Run an Actor** und fügen Sie die ID dieses Actors ein: `IntelScrape/stepstone-job-scraper`.
4. Füllen Sie die JSON-Eingabe aus und starten Sie!

***

![Preis](https://img.shields.io/badge/Preis-$3.00_/_1K-2ea44f) ![Abrechnung](https://img.shields.io/badge/Abrechnung-Zahlung_pro_Ergebnis-2ea44f) ![API-Schlüssel](https://img.shields.io/badge/API_Schl%C3%BCssel-nicht_erforderlich-blue) ![Bewertung](https://img.shields.io/badge/Bewertung-5.0★-ffc107)

Erschließen Sie den europäischen Tech-Arbeitsmarkt blitzschnell! Extrahieren Sie Stellenangebote, Unternehmensdetails, Gehälter und vollständige Stellenbeschreibungen von StepStone.de. Entwickelt für Recruiter, Personalagenturen, Data Scientists und B2B-Tech-Vertrieb.

***

### 🚀 Warum es dieses Tool gibt

Das europäische Tech-Recruiting ist hart umkämpft. Das Finden aktueller, verifizierter Stellenanzeigen mit vollständigen Beschreibungen und Gehaltsdaten ist entscheidend, um Top-Talente mit den richtigen Unternehmen zusammenzubringen, bevor Ihre Konkurrenten es tun.

Im Gegensatz zu anderen Scrapern, die langsame, speicherintensive Headless-Browser verwenden, basiert der **StepStone Jobs** Scraper auf einem ultraschnellen Server-Side Rendering (SSR) Bypass. Das bedeutet, dass er Jobs **100x schneller** als die Konkurrenz extrahiert, Anti-Bot-Schutzmaßnahmen umgeht und Ihnen sowohl Zeit als auch Apify-Recheneinheiten spart.

***

### 💰 Wie Sie damit Geld verdienen

Dieses Tool ist ein komplettes **Business in a Box** für jeden in der Personalbeschaffung, Zeitarbeit oder im B2B-Tech-Vertrieb.

#### 1. B2B Tech Recruiting (Personalagenturen)

Suchen Sie nach `Senior React Developer` oder `Cloud Architect`. Der Bot liefert eine riesige CSV-Datei von Unternehmen, die aktiv nach diesen hochbezahlten Rollen suchen. Sie können sofort den HR-Manager oder CTO auf LinkedIn finden und Ihre Recruiting-Dienstleistungen oder Kandidatenlisten anbieten.

#### 2. Arbeitsmarktanalysen & Verkauf von Gehaltsdaten

Extrahieren Sie Tausende von Stellenanzeigen in verschiedenen Tech-Hubs (Berlin, München, Remote), um umfassende Gehaltsberichte zu erstellen. Sie können diese lokalisierten Gehaltseinblicke an HR-Abteilungen, Bootcamps und Karrierecoaches verkaufen, die den aktuellen Marktpreis für bestimmte Tech-Stacks kennen müssen.

#### 3. Automatisieren Sie Ihre eigene Jobsuche

Sind Sie ein Entwickler auf der Suche nach einem hochbezahlten Remote-Job? Lassen Sie diesen Scraper täglich laufen, um die aktuellsten Remote-Stellenanzeigen mit Gehältern über 80.000 € zu extrahieren. Leiten Sie die Ergebnisse automatisch an einen KI-Agenten weiter, um maßgeschneiderte Lebensläufe und Anschreiben innerhalb von Minuten nach Veröffentlichung eines Jobs zu entwerfen und zu versenden!

***

### 🖼️ Wie die Daten aussehen

Der Scraper liefert saubere, wunderschön strukturierte JSON/CSV-Daten.

```json
{
  "jobId": "89b840de-8179-42f3-a8b0-87c952905e91",
  "title": "Senior Frontend Developer (React)",
  "company": "VortexLink GmbH",
  "location": "Hybrid in Berlin",
  "salary": "€80,000 - €100,000",
  "datePosted": "2026-07-01T12:00:00Z",
  "url": "https://www.stepstone.de/jobs/...",
  "raw_data": {
    "..."
  }
}
```

***

### 🔒 Sicherheit & Preise

- **Zahlung pro Ergebnis:** Sie zahlen NUR für erfolgreich extrahierte Jobs.
- **Premium-Datenrate:** Grundlegende Felder sind unglaublich günstig.

Auf Leistung ausgelegt von **IntelScrape**.

# Actor input Schema

## `searchQuery` (type: `string`):

The job title, keyword, or company (e.g. 'Software Developer'). Leave blank to scrape all jobs in the location.

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

Select the target German city.

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

Maximum number of jobs to extract (e.g. 5000 to extract an entire city). Stepstone typically caps pagination at a few thousand jobs.

## `mode` (type: `string`):

full: scrape all jobs. incremental: scrape only jobs that are new or updated since the last run (saves money).

## `emitUnchanged` (type: `boolean`):

If true, unchanged jobs will still be pushed to the dataset (and billed) during an incremental run.

## `compactOutput` (type: `boolean`):

If true, emits a simplified, token-cheap JSON object ideal for feeding directly into LLM agents.

## `notifyWebhookUrl` (type: `string`):

Optional webhook URL to POST a summary of new/updated jobs to after the run finishes (Slack/Discord/Make.com).

## Actor input object example

```json
{
  "location": "Berlin",
  "maxItems": 500,
  "mode": "full",
  "emitUnchanged": false,
  "compactOutput": false
}
```

# Actor output Schema

## `jobId` (type: `string`):

Unique identifier for the job.

## `jobTitle` (type: `string`):

The title of the job.

## `companyName` (type: `string`):

The employer.

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

The location of the job.

## `jobUrl` (type: `string`):

Direct link to the job.

# 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 = {
    "maxItems": 500
};

// Run the Actor and wait for it to finish
const run = await client.actor("intelscrape/stepstone-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 = { "maxItems": 500 }

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

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

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

```

## CLI example

```bash
echo '{
  "maxItems": 500
}' |
apify call intelscrape/stepstone-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=intelscrape/stepstone-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "StepStone Jobs Scraper",
        "description": "Scrape StepStone.de job listings — salary range, skills, apply URLs, company data — by keyword, location, Bundesland, or radius. 100% run success, incremental monitoring, compact LLM mode, flat $1.20/1K, no monthly fee.",
        "version": "1.0",
        "x-build-id": "vGvmhKIMs0paKV1ee"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/intelscrape~stepstone-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-intelscrape-stepstone-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/intelscrape~stepstone-scraper/runs": {
            "post": {
                "operationId": "runs-sync-intelscrape-stepstone-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/intelscrape~stepstone-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-intelscrape-stepstone-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "location"
                ],
                "properties": {
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "The job title, keyword, or company (e.g. 'Software Developer'). Leave blank to scrape all jobs in the location."
                    },
                    "location": {
                        "title": "Location (City)",
                        "enum": [
                            "Berlin",
                            "Hamburg",
                            "Munich",
                            "Frankfurt am Main",
                            "Cologne",
                            "Düsseldorf",
                            "Stuttgart",
                            "Hanover",
                            "Leipzig",
                            "Bremen",
                            "Dresden",
                            "Nuremberg",
                            "Dortmund",
                            "Essen",
                            "Münster",
                            "Karlsruhe",
                            "Mannheim",
                            "Bonn",
                            "Augsburg",
                            "Kassel",
                            "Potsdam",
                            "Grünheide (Mark)",
                            "Ludwigsfelde",
                            "Schönefeld",
                            "Eberswalde",
                            "Oranienburg",
                            "Falkensee",
                            "Großbeeren",
                            "Königs Wusterhausen",
                            "Teltow",
                            "Hennigsdorf",
                            "Blankenfelde",
                            "Nauen",
                            "Strausberg",
                            "Mahlow",
                            "Werder (Havel)",
                            "Kleinmachnow",
                            "Fürstenwalde/Spree",
                            "Velten"
                        ],
                        "type": "string",
                        "description": "Select the target German city.",
                        "default": "Berlin"
                    },
                    "maxItems": {
                        "title": "Maximum items",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of jobs to extract (e.g. 5000 to extract an entire city). Stepstone typically caps pagination at a few thousand jobs."
                    },
                    "mode": {
                        "title": "Run Mode",
                        "enum": [
                            "full",
                            "incremental"
                        ],
                        "type": "string",
                        "description": "full: scrape all jobs. incremental: scrape only jobs that are new or updated since the last run (saves money).",
                        "default": "full"
                    },
                    "emitUnchanged": {
                        "title": "Emit Unchanged Jobs (Incremental Mode)",
                        "type": "boolean",
                        "description": "If true, unchanged jobs will still be pushed to the dataset (and billed) during an incremental run.",
                        "default": false
                    },
                    "compactOutput": {
                        "title": "Compact Output (LLM Mode)",
                        "type": "boolean",
                        "description": "If true, emits a simplified, token-cheap JSON object ideal for feeding directly into LLM agents.",
                        "default": false
                    },
                    "notifyWebhookUrl": {
                        "title": "Notify Webhook URL",
                        "type": "string",
                        "description": "Optional webhook URL to POST a summary of new/updated jobs to after the run finishes (Slack/Discord/Make.com)."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
