Stellenanzeigen.de Scraper - German Job Listings · $1.5/1K
Pricing
from $0.75 / 1,000 result items
Stellenanzeigen.de Scraper - German Job Listings · $1.5/1K
Extract job postings from stellenanzeigen.de (Germany) by keyword and state: title, employer, place, job type, salary range, posting date, URL, newest first.
Pricing
from $0.75 / 1,000 result items
Rating
0.0
(0)
Developer
Yusuke Suda
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
Stellenanzeigen.de Scraper — German job listings by keyword and Bundesland
Extract job postings from stellenanzeigen.de (Germany) by keyword and state: title, employer, place, job type, salary range, posting date, URL, newest first.
stellenanzeigen.de is one of Germany's long-running job boards, run by stellenanzeigen.de GmbH & Co. KG in Munich, with close to 30,000 postings online at any time. This Actor turns its search results into a clean table: the job title, the employer, the town, full- or part-time, the salary range where the posting shows one, and the day it went online.
Press Start. The defaults return the newest Pflege postings across Germany, with no configuration needed.
What a row looks like
{"title": "Pflegefachkraft (m/w/d) als Nachtwache für die Versorgung von Menschen mit Behinderung - Gestalte mit uns die Zukunft!","company": "Stiftung Innovation & Pflege - Herrenberg - GWW","location": "Sindelfingen","employment_type": "Full-time, Part-time","salary_min": 4050,"salary_max": 4550,"salary_currency": "EUR","salary_period": "month","posted_at": "2026-09-23T02:00:00+02:00","source_url": "https://www.stellenanzeigen.de/job/pflegefachkraft-m-w-d-als-nachtwache-fuer-die-versorgung-von-menschen-mit-behinderung-gestalte-mit-uns-die-zukunft-sindelfingen-sde-112249/","external_id": "SDE-112249"}
company is the employer as the site names it, often a care provider, a
public employer or a recruitment agency. Contact persons, email addresses and
phone numbers are never collected. The site's own data carries the
application email for every posting, and this Actor does not read it. It also
leaves out the office postcode and map point, and never opens the job text.
Where the site hides the employer ("Unternehmen aus dem Bereich: …"), company
is empty.
A posting in several places lists each town once. A posting for all of
Germany says Deutschland, and those postings also come up in a Bundesland
search, because the site includes them there.
Only what you searched for
Below its matches, stellenanzeigen.de shows "ähnliche Jobs": similar postings that did not match your keyword. Under "Pflege" that can mean an export clerk or a sales manager. This Actor stops where the matches end, and the count it reports is the site's count of matches. So a search that finds nothing returns no rows, not a page of similar jobs.
When a posting went online
posted_at is the day the posting shows on the site, on German time. Many
postings carry only the day, which appears as midnight German time, or 02:00
in summer when the site stamps midnight UTC. So postedAfter compares by day.
The list is read newest first, so a run with postedAfter stops as soon as the
postings are older. A posting the employer published again shows the new day.
What people use it for
Tracking which employers in a Land are hiring, for a trade or a skill, week by week. Salary benchmarks from the ranges employers publish (about six in ten care postings show one). Feeding a job board or a newsletter with German openings in a niche. Labour-market research that needs structured rows, not a page of links.
Input
| Field | What it does |
|---|---|
searchTerms | Keywords, e.g. Pflege, Python, Buchhaltung. Each keyword is its own search. Leave empty for everything. |
location | A Bundesland: Bayern, Nordrhein-Westfalen (or NRW), Berlin, Baden-Württemberg and so on. Or one of the site's own place ids, as its search URL shows them after locationIds=, e.g. M-DE-1494 for Stuttgart, which the site widens by 30 km. Leave empty for all of Germany. |
postedAfter | Only keep postings from this day on, e.g. 2026-09-20. Handy for daily runs that should return just what is new. |
sinceDays | The same, as a rolling window: 1 keeps yesterday and today, 7 the last week. Set it once on a scheduled task and never edit the date again. |
maxItems | Hard stop, so your bill is predictable. |
proxyConfiguration | Off by default. Most runs do not need one. |
Town names are not accepted as text, because the site searches by its own place ids and its place lookup is not open to crawlers. A Bundesland or an id from the site's URL always works.
How much one run returns
stellenanzeigen.de serves 25 postings per page and at most 10,000 per search (400 pages). A search that reaches that limit is reported as capped, not as complete. To go beyond it, split by keyword or Bundesland across runs.
The site does not keep a fixed order for postings from the same day between
one page and the next. A posting can come back on two pages, and this Actor
removes the repeat, so a long crawl can miss a few postings from the same day.
A daily run with postedAfter — or sinceDays: 1 on a scheduled task — is
the reliable way to catch everything new.
Pricing
$1.50 per 1,000 listings, dropping to $0.75 per 1,000 on higher Apify plans, plus $0.005 each time a run starts. Platform usage is not passed on to you.
You are charged for rows you actually receive. If you set a maximum charge for the run, it stops cleanly at that limit instead of overshooting it.
Scope and limits
Public listings only, from the search results pages (/suche/), which
stellenanzeigen.de's robots.txt allows. The paths it disallows (place
suggestions, job views, print pages, application flows, tracking) are never
requested, and neither is the job text. remote, workload, apply_url and
categories ship always empty, so that one parser works across every job
Actor here.
Every page is checked against what you asked for: the keyword, the place, the newest-first order and the page number. The site answers an unknown place id with postings from all of Germany. When a place id is unknown, or a Bundesland comes back under another name, the run fails rather than return rows you did not ask for and charge you for them.
If stellenanzeigen.de changes its page structure, the run goes red. It does not return zero rows and report success. A silent scraper is worse than a broken one, because you find out weeks later.
A run that is blocked or cut short partway also goes red, even though the rows it did collect are in the dataset and yours to keep. Red here means "this is not the complete answer", not "you lost the data". On a schedule, a run that quietly came back short is the thing you most need to hear about.
Every run also publishes the site's own result count next to the rows it delivered, so you can see "100 rows of 434 the site reports" without going back to the site to check. That number is what the site says, not a promise about what one run returns.
Same shape, other sites
This Actor shares its output shape with the Jobware Scraper (Germany), the jobs.at Scraper (Austria), the jobs.ch and JobScout24 Scrapers (Switzerland) and the Jobindex Scraper (Denmark). A parser you write for one keeps working on the others, and on the countries added next.
Support
Open an issue on this Actor with the run ID and your input. Answered within one business day.