Stellenanzeigen.de Scraper - German Job Portal
Pricing
from $2.50 / 1,000 job search results
Stellenanzeigen.de Scraper - German Job Portal
Scrapes job listings from Stellenanzeigen.de, one of Germany's Top 3 job portals. Extracts comprehensive job data including title, company, location, salary, requirements, and contact information with support for direct URL checking and search-based scraping.
Pricing
from $2.50 / 1,000 job search results
Rating
0.0
(0)
Developer

Alessandro Santamaria
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Stellenanzeigen.de Job Scraper
Scrapes job listings from Stellenanzeigen.de - one of Germany's Top 3 job portals with over 10,000 active job postings across all industries.
HTTP-only, ultra-lightweight - No browser needed. Runs on just 128 MB of memory for extremely low compute costs.
Three Scraping Modes
| Mode | Input | Output | Use Case |
|---|---|---|---|
| SEARCH MODE | Search query + filters | Basic job data from SERP | Fast discovery of new jobs |
| SEARCH + DETAILS MODE | includeJobDetails: true | Full job data with descriptions | Complete data collection in one run |
| DIRECT URLS MODE | directUrls: [...] | Full job data + job_status | Still-alive checks, re-scraping specific jobs |
Features
- Germany-wide coverage - Search jobs in any city, region, or Bundesland
- Advanced filters - Filter by Bundesland, employment type, industry, radius, and posting date
- No login required - Uses public HTTP endpoints
- Job status checks - Verify if jobs are still online, expired, or removed
- Rich data extraction - Title, company, location, salary, description, contact email/phone, company logo, and more
- Ultra-low resource usage - HTTP-only, no Chrome browser needed (128 MB)
- German state detection - Automatically detects Bundesland codes from city names
- JSON-LD parsing - Extracts structured JobPosting data from detail pages
- Company logos - Extracts company logo URLs from search results and detail pages
- Contact extraction - Finds application email and phone from job descriptions
- Standardized output - Consistent
JobListingschema across all job scrapers - Pay-per-result pricing - Only pay for results you get
- Rate-limited - Respectful delays between requests
- Proxy support - Built-in proxy rotation for reliability
Pricing
This actor uses pay-per-result pricing. You only pay for the data you receive.
| Event | Price | Description |
|---|---|---|
| SERP result | $0.008 | Each job from search results (search-only mode) |
| Detail result | $0.020 | Each job with full details (detail mode or direct URLs) |
Examples:
- 100 search results = $0.80
- 50 jobs with full details = $1.00
- 200 search results + 50 detailed = $2.60
No monthly fees. No minimum spend. Compute costs are minimal (~$0.001/run).
Input
| Field | Type | Description | Default |
|---|---|---|---|
directUrls | array | Direct job URLs to scrape (skips search mode) | [] |
searchQuery | string | Job title, skills, or keywords (Beruf) | "" |
location | string | City or region (Arbeitsort) | "" |
bundesland | string | German state code: BW, BY, BE, BB, HB, HH, HE, MV, NI, NW, RP, SL, SN, ST, SH, TH | "" |
radius | integer | Search radius in km around location (0-100) | 0 |
employmentType | string | Filter: vollzeit, teilzeit, ausbildung, praktikum, befristet | "" |
industry | string | Industry/sector filter (Branche) | "" |
datePosted | string | Filter by posting age: 1 (24h), 7 (week), 30 (month) | "" |
maxResults | integer | Maximum number of job listings to scrape (1-10000) | 10 |
includeJobDetails | boolean | Fetch full job descriptions from detail pages (slower but richer data) | true |
proxyConfiguration | object | Apify proxy settings | Datacenter |
Mode 1: SEARCH MODE (Fast)
Search for jobs using keywords and filters:
- Use case: Discover new jobs, market analysis, broad searches
- Speed: Very fast - pure HTTP requests
- Output: Basic job data from search cards + company logo
- Cost: $0.008 per result
{"searchQuery": "Software Engineer","location": "Berlin","maxResults": 100,"includeJobDetails": false}
Mode 2: SEARCH + DETAILS MODE (Complete Data)
Search with includeJobDetails: true to fetch full descriptions:
- Use case: Complete data collection in one run
- Speed: Moderate - fetches detail page for each job via HTTP
- Output: Full descriptions, salary, contact info, company data
- Cost: $0.020 per result
{"searchQuery": "Marketing Manager","location": "München","bundesland": "BY","maxResults": 50,"includeJobDetails": true}
Mode 3: DIRECT URLS MODE (Still Alive Checks)
When directUrls is provided, the scraper operates in direct mode:
- Skips search phase - Goes directly to provided job URLs
- Job status detection - Returns
online,offline,expired, orunknown - Full data extraction - Same as detail page scraping
- Use case: Periodic "still alive" checks, re-scraping specific jobs
- Cost: $0.020 per result
{"directUrls": ["https://www.stellenanzeigen.de/job/software-engineer-berlin-12345678/","https://www.stellenanzeigen.de/job/marketing-manager-muenchen-23456789/"]}
Filter Options
Employment Type (Beschaeftigungsart)
| Value | Description |
|---|---|
vollzeit | Full-time (Vollzeit) |
teilzeit | Part-time (Teilzeit) |
ausbildung | Apprenticeship (Ausbildung) |
praktikum | Internship (Praktikum) |
befristet | Fixed-term contract (Befristet) |
Date Posted
| Value | Description |
|---|---|
1 | Posted in last 24 hours |
7 | Posted in last 7 days |
30 | Posted in last 30 days |
German States (Bundeslaender)
| Code | State |
|---|---|
BW | Baden-Wuerttemberg |
BY | Bayern |
BE | Berlin |
BB | Brandenburg |
HB | Bremen |
HH | Hamburg |
HE | Hessen |
MV | Mecklenburg-Vorpommern |
NI | Niedersachsen |
NW | Nordrhein-Westfalen |
RP | Rheinland-Pfalz |
SL | Saarland |
SN | Sachsen |
ST | Sachsen-Anhalt |
SH | Schleswig-Holstein |
TH | Thueringen |
Example Input
Basic Search (IT Jobs in Berlin)
{"searchQuery": "Software Engineer","location": "Berlin","maxResults": 100}
Recent Full-Time Jobs in Bayern
{"searchQuery": "Entwickler","bundesland": "BY","employmentType": "vollzeit","datePosted": "7","maxResults": 50}
Jobs Near Munich (50km Radius)
{"searchQuery": "Data Scientist","location": "München","radius": 50,"maxResults": 100,"includeJobDetails": true}
Apprenticeships in NRW
{"searchQuery": "Fachinformatiker","bundesland": "NW","employmentType": "ausbildung","maxResults": 200}
Direct URLs - Still Alive Check
{"directUrls": ["https://www.stellenanzeigen.de/job/software-engineer-berlin-12345678/","https://www.stellenanzeigen.de/job/marketing-manager-muenchen-23456789/"]}
Output
Each job listing follows the standardized JobListing schema:
Search Mode Output
{"id": "16175643","title": "Senior Software Engineer (m/w/d)","company": "Tech GmbH","location": "Berlin","canton": "BE","country": "DE","job_status": "online","top_listing": false,"employment_type": "full-time","company_logo_url": "https://logos.jobstatic.de/g4j/logo/12345.png","company_benefits": ["Homeoffice", "Flexible Arbeitszeiten", "Firmenwagen"],"posted_at": null,"source_url": "https://www.stellenanzeigen.de/job/senior-software-engineer-berlin-16175643/","source_platform": "stellenanzeigen.de","scraped_at": "2026-03-09T08:30:00.000Z"}
Detail Mode Output (additional fields)
{"id": "16175643","title": "Senior Software Engineer (m/w/d)","company": "Tech GmbH","location": "Berlin, Bundesland Berlin","canton": "BE","country": "DE","work_address": "Friedrichstr. 123 10117 Berlin","job_status": "online","employment_type": "full-time","salary_text": "60.000 - 80.000 EUR/YEAR","salary_min": 60000,"salary_max": 80000,"salary_currency": "EUR","description_snippet": "Wir suchen einen erfahrenen Software Engineer...","description_full": "Full job description with all details...","remote_option": "hybrid","posted_at": "2026-03-05T00:00:00.000Z","expires_at": "2026-05-05T00:00:00.000Z","contact_email": "bewerbung@company.de","contact_phone": "+49301234567","apply_url": "https://www.stellenanzeigen.de/job/...","company_url": "https://www.stellenanzeigen.de/unternehmen/tech-gmbh/","company_logo_url": "https://logos.jobstatic.de/g4j/logo/12345.png","company_benefits": ["Homeoffice", "Flexible Arbeitszeiten"],"source_url": "https://www.stellenanzeigen.de/job/senior-software-engineer-berlin-16175643/","source_platform": "stellenanzeigen.de","scraped_at": "2026-03-09T08:30:00.000Z"}
Output Fields
Core Fields (always available)
| Field | Description |
|---|---|
id | Stellenanzeigen.de job ID |
title | Job title |
company | Company name |
location | City/location as displayed |
country | Country code (always DE) |
canton | German state code (BW, BY, BE, etc.) |
job_status | Job availability: online, offline, expired, unknown |
top_listing | Whether job is a promoted/premium listing |
employment_type | full-time, part-time, contract, apprenticeship, internship |
company_logo_url | Company logo image URL |
company_benefits | Array of benefits/perks from search card |
source_url | Link to job posting on stellenanzeigen.de |
source_platform | Always stellenanzeigen.de |
scraped_at | Timestamp when job was scraped |
Detail Fields (with includeJobDetails: true or Direct URLs mode)
| Field | Description |
|---|---|
work_address | Full work address (street, postal code, city) |
description_snippet | First 500 characters of description |
description_full | Complete job description (cleaned text) |
salary_text | Salary as displayed (e.g., "60.000 - 80.000 EUR/YEAR") |
salary_min | Minimum salary (numeric) |
salary_max | Maximum salary (numeric) |
salary_currency | Currency code (usually EUR) |
remote_option | remote, hybrid, onsite (detected from description) |
posted_at | Publication date (ISO 8601) |
expires_at | Expiration date (ISO 8601) |
contact_email | Application email from description |
contact_phone | Contact phone from description |
apply_url | Application URL |
company_url | Company profile URL on stellenanzeigen.de |
Usage
Via Apify Console
- Go to the actor page
- Configure input parameters
- Click "Start"
- Download results from the Dataset tab (JSON, CSV, Excel)
Via API
curl -X POST "https://api.apify.com/v2/acts/santamaria~stellenanzeigen-de-scraper/runs" \-H "Authorization: Bearer YOUR_API_TOKEN" \-H "Content-Type: application/json" \-d '{"searchQuery": "Software Engineer","location": "Berlin","maxResults": 100}'
Via Apify SDK (Node.js)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('santamaria-automations/stellenanzeigen-de-scraper').call({searchQuery: 'Data Scientist',location: 'München',bundesland: 'BY',maxResults: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Found ${items.length} jobs`);
Still Alive Checks via API
// Check if previously scraped jobs are still onlineconst run = await client.actor('santamaria-automations/stellenanzeigen-de-scraper').call({directUrls: ['https://www.stellenanzeigen.de/job/software-engineer-berlin-12345678/','https://www.stellenanzeigen.de/job/marketing-manager-muenchen-23456789/',]});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.forEach(job => {console.log(`Job ${job.id}: ${job.job_status}`);// Output: "Job 12345678: online" or "Job 23456789: expired"});
Performance
| Metric | Search Mode | Detail Mode |
|---|---|---|
| Speed | ~50-100 jobs/min | ~30-40 jobs/min |
| Memory | 128 MB | 128 MB |
| Compute cost | ~$0.001/run | ~$0.002/run |
- Rate limiting: 2 seconds between search pages, 1 second between detail pages
- Retry logic: Automatic retries with exponential backoff
- Zero browser overhead: Pure HTTP requests with TLS fingerprinting
Proxy Recommendations
Stellenanzeigen.de has Cloudflare protection. For best results:
- Use Datacenter proxies for most runs (default configuration)
- Residential proxies only needed if datacenter gets blocked on very large runs
- Keep
maxResultsreasonable for consistent results
{"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["BUYPROXIES94952"]}}
Common Use Cases
- German job market analysis - Track hiring trends across Bundeslaender and industries
- Competitive intelligence - Monitor which companies are hiring for specific roles
- Job aggregation - Build job search platforms with German job data
- Still-alive monitoring - Check if previously scraped jobs are still active
- Salary research - Analyze compensation ranges from job postings
- Regional analysis - Compare job markets across German states
- Apprenticeship tracking - Monitor Ausbildung openings by region
How It Works
Technical Architecture
This actor is 100% HTTP-only - no browser automation needed. It uses:
- got-scraping - HTTP client with TLS fingerprinting for browser-like requests
- Cheerio - Fast HTML parser for extracting structured data from search pages
- JSON-LD - Parses
@type: "JobPosting"structured data from detail pages
Search Mode (Modes 1 & 2)
- Queries stellenanzeigen.de search with your filters
- Parses job cards from HTML response (using
data-jobidattribute) - Optionally fetches each job's detail page for JSON-LD data
- Validates each job against the schema before saving
- Paginates automatically until
maxResultsis reached
Direct URLs Mode (Mode 3)
- Fetches job data from each provided URL
- Parses JSON-LD JobPosting data
- Detects job status (online, expired, offline)
- Returns full job data with status field
Limitations
- Stellenanzeigen.de shows promoted/premium listings first in search results, regardless of location filter
- Some fields (salary, contact info) may not be available for all job postings
- Contact information is extracted from description text only (not all jobs include it)
- Cloudflare protection may block requests without proxy - use datacenter proxy for reliability
- German state codes are automatically detected from city names but depend on the city database coverage
Legal Notice
This actor scrapes publicly available job listings from stellenanzeigen.de's public job search. It does not access any data behind authentication.
Users are responsible for ensuring their use complies with stellenanzeigen.de's Terms of Service and applicable laws in their jurisdiction.
Feedback & Support
Have a feature request, found a bug, or need help? Open an issue - we actively monitor and respond.
Part of the Santamaria Job Scrapers Suite - Professional-grade job data for the DACH region and beyond.
Need help with integration, aggregation, or custom scraping solutions? Contact us at contact@alessandrosantamaria.com