# Changelog of Joinhandshake Com Scraper (`blackfalcondata/joinhandshake-com-scraper`) Actor

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

## Changelog

All notable changes to this Actor are documented here.

### \[0.1.2] — 2026-10-28

#### Fixed

- With full job details turned off, every job now has its title, company and location. Jobs the search page lists without a preview card were delivered as empty rows; their job page is now read instead.
- Incremental runs no longer re-deliver (and bill) an unchanged job as UPDATED just because Handshake listed it with or without a preview card this time.
- A real change to a job's title, company, city or salary is still delivered as UPDATED when the job switches between preview and full-page form, and a description change seen while the job showed only as a preview is delivered when its full page is read again. State saved by earlier versions no longer triggers a one-off false UPDATED on such a switch.
- A changed job description is now delivered as UPDATED even when a title, company, city or salary change was delivered from the job's preview card in between. Previously that description change could be skipped for good.
- Two overlapping incremental runs on the same state can no longer both deliver (and bill) the same jobs: a long run whose claim on the state has expired or been taken over now stops delivering instead of reviving it.

### \[0.1.1] — 2026-10-27

#### Fixed

- Leaving the search empty (browse all jobs) or entering only a city now runs, as the form promises.
- Max results counts delivered jobs, so incremental runs reach new jobs further down the list.
- Browse-all reads every page of the job list, not just the first one.
- Jobs beyond a search page's 200-listing limit, or on a page that failed to load, are no longer reported as expired.
- Jobs whose detail page is gone are no longer delivered as empty rows.
- A run where every search fails now fails, with a clear message, instead of reporting "no results".
- Description length limit now also applies to the HTML and Markdown formats, and cuts them without breaking tags or formatting.
- Long incremental runs keep their lock, and release it on every exit.
- A job whose page could not be read is no longer reported as expired.
- An incremental run that loses its lock mid-run stops delivering before the next write, so no job is delivered twice.
- Browse-all runs that read every page can report expired jobs again.
- With "emit expired" and a result limit, expired jobs cut by the limit are delivered on the next run instead of being dropped.
- A tracked job whose page is confirmed removed (pasted job URL or search) is now reported as expired again.
- An incremental run that is overtaken by another run stops delivering and does not save state, so no job is delivered twice.
- Description length limit keeps Markdown code blocks intact instead of leaving them unclosed.

### \[0.1.0] — 2026-10-25

Initial release.

#### Added

- Scrape jobs from joinhandshake.com.
