# Changelog of AMS Austria Job Scraper — Public Employment Service Jobs (`blackfalcondata/ams-austria-job-scraper`) Actor

- **URL**: https://apify.com/blackfalcondata/ams-austria-job-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/blackfalcondata/ams-austria-job-scraper.md

## Changelog

### 1.2.3 — 2026-07-02

#### Changed

- Incremental mode now forgets jobs that have been gone for more than ~2 months,
  so its change-tracking state stays small over very long-running schedules instead
  of growing without bound. Reposts are still detected within that window; a job that
  reappears after it is simply treated as new.

### 1.2.2 — 2026-07-02

#### Fixed

- **Incremental mode could run out of memory while saving its change-tracking
  state** once that state had grown large over many runs. The run stopped before
  finishing (and had to be restarted manually), and because the state never saved,
  each restart returned — and charged for — the same jobs again. The change-tracking
  state is now much smaller, so incremental runs complete reliably and only return
  new or changed jobs on repeat runs.

#### Changed

- Expired-job records emitted by incremental mode (`emitExpired`) no longer repeat
  the full job description; they keep all other fields (title, employer, location,
  salary, dates, URL).

### 1.2.1 — 2026-06-21

#### Fixed

- **Incremental mode did not de-duplicate when starting from several URLs.** With
  multiple Start URLs, the run-to-run state record could exceed the storage key-length
  limit, so saving the state failed and each run returned the same listings again
  (a second identical run should return 0). State now saves reliably regardless of how
  many Start URLs are provided, so repeat runs only return new or changed jobs. A
  state-storage problem now degrades to a full result set with a warning instead of
  failing a run whose results were already returned.

### 1.2.0 — 2026-06-20

#### Added

- `startUrls` — start from any number of jobs.ams.at URLs. Paste **search-result
  pages** (each runs as its own search, with the URL's filters applied) and/or
  **single job links** (fetched directly). Explicit fields override matching URL
  filters; results are merged and de-duplicated by job id.

#### Fixed

- **Incremental mode failed instantly (`AMS-4002`) when run from Apify Store**
  under limited permissions: the actor tried to open a pre-existing named state
  store that only the owner can access, so a Store user's run was denied before
  scraping started. Now limited-permission runs use their own state store
  (created on first run, reused afterwards), and any state-store problem degrades
  to a full (non-persisted) result set with a warning instead of failing the run.

### 1.1.0 — 2026-06-03

#### Removed

- The optional `includeContact` enrichment path and its output fields
  (`contactName`, `contactEmail`, `contactPhone`, `employerAddress`, `applyUrl`,
  `applyMethod`). Application emails and phone numbers remain available via the
  `extractedEmails` and `extractedPhones` fields (see Fixed below).

#### Fixed

- `extractedEmails` now reliably surfaces emails found in the job description —
  previously it could return an empty list even when an email was present.

#### Added

- `disabilityOnly` filter — only listings suitable for people with disabilities.
- `careerChange` filter — only listings suitable for career changers (Quereinsteiger).
- `sortBy` — result ordering: relevance (default), date, or distance.

### 0.1.x — 2026-04-14

- Added: `descriptionHtml`, `descriptionMarkdown` output fields (triple-format descriptions for RAG/LLM pipelines)
- Added: `contentHash` output field (SHA-256 hash of content-identifying fields)

### 0.1.x — 2026-04-14

- Added: cross-run repost detection (`isRepost`, `repostOfId`, `repostDetectedAt`)
- Added: `skipReposts` input to exclude detected reposts from output

### 1.0.39 — 2026-03-20

#### Added

- Contact enrichment — email, phone, contact person name, application URL and method
- Employer social media links (LinkedIn, XING, Instagram, Facebook, YouTube)
- Employer general contact information
- Incremental mode — only new or modified jobs since last run
- Smart employer name resolution — brand names like "BMW", "telekom", "Bosch" resolved automatically
- Compact output mode for AI-agent and MCP workflows (~80% smaller payload)
- Description truncation (`descriptionMaxLength`) for context window control
- MCP-ready via Apify's MCP server — documented usage with Cursor, VS Code, Claude Desktop

#### Improved

- Smarter employer name resolution
- More output fields and input parameters

### 1.0.14 — 2026-03-19

#### Added

- Full job descriptions and employer profiles with `includeDetails` option
- Federal state (Bundesland) filter — all 16 German states
- Employer company profiles: description, website, size, benefits, founding year
- Geocoordinates (latitude/longitude) on all listings
- 6 work type filters: full-time, part-time, home office, mini job, shift work
- Job type filter: employment, apprenticeship, internship, self-employment
- Employer name filter
- Recency filter (published within last N days)
- Radius search (km around location)
- Automatic deduplication across paginated results

#### Fixed

- Disability-friendly field now correctly reads source data
- Listing count claim corrected to match verified data
- Salary field clarified as type classification, not monetary amount

### 1.0.0 — 2026-03-19

#### Added

- Initial release
- Search across 1M+ German job listings
- Up to 43 output fields per listing
- 13 input filters
