# Changelog of Indeed Job Postings Scraper (`bonpleincapital/indeed-jobs-scraper`) Actor

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

## Changelog

### 0.8.1

- README: cost per 1,000 results stated explicitly (about $4.00 plus proxy usage). Code unchanged from 0.8.

### 0.8

- Card parser: the embedded mosaic JSON is now found whatever the spacing or quoting of its assignment, which helps on country sites with a slightly different page layout; JSON-LD and HTML readers unchanged and still merged by job key.
- Reliability: every third attempt skips the home page visit and goes straight to the search, so a refused page costs less time and more fresh sessions fit in the budget. Challenge pages are still never solved or bypassed.
- Prefill unchanged and small (3 jobs, 1 page, three country sites as fallbacks) to finish well under 5 minutes.

### 0.7

- Card parser: a fourth reader for other embedded JSON blobs (`__NEXT_DATA__`, `application/json` scripts) joins the mosaic JSON, JSON-LD and HTML readers; all are merged by job key.
- Salary text parser: prefixed dollar signs (`A$`, `C$`, `NZ$`, `S$`, `MX$`, `US$`) and Nordic currency codes are recognised.
- Errors: each search gets a share of the time budget, so one country that answers 403 or 429 can no longer use the whole budget and empty the run. Challenge pages are still never solved or bypassed.
- The prefilled test input stops after 3 jobs, which keeps the daily test short.

### 0.6

- Card parser: the embedded JSON, JSON-LD and visible HTML readers are now merged by job key instead of "first reader wins", so a partial page still gives every job it shows and empty fields (salary text, company, location, date) are filled from another reader.
- Salary text parser: fixed a false "day" period match inside words (`media`), kept the multi-currency and multi-language rules (apostrophe, `万円`, `Lakh`, comma or dot decimals).
- Errors: HTTP 429 is handled with a capped `Retry-After` pause, up to 7 attempts per page within a 190-second budget, residential Apify Proxy in the country of the Indeed site first, then datacenter. HTTP 403 and challenge pages are retried with a fresh identity and are never bypassed or solved. The final status message lists the HTTP codes seen.
- `salaryCurrency` is now empty when the posting shows no salary.
- A third URL shape is tried on retry. README: JSON input and output examples and a longer FAQ.

### 0.5

- Salary text parser refined: Swiss apostrophe thousands (`CHF 80'000`), Japanese `万円` amounts (`月給 30万円`), Indian `Lakh` / `LPA` / `Crore` wording, a space only joins digit groups of exactly three (`1 200` is one number, `30 40` is a range), better currency and period detection across the 22 country sites.
- Reliability against challenge pages (never bypassed): residential addresses are used for the first four attempts, five attempts per page, a 200-second time budget, and the prefilled test input now covers three country sites (`us`, `gb`, `ca`) with one result page, so one refused site no longer empties the daily test.
- Card parser unchanged in order (mosaic JSON, other embedded JSON, JSON-LD, HTML cards); README and icon refreshed.

### 0.4

- Parser rewritten for the different card formats of the 22 country sites: several embedded JSON shapes, JSON-LD job data and plain HTML cards (title, company, location, salary, snippet, date) as fallback.
- Salary extraction: structured Indeed data first, then a text parser (currency symbols and codes, thousands and decimal separators, "up to"/"from", pay period words in 10 languages). New field `postedText`; dates computed from "posted N days ago".
- Reliability: the working browser session is reused between pages, alternate URL shape on retry, genuine empty results are not retried, a 230-second time budget keeps the daily test under 5 minutes; prefill reads up to 2 pages.
- Dataset schema clarified (item types, descriptions, table view with labels). README "How to use" expanded.
- Challenge pages are still only detected, never solved or bypassed.

### 0.3

- Dynamic content: three readers for the job cards (mosaic JSON, other embedded JSON blobs, plain HTML job links), so a layout change no longer returns an empty run.
- Block detection: 403/429/503 answers and challenge pages are recognised and retried with a new identity and proxy address; the Actor never solves or bypasses a captcha or challenge and reports it in the run status.
- Consistent results across countries: language header for every country site and a default salary currency per country.
- README refocused on the Indeed job scraper, with cost and FAQ.

### 0.2

- More robust navigation: browser-like TLS and headers (rotating coherent identities), home page visit and cookies kept per session, sticky proxy address, residential then datacenter proxy, new identity after each refusal.
- Never solves captchas or challenge pages; ends with a clear status message if Indeed refuses.
- README rewritten.

### 0.1

- First version: Indeed job postings from 22 country sites with title, company, location, salary, job type and date.
- Filters: keywords, country, location, posted within N days, only jobs with a salary.
