Python CLI for the German Stepstone market:
- Search job listings via the Stepstone mobile listings API
- Fetch a job ad (HTML) and extract structured details (incl. salary range if present)
- Optional
--juniormode that filters out senior/lead roles by scanning the German job description - By default, search results exclude
WerkstudentandPraktikum/Internshiproles (disable with--include-student-jobs)
This is an unofficial tool based on reverse-engineered mobile app traffic. Endpoints/parameters can change at any time.
- Python 3.11+ (tested with the repo venv on Linux)
Create a virtualenv (recommended):
python -m venv .venv
./.venv/bin/python -m pip install -U pipInstall dependencies:
./.venv/bin/python -m pip install -r requirements.txtThe CLI reads config.json by default (ignored by git). Start from the template:
cp config.example.json config.jsonEdit config.json:
search.what: search termsearch.where: location (city/region)search.radius: radius in kmsearch.worktype: work type codes (optional)search.limit/search.offset
Help:
./.venv/bin/python -m stepstone_cli --helpSearch (default sort is newest first):
./.venv/bin/python -m stepstone_cli search --limit 20
./.venv/bin/python -m stepstone_cli search --query "Junior Python" --where Berlin --radius 10Include internships / working-student roles (disables the default filter):
./.venv/bin/python -m stepstone_cli search --include-student-jobsSearch output as a plain list:
./.venv/bin/python -m stepstone_cli search --limit 20 --listSort by relevance instead of date:
./.venv/bin/python -m stepstone_cli search --relevanceFilter: only jobs newer than a given date (UTC):
./.venv/bin/python -m stepstone_cli search --newer-than 2026-02-01Filter: minimum salary (EUR/year). Uses salaryDetails from search results (MONTHLY is converted via *12):
./.venv/bin/python -m stepstone_cli search --min-salary 60000Experience filter:
--first-jobusesexperience=90001("No Experience / First Job")--experience-requiredusesexperience=90002("Experience required")
./.venv/bin/python -m stepstone_cli search --first-job
./.venv/bin/python -m stepstone_cli search --experience-requiredJunior mode (fetches each job ad and drops postings that look senior/lead based on German keywords in title/description):
./.venv/bin/python -m stepstone_cli search --limit 30 --junior
./.venv/bin/python -m stepstone_cli search --limit 30 --junior --workers 12Show a job ad by ID (extracts JSON-LD JobPosting; salary is extracted from JSON-LD or Stepstone SSR props if present):
./.venv/bin/python -m stepstone_cli show 13462913
./.venv/bin/python -m stepstone_cli show 13462913 --json- The Stepstone mobile API key and request headers are hardcoded in
stepstone_cli/api.py. config.jsonis intentionally minimal; most Stepstone plumbing parameters are constants in code.