Split capped searches using all eight area roots × eighteen job categories,
recursively refining sub-areas/sub-categories when total exceeds pagination
capacity. Deduplicate by jobNo and log per-slice and global dedupe totals.
Add coverage for capacity boundaries, 4,000-job sliced runs, differing URL
codes for one jobNo, final-page stopping and maxItems within a slice.
Save each list page in one deduplicated array push, bounded by remaining
maxItems; account for SDK budget trimming and per-item charges, and retain
completed detail results when a later request fails or reaches the deadline.
Log list HTTP status, response bytes, elapsed time and gap waits, with final
summaries and separate save/page timings.
Wait only the remaining one-second request start gap, including retries;
cache robots rules and warn once per run.
Stop 15 seconds before the Actor deadline, abort pending target requests,
retain saved items and persist run counters on clean exit.
Add regression coverage for slow responses and graceful deadline shutdown.
1.0.0 — 2026-10-14
Initial Node.js ESM Actor for public 104 listings and optional details/contacts.
Serial 1/s requests, capped-query splitting, global deduplication and bounded retries.