All notable changes to this project will be documented in this file.
- 💸 Switched the default proxy route from Singapore residential to Apify datacenter after a successful 5-row verification run; residential routing remains available for larger runs that encounter rate limits.
- 🧹 Blocked images, media, fonts, and stylesheets after the initial WAF/bootstrap navigation because the Actor only consumes the search JSON response and listing-page HTML fallback.
- 🧠 Kept the 1,024 MB browser memory tier after recent runs measured 512–782 MB peak usage.
- 🔁 Added keyword × city batch searches with a global item cap and per-search page cap.
- 🔔 Added durable recurring monitoring with
NEW, UPDATED, REAPPEARED, UNCHANGED, and two-complete-run EXPIRED lifecycle events.
- 📦 Added full and compact v2 output modes, changed-field detection, source coverage reporting, and safe webhook notifications.
- 🧾 Added refreshed input, dataset, key-value store, and output schemas plus a monitoring dataset view.
- 🧭 Replaced the legacy aliases in the canonical output with source-backed v2 fields:
sourcePostedAt, sourceUpdatedAt, applicationUrl, numeric coordinates, normalized salary equivalents, and explicit provenance.
- 🛡️ Malformed rows, WAF responses, unexpected empty pages, and server/network failures now fail visibly or are counted without fabricating data.
- 💳 Kept the current $3.99 per 1,000 results price during the v2 canary while coverage and reliability are measured.
- 🛡️ HTML challenge pages returned with a successful HTTP status are now treated as blocked responses instead of malformed data.
- 🔄 Search endpoint responses are observed before falling back to page content, so access challenges trigger the existing retry path quickly.
- 🌐 Each retry creates a fresh Apify Proxy session, improving recovery when a source session is challenged.
- 🧾 Failed runs now write a non-chargeable
OUTPUT diagnostic with the failure kind and message.
- 📖 Refreshed the bilingual Store README with clearer hiring use cases, suite navigation, data views, and a review prompt.
- ✅ Updated search parsing to the current
resultbody.job.items source structure.
- 🛑 Blocked, malformed, and unexplained empty responses now fail visibly instead of returning a misleading successful empty dataset.
- 🔗 Corrected job and application links and removed invented fallback values.
- 📄 Made pagination sequential with exact
maxItems enforcement and stable job-ID deduplication.
- 🌏 Residential proxy routing now defaults to Singapore and respects user-selected countries.
- 📦 Output is one flat job dataset, plus a non-chargeable
OUTPUT run summary.
- ⚡ Removed per-job detail page requests and reused descriptions already present in search results.
- 🧰 Disabled standby mode because this Actor runs as a batch collection job.
- 🔗 Added quick links to our other 3 China jobs actors, so you can find mainstream, tech, and white-collar job leads all in one place.
- 🧹 Cleaned up the Store listing page for a clearer, faster read.