# Changelog of Emprego SAPO Scraper — Portugal Jobs (`blackfalcondata/emprego-sapo-scraper`) Actor

- **URL**: https://apify.com/blackfalcondata/emprego-sapo-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/blackfalcondata/emprego-sapo-scraper.md

## Changelog

### 0.1.2 — 2026-10-07

- Fixed: `startUrls` now accepts the search URLs emprego.sapo.pt actually serves (`https://emprego.sapo.pt/offers`, `/offers?pesquisa=...&local=...`). A pasted listing URL used to fail the run. Other filters in the URL (category, work hours, work model, …) are applied too.
- Fixed: the `location` and `workHours` filters are applied again. The site had stopped honouring the filter names the actor sent, so filtered runs returned the unfiltered listing.
- Fixed: `location` without a `query` now browses that district instead of all of Portugal.
- Fixed: a search no longer ends with zero results when the site answers a request with a temporary "session expired" error; the request is retried.
- Changed: `location` accepts plain district names ("Viana do Castelo", "Setúbal") as well as slugs.

### 0.1.1 — 2026-06-20

- Fixed: runs with detail enrichment no longer fail when some listings lack a title. Detail results are now matched to the correct record, and a single bad record can never abort the whole run.

### 0.1.x — 2026-05-01

#### Added — `startUrls` (multi-search-URL support)

- Paste raw search URLs from emprego.sapo.pt — each URL becomes one search
  task; results merged and deduped by JobId across all tasks.
- Recognized format: `/empregos?keywords=...&location=...`
- Detail URLs (`/oferta-emprego/...`) are explicitly rejected.

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

- Added: `descriptionHtml`, `descriptionMarkdown` output fields (triple-format descriptions for RAG/LLM pipelines)
- Added: `contentHash` output field (SHA-256 stable digest 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

### \[0.1.0] — 2026-04-12

Initial release.

- Extract structured job listings from emprego.sapo.pt via the `/offers/search` JSON API
- Search-result fields: title, company, location, district, employmentType, workModel, postedAt, url
- Detail enrichment: full description, validThrough, educationLevel, experienceLevel, salaryCurrency, industry
- Filters: district, work hours (full-time / part-time), sort order, daysOld
- Parallel search-page fetching with dedup across pages
- Incremental mode: emit only NEW, UPDATED, and EXPIRED jobs vs a prior run
- Compact output mode for minimal payloads
- Description truncation via `descriptionMaxLength`
