# Changelog of Freelancer.nl Scraper — Dutch ZZP Projects (`blackfalcondata/freelancer-nl-opdrachten-scraper`) Actor

- **URL**: https://apify.com/blackfalcondata/freelancer-nl-opdrachten-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/blackfalcondata/freelancer-nl-opdrachten-scraper.md

## Changelog

### 0.1.x — 2026-09-19

- Fixed: in incremental mode, a run with Max Age (`daysOld`) set no longer reports opdrachten that are still online as `EXPIRED` once they grow older than the window. A run limited by Max Age cannot see older listings, so it skips expiry detection; a run without Max Age still reports expired listings as before.
- Changed: Max Age no longer starts a separate incremental history. Runs with and without it share one history for the same search, so changing the value no longer re-delivers every listing as `NEW`. If you used incremental mode with Max Age set, your next run rebuilds the baseline once.

### 0.1.x — 2026-07-02

- Fixed: restored reliability after freelancer.nl changed its site structure. Runs were failing to return results; listings and full details are collected correctly again.

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

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

Initial release.

- Scrapes all active freelance and ZZP listings from freelancer.nl
- Uses AJAX endpoint (`X-Requested-With: XMLHttpRequest`) for 58% bandwidth reduction vs full HTML
- Extracts title, location, tags, reactions count, published age per listing
- Optional detail page fetch for full description (~3500 chars)
- Incremental mode: tracks new, updated, and expired listings across runs
- Compact output mode for AI/MCP workflows
