# Changelog of Google Jobs Scraper - Salary, Leads & Emails (`pro100chok/google-jobs-scraper`) Actor

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

## Changelog

### 1.0.7 (2026-09-11)

- **Fixed: apply links were missing from every posting.** Google moved each apply link behind a relative tracking redirect (`/goto?url=…`), which the parser rejected as a non-absolute URL, so `applyOptions`, `applyLink`, `applyBoards` and `hasDirectApply` came back empty. Apply options are now read from the page's own posting data, which yields the employer's direct URL rather than a Google redirect, with the board label taken from the card as before. Measured on a live search: 73 apply links across 10 postings, all direct.
- That empty-apply-links state also tripped the safeguard that refetches a page whose links are missing, so every search was fetched three times. One search is now one request, cutting run time and proxy cost by roughly two thirds.
- The crawl now keeps its own clock a safe margin inside the run's timeout and winds down gracefully when it runs out: the searches in flight finish, every buffered row is flushed, and the run ends successfully with everything collected. Previously a run that asked for more jobs than its timeout allowed was killed by the platform as timed out.
- Retries and empty-page refetches are abandoned once that margin is reached, so one stalled Google request can no longer consume the rest of the run.
- Per-request timeout lowered from 90s to 45s — a stalled SERP session is fixed by a new session, not by waiting longer.
- Employer contact enrichment is skipped for the last postings of a run that is out of time, so the jobs are published rather than the seconds spent on employer websites.
- Default **Maximum jobs** is now 50 (was 100), so a first run returns a full sample in about a minute.

### 1.0 (2026-08-19)

- Initial release. Scrapes the Google Jobs vertical by keyword and location and returns 59 fields per posting: title, employer, location, source board, full description, parsed salary (min/max/currency/period), employment type, remote flag, posting age as both a relative label and an absolute UTC timestamp, benefit chips, degree requirement, and the qualification / responsibility / benefit lists Google extracts.
- Every apply option per posting — board name, URL and a direct-apply flag — averaging 5–6 links per job, plus the employer logo and Google's own job id and share links.
- Automatic search expansion: because Google returns about ten postings per search, each keyword is also asked through Google's own filter chips, employment types, seniority wording and recency windows, with de-duplication by job id across the whole run.
- Filters for posting age (dropdown or exact hours), employment type, remote-only, salary presence and minimum, employer include/exclude, source board, and job-title keywords.
- Job-alert mode (`onlyNewJobs`) remembers postings across runs so a scheduled run returns only new listings.
- Optional employer contact enrichment: resolves the employer's own website from the apply links and collects public email, phone and social profiles, with one visit per employer domain per run.
- Results stream to the dataset as they are found, so an aborted run keeps everything already delivered.
