# StepStone.de Jobs & Skills Analyzer (`zapticx/stepstone-jobs-analyzer`) Actor

Collect up to 500 unique StepStone.de jobs with available descriptions, normalized skills, and transparent German job-market analysis.

- **URL**: https://apify.com/zapticx/stepstone-jobs-analyzer.md
- **Developed by:** [Zapticx](https://apify.com/zapticx) (community)
- **Categories:** Jobs
- **Stats:** 2 total users, 1 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 results

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 Jobs & Skills Analyzer

Turn returned StepStone.de job listings into clean recruitment data and practical hiring intelligence. This StepStone.de scraper collects up to **500 unique jobs per run**, enriches available job descriptions, identifies normalized skills, and summarizes companies, locations, work modes, employment types, and seniority signals.

Use it as a German jobs scraper in Apify Console or as a job listings API for repeatable job market analysis, talent intelligence, workforce planning, and recruitment research across Germany.

Built and maintained by [Zapticx](https://www.zapticx.com/).

### Why run this Actor?

- Replace manual review of hundreds of StepStone jobs with structured, export-ready records.
- Compare skills and hiring signals across roles, employers, cities, and German regions.
- Explore remote, hybrid, and on-site patterns derived from returned StepStone listings.
- Normalize employment and seniority signals into consistent fields for analysis.
- Keep source provenance for every record, including query, result group, page, and position.
- Send results directly to JSON, CSV, Excel, the Apify API, or your existing recruitment workflow.

### What you receive

Each unique job becomes one durable dataset record. Depending on what is available in the returned listing and job content, records can include:

- StepStone listing ID and canonical job URL;
- job title, company, location, city, and postal code;
- posting and modification dates;
- available job description and explicit enrichment status;
- normalized remote/work-mode, employment-type, and seniority signals;
- normalized skills identified in available job descriptions, with category and provenance;
- query, result group, source page, and result-position provenance.

When analysis is enabled, the `SUMMARY` record adds transparent aggregates for:

- companies and locations;
- remote, hybrid, and on-site work modes;
- employment types and seniority signals;
- skill frequency and skills coverage;
- collection, duplicate, pagination, and enrichment coverage.

The analysis describes the jobs returned in that run. It is not presented as complete coverage of StepStone or the German labor market.

### Quick start

1. Add one or more job titles or keywords.
2. Add German cities or regions, or leave locations empty for a Germany-wide search.
3. Choose up to 500 unique jobs.
4. Keep **Create market analysis** and **Enrich descriptions and skills** enabled for the full product output.
5. Click **Start** and open the dataset or `SUMMARY` record when the run finishes.

The default Store prefill works without manual changes:

```json
{
  "searchTerms": ["Software Engineer"],
  "locations": ["Berlin"],
  "maxResults": 50,
  "includeRelatedResults": false,
  "enableAnalysis": true
}
```

Detail enrichment defaults to `true`, so this example returns available descriptions, normalized skills, and market analysis automatically.

### Input options

- `searchTerms`: job titles or keywords such as `Data Engineer`, `Controller`, or `Elektroingenieur`.
- `locations`: German cities or regions. Every location is paired with every search term. Leave the list empty for Germany-wide results.
- `startUrls`: optional StepStone.de `/jobs/` search URLs. Supported filters in those URLs are preserved.
- `maxResults`: maximum number of unique jobs across the run, from 1 to **500**.
- `includeRelatedResults`: optionally include semantic, regional, recommendation, and other expanded result groups. It is off by default so the dataset and analysis describe main results only.
- `enableAnalysis`: create the aggregate `SUMMARY` record. Enabled by default.
- `enableDetailEnrichment`: request available descriptions and derive normalized skills. Enabled by default.

### Example job record

Fields remain explicit about source availability and classification provenance. An illustrative enriched record has this shape:

```json
{
  "jobId": "12345678",
  "title": "Senior Elektroingenieur (m/w/d)",
  "companyName": "Example employer",
  "location": "Böblingen",
  "jobUrl": "https://www.stepstone.de/stellenangebote--example--12345678-inline.html",
  "detailStatus": "success",
  "descriptionLength": 3240,
  "remoteType": "Hybrid",
  "employmentType": "Full-time",
  "seniority": "Senior",
  "skills": ["Electrical engineering", "Electronics"],
  "skillsSource": "derived_from_description",
  "resultGroup": "main",
  "sourcePage": 2,
  "source": "stepstone.de"
}
```

Values vary by listing. Missing source content is left unavailable rather than invented.

### Useful use cases

- **Recruitment research:** build a structured view of open roles, employers, and locations.
- **Skills analysis:** compare normalized skills identified in available job descriptions.
- **Hiring intelligence:** monitor which companies are recruiting for selected roles or technologies.
- **Job market analysis:** compare returned StepStone listings across cities, regions, or focused search terms.
- **Remote-jobs research:** review derived remote, hybrid, and on-site signals when available.
- **Talent intelligence:** track employment-type and seniority patterns across a defined result set.
- **Data pipelines:** use the Actor as a recruitment API feeding dashboards, databases, or internal tools.

### Exports and integrations

Use the default dataset in Apify Console or consume it through the API:

- **JSON / API:** preserves nested `skills` and `skillDetails` arrays.
- **CSV / Excel:** convenient for spreadsheets, review, and BI workflows.
- **Automation:** connect with Apify webhooks and schedules, Make, Zapier, Google Sheets, or your own database and reporting stack.

The `OUTPUT` record contains links to the dataset, analysis summary, and run metadata.

### Up to 500 unique jobs per run

A single run supports up to **500 unique jobs**. The limit applies across all search terms, locations, and start URLs supplied to that run.

For research beyond 500 jobs, split the work into focused runs—for example by role, city, region, experience level, or date/filter combination—and combine the exported datasets downstream. Focused runs also make comparisons easier to interpret.

### Pricing

The price is **$2.00 per 1,000 result records**. Approximate result charges are:

| Results | Approximate charge |
| ---: | ---: |
| 100 | $0.20 |
| 250 | $0.50 |
| 500 | $1.00 |

You are charged for result records produced. Source availability and filtering can cause a run to return fewer records than the requested maximum. Apify shows the current price and estimate in the Actor's Pricing tab before running.

### Data quality and trust

- Jobs are deduplicated across the run by stable listing identity and canonical URL.
- Each record retains page and query provenance for traceability.
- Records are stored as they are processed, so successfully collected jobs remain durable if a later source request fails.
- Description enrichment is best effort. When content is unavailable or a request fails, the search-level job remains in the dataset with an explicit `detailStatus`.
- Summary coverage metrics report how many descriptions were attempted, enriched, unavailable, failed, or skipped.
- Skills are deterministic terms identified in available job descriptions. They are useful for repeatable analysis but are not exhaustive and may include contextual mentions rather than candidate requirements.
- Remote/work-mode, employment, and seniority values are normalized from available source content and are not guaranteed to classify every record perfectly.
- Availability, fields, descriptions, and result counts can change at the source.

### Scope and responsible use

This Actor collects publicly accessible StepStone.de job-listing data. Use the results in accordance with applicable laws, StepStone terms, and data-protection obligations. The Actor does not guarantee real-time data, every StepStone job, or complete German labor-market coverage.

Built and maintained by [Zapticx](https://www.zapticx.com/).

**Disclaimer:** StepStone.de is operated by The Stepstone Group Deutschland GmbH. This independent Zapticx product is not affiliated with, endorsed by, or sponsored by The Stepstone Group Deutschland GmbH. Users are responsible for how they use and redistribute the collected data.

# Actor input Schema

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

Job titles, skills, or keywords for StepStone jobs, such as Data Engineer, Controller, or Elektroingenieur. Each term is combined with each location.

## `locations` (type: `array`):

German cities or regions for location-focused recruitment data. Each location is combined with each search term; leave empty for Germany-wide results.

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

Optional StepStone.de /jobs/ search URLs for advanced filtered searches. Supported URL filters are preserved while pagination is controlled by the Actor.

## `maxResults` (type: `integer`):

Maximum number of unique StepStone jobs across all searches. Supports 1 to 500 unique jobs per run.

## `includeRelatedResults` (type: `boolean`):

Include semantic, regional, recommendation, and other expanded StepStone result groups. Disabled by default so job-market analysis describes main results only.

## `enableAnalysis` (type: `boolean`):

Create transparent company, location, remote/work-mode, employment, seniority, skills, and coverage summaries based on returned StepStone listings.

## `enableDetailEnrichment` (type: `boolean`):

Enrich jobs with available descriptions, source-provided structured fields, and normalized skills identified in available job content. Enabled by default.

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

Optional Apify proxy settings for advanced use. Most users should keep the default.

## Actor input object example

```json
{
  "searchTerms": [
    "Software Engineer"
  ],
  "locations": [
    "Berlin"
  ],
  "startUrls": [],
  "maxResults": 50,
  "includeRelatedResults": false,
  "enableAnalysis": true,
  "enableDetailEnrichment": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `jobs` (type: `string`):

API link to the export-ready dataset of unique StepStone.de job records for JSON, CSV, Excel, and integrations.

## `summary` (type: `string`):

API link to transparent company, location, work-mode, employment, seniority, skills, and coverage aggregates based on returned listings.

## `runMetadata` (type: `string`):

API link to run status, capabilities, record counts, and output pointers for automation workflows.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("zapticx/stepstone-jobs-analyzer").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("zapticx/stepstone-jobs-analyzer").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 '{}' |
apify call zapticx/stepstone-jobs-analyzer --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,zapticx/stepstone-jobs-analyzer"
        }
    }
}
```

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/Kz4WI4vXTN5IF8HpD/builds/hDBuGLl6hzi9x9hzM/openapi.json
