# Stellenmarkt.de Scraper - German National Jobs (`santamaria-automations/stellenmarkt-de-scraper`) Actor

Scrape job listings from Stellenmarkt.de, a leading German job board. Extract titles, companies, locations, salaries, requirements, and full job descriptions. Supports multi-query search and location filtering.

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

## Pricing

from $3.00 / 1,000 job listing 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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

## Stellenmarkt.de Scraper - Every Job in Germany, Structured

Scrape job listings from [Stellenmarkt.de](https://www.stellenmarkt.de), a leading German national job board with hundreds of thousands of active postings. Germany is **Europe's largest labor market** (45M workers, 3.5M open roles, 3.4M Mittelstand employers) — this scraper gives you structured access to salary, requirements, responsibilities and benefits in one clean JSON feed.

Pairs perfectly with our **StepStone**, **Arbeitsagentur**, **Stellenanzeigen**, **Jobs.ch** and **Karriere.at** scrapers for complete DACH coverage.

### What you get

- **Nationwide German job listings** across every city, region and industry
- **Parsed salary** — min, max, currency, period (when published)
- **Structured requirements, responsibilities and benefits** as clean arrays (Aufgaben / Anforderungen / Wir bieten)
- **Company name, logo URL and profile URL** for every posting
- **City + Bundesland** extracted from schema.org JobPosting metadata
- **Employment type normalized** — Vollzeit, Teilzeit, Praktikum, Ausbildung, Befristet, Freelance
- **Work mode** — Remote / Hybrid / On-site when indicated
- **Posted + expiry dates** in ISO-8601
- **Contact email and phone** extracted from the job body
- **Multi-keyword search** with automatic cross-query deduplication

### Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client — Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.

**Apify MCP server URL:**

```
https://mcp.apify.com?tools=santamaria-automations/stellenmarkt-de-scraper
```

**Example prompt once connected:**

> "Use `stellenmarkt-de-scraper` to scrape job listings from stellenmarkt de. Return results as a table."

Clients that support dynamic tool discovery (Claude.ai, VS Code) will receive the full input schema automatically via `add-actor`.

### Example output

```json
{
  "id": "26283535",
  "title": "Prozessmanager (m/w/d)",
  "url": "https://www.stellenmarkt.de/anzeige26283535.html",
  "company": "BBBank eG",
  "company_url": "https://www.stellenmarkt.de/display_superlink.php?BEN_ID=525158",
  "company_logo_url": "https://www.stellenmarkt.de/image.php?kid=525158",
  "location": "Karlsruhe, Berlin",
  "city": "Berlin",
  "region": "Berlin",
  "country": "DE",
  "employment_type": "Vollzeit",
  "description_full": "BBBank eG – Better Banking\nWir sind die größte genossenschaftliche Privatkundenbank...",
  "requirements": [
    "Erfolgreich abgeschlossene Ausbildung mit betriebswirtschaftlichem oder technischem Schwerpunkt",
    "Fundierte Kenntnisse in den kundenorientierten Prozessen einer Bank",
    "Idealerweise erste Erfahrungen im Prozessmanagement"
  ],
  "responsibilities": [
    "Durchführung eines nachhaltigen Prozessmanagements zur Identifikation von Optimierungspotentialen",
    "Planung, Koordination und Durchführung von Prozessoptimierungen",
    "Beratung der Fachbereiche hinsichtlich prozessualer Anforderungen"
  ],
  "company_benefits": [
    "Vielseitige und verantwortungsvolle Tätigkeit",
    "Mobiles Arbeiten und Gestaltungsspielräume",
    "Attraktives Vergütungspaket",
    "Betriebliche Altersvorsorge, Jobrad, ÖPNV-Zuschuss"
  ],
  "posted_at": "2026-02-24T08:57:51Z",
  "search_query": "Entwickler",
  "source_platform": "stellenmarkt.de",
  "scraped_at": "2026-04-10T17:42:00Z"
}
```

### How to use

Set one or more keywords in `searchQueries`, optionally filter by `location` + `radius`, and let the scraper walk through SERP pages and visit each job detail page. Results arrive structured and deduplicated across queries.

#### Input

| Parameter | Description | Example |
|-----------|-------------|---------|
| `searchQueries` | Keywords to search (deduplicated across queries) | `["Entwickler", "Data Engineer"]` |
| `location` | City or Bundesland, leave empty for all-Germany | `"Berlin"`, `"Bayern"` |
| `radius` | Search radius in km around location | `30` |
| `category` | Industry category filter (free text) | `"IT"`, `"Pflege"` |
| `employmentType` | `vollzeit`, `teilzeit`, `praktikum`, `ausbildung` | `"vollzeit"` |
| `maxResultsPerQuery` | Max results per keyword | `100` |
| `maxResults` | Total cap across all queries (0 = unlimited) | `500` |
| `includeJobDetails` | Visit each detail page (recommended) | `true` |
| `proxyConfiguration` | Apify Proxy settings | `{"useApifyProxy": true}` |

**Example input**

```json
{
  "searchQueries": ["Software Engineer", "Data Engineer", "DevOps"],
  "location": "München",
  "maxResultsPerQuery": 200,
  "includeJobDetails": true,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

### Use cases

- **DACH recruitment intelligence** — map live hiring across Bundesländer, roles and industries for sourcing and market reports
- **Salary benchmarking** — build role × city × employer salary benchmarks in EUR; track compensation movements over time
- **Talent intelligence & HR tech** — power dashboards tracking DAX 40, MDAX and Hidden Champions hiring signals
- **Competitive hiring analysis** — monitor competitors' postings and catch expansion plans before they hit the press
- **Employer branding analysis** — extract benefits arrays to compare Homeoffice, Jobrad, Weiterbildungsbudget offerings
- **Regional labor-market research** — quantify hiring density across Berlin, München, Hamburg and all 16 Bundesländer
- **Job board aggregators** — ingest normalized listings with company logos and apply URLs into your metasearch

### Pricing

| Event | Price |
|-------|-------|
| Actor start | $0.001 |
| Search-only result (`includeJobDetails: false`) | $0.003 / result |
| Full detail result (`includeJobDetails: true`) | $0.005 / result |

**Example**: 1,000 jobs with full details = **$5.00** · 10,000 jobs = **$50.00**

Compare to manual data entry at EUR 0.50-1.00 per record, or commercial DACH job-data feeds at EUR 500-2000/month.

### Issues & Feedback

Facing an issue or need a new filter or field? [Open an issue on the Issues tab](https://console.apify.com/actors/hig8WrdPajcLXGL8G/issues) — we respond within 24 hours and welcome feature requests.

### Related Actors

Complete your DACH + European job-board coverage with our full suite:

- [StepStone.de Scraper](https://apify.com/santamaria-automations/stepstone-de-scraper) — Germany's #1 job board
- [Arbeitsagentur.de Scraper](https://apify.com/santamaria-automations/arbeitsagentur-de-scraper) — Germany's federal employment agency
- [Stellenanzeigen.de Scraper](https://apify.com/santamaria-automations/stellenanzeigen-de-scraper) — German national job board
- [Jobs.ch Scraper](https://apify.com/santamaria-automations/jobs-ch-scraper) — Switzerland's #1 job site
- [Karriere.at Scraper](https://apify.com/santamaria-automations/karriere-at-scraper) — Austria's leading job board
- [LinkedIn Jobs Scraper](https://apify.com/santamaria-automations/linkedin-scraper) — Global professional network

Or browse all [santamaria-automations actors](https://apify.com/santamaria-automations) for the full scraping suite.

# Actor input Schema

## `searchQueries` (type: `array`):

One or more search keywords (e.g. 'Entwickler', 'Projektleiter'). Each keyword runs as a separate search. Results are deduplicated across queries.

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

Single search keyword (backward compatible). Use 'searchQueries' for multiple keywords.

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

City or region name (e.g. 'Berlin', 'München', 'Hamburg', 'Bayern'). Leave empty to search all of Germany.

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

Search radius in kilometres around the given location. Ignored when no location is set.

## `category` (type: `string`):

Optional industry category filter (free text, e.g. 'IT', 'Vertrieb', 'Pflege').

## `employmentType` (type: `string`):

Filter by employment type

## `maxResultsPerQuery` (type: `integer`):

Maximum results per search keyword. Each query gets up to this many results (deduplicated).

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

Total cap across all queries. Set to 0 for unlimited (each query limited by maxResultsPerQuery).

## `maxAgeDays` (type: `integer`):

Filter out jobs older than N days. Stellenmarkt.de returns stale listings by default; this filter keeps only fresh jobs. Default 30.

## `includeJobDetails` (type: `boolean`):

When enabled (recommended), visits each job detail page to extract full description, requirements, responsibilities, benefits, and apply URL. When disabled, only listing-page data is returned (faster, cheaper).

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

Apify proxy settings for avoiding rate limits

## Actor input object example

```json
{
  "searchQueries": [
    "Entwickler"
  ],
  "searchQuery": "Entwickler",
  "location": "Berlin",
  "radius": 0,
  "employmentType": "",
  "maxResultsPerQuery": 50,
  "maxResults": 0,
  "maxAgeDays": 30,
  "includeJobDetails": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `jobListings` (type: `string`):

Dataset containing scraped job listings

# 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 = {
    "searchQueries": [
        "Entwickler"
    ],
    "location": "Berlin",
    "maxResultsPerQuery": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("santamaria-automations/stellenmarkt-de-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 = {
    "searchQueries": ["Entwickler"],
    "location": "Berlin",
    "maxResultsPerQuery": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("santamaria-automations/stellenmarkt-de-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 '{
  "searchQueries": [
    "Entwickler"
  ],
  "location": "Berlin",
  "maxResultsPerQuery": 50
}' |
apify call santamaria-automations/stellenmarkt-de-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,santamaria-automations/stellenmarkt-de-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/hig8WrdPajcLXGL8G/builds/BaDwO1hrLltJZ6CWX/openapi.json
