# Changelog of Indeed Jobs Scraper - Salary & Job Monitoring (`newbs/indeed-job-scraper`) Actor

- **URL**: https://apify.com/newbs/indeed-job-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/newbs/indeed-job-scraper.md

### 2026-09-15 — More complete collection and clearer results

- Keep the page size fixed throughout cursor pagination, as required by Indeed.
- Backfill duplicates and previously seen jobs before applying the accepted-result limit.
- Save jobs during collection and retry only a failed page. Preserve and identify partial results.
- Stop repeated pagination cursors; expose request, page, retry, and stop-reason diagnostics.
- Serialize result writes and check the remaining PPE budget before each write.
- Isolate monitoring state for different search URLs and direct-job lists.
- Add Jobs and Run summary output links, broaden the first-run date range, and clarify exports, API usage, pricing, and coverage limits.
- Update compatible dependencies to address reported advisories.

### 2026-09-01

- Restored the intended all-inclusive price of $0.004 per saved job ($4 per 1,000), with a $0.005 run-start event to cover fixed startup work.
- Capped filter over-fetching at five times the requested result count, including explicit `maxScanResults` overrides, and reduced maximum selectable memory from 4 GB to 1 GB.
- Added streamlined `keyword`, Indeed search URL, and direct job URL inputs while preserving the legacy `job` array.
- Added `basic`, `standard`, and `full` data-depth modes so users can trade enrichment depth for speed and lower platform cost.
- Added a global result cap, adaptive filter-aware page sizing, reusable HTTP sessions, and immediate stops at result or charge limits.
- Added versioned nested and flat output, structured latitude/longitude, optional public-email output, and clearer search provenance.
- Added incremental `onlyNewJobs` monitoring with isolated, expiring seen-job state and explicit `UNCHANGED` diagnostics.
- Improved retry classification so blocked proxy responses rotate while permanent query errors fail fast.
- Simplified the Store input form, expanded the dataset view, and moved production to the browser-free Node.js 22 image.

### 2026-08-24

- Added canonical United States location queries and structured job-location fields while preserving the original requested location.
- Added explicit search-radius provenance so nearby-city results can be audited without assuming the job city must equal the search center.
- Fixed `radiusMiles: 0`, which previously fell back to 50 miles in the GraphQL request.
- Fixed work-arrangement false positives from technical phrases such as "hybrid simulation models" and "remote sensing."
- Improved deduplication to skip identical job content with different Indeed job keys and continue scanning for replacement results.
- Updated the dataset view, input guidance, README, regression suite, and audited dependency versions.

### 2026-07-29

- Changed monetization to $0.004 per successfully saved job ($4 per 1,000 results), with Apify platform usage billed separately.
- Added graceful maximum-charge handling so a pay-per-event spending limit stops additional result searches.
- Replaced the Chromium/Xvfb production runtime with a lean structured-API runner and reduced default memory from 4 GB to 512 MB.
- Added concurrent keyword searches, bounded API retries, and filter-aware over-fetching.
- Added radius, remote/hybrid/on-site, multi-job-type, salary-only, minimum annual salary, strict title phrase, and unique-company filters.
- Added annualized compensation, currency, estimated salary, work arrangement, experience level, public emails, search position, and search provenance fields.
- Changed valid no-result searches to `EMPTY` success while preserving failures for complete source outages.
- Updated current dependencies and removed production audit vulnerabilities.
- Expanded the input schema, dataset view, README examples, diagnostics, and automation guidance.

### 2026-07-03

- Reworked HTTP extraction to use Impit browser/TLS impersonation, country-pinned sticky residential sessions, warm-up cookies, and equivalent Indeed search URL variants.
- Removed stale hard-coded Chrome identities from browser fallback and now use the installed browser identity.
- Updated Apify and Crawlee runtime dependencies for current request fingerprinting support.

### 2026-05-28

- Added country-level location fallback when `city` is empty, preventing blocked no-location Indeed searches.
- Made HTTP-only extraction the default Apify path to avoid slow browser verification gates.
- Reduced HTTP retry waste and added unlimited default run timeout metadata.

### 2026-05-01

- Added per-run `OUTPUT` summaries, duplicate skipping across keywords, recent-posting filtering, and data quality metadata on results.
- Improved Apify limited-permission proxy handling so public runs can use Apify Proxy without calling full-permission user APIs.
- Improved Indeed detail extraction for salaries, benefits, skills, attributes, occupations, hiring insights, application metadata, company links, and full job descriptions.
- Added richer dataset field metadata and a cleaner Output tab table view for job research workflows.
- Updated the actor title, description, input schema, and README for clearer Apify Store discovery and customer onboarding.

### Earlier

- Initial public Indeed job listing extraction by keyword, country, city, sort order, and result count.
