# Changelog of StepStone Jobs Scraper (`devilscrapes/stepstone-jobs-scraper`) Actor

- **URL**: https://apify.com/devilscrapes/stepstone-jobs-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/devilscrapes/stepstone-jobs-scraper.md

## Changelog

All notable changes to this Actor are documented here.

### 0.0.2 — 2026-09-24

- Fix: `slugify()` percent-encoded a literal `/` as `%2F`, which
  stepstone.de's own edge rejects with HTTP 400 before the app ever sees
  the request — a non-retryable status, so any keyword or location
  containing `/` (e.g. "UI/UX Designer", or "Frankfurt/Main", the common
  way to disambiguate that city from Frankfurt/Oder) failed every page of
  every keyword and made the whole run exit non-zero (REQ-7's "every
  request failed" path). Root-caused via live reproduction against
  stepstone.de (no code path in `recent_failures` — the single 30-day
  FAILED run was a customer run, invisible to `/v2/acts/{id}/runs`).
  Fix: treat `/` as a word separator, collapsed together with whitespace
  into a single hyphen, matching how StepStone's own generated slugs
  spell it (confirmed live: `/jobs/ui-ux-designer` and
  `/jobs/python/in-frankfurt-main` both return 200 with a valid
  `__PRELOADED_STATE__` payload).

### 0.0.1 — Unreleased

- Scaffolded the Actor skeleton: `ActorInput`/`ResultRow` Pydantic
  models, `.actor/` schemas, PPE pricing placeholders, and store-listing
  copy. The real StepStone scraping pipeline (`src/client.py`,
  `src/parser.py`, `src/scraper.py`) is stubbed, not yet implemented —
  `src/main.py` currently pushes a single `placeholder: true` record so
  the Actor boots and exits cleanly.
