Read public job postings from Greenhouse- and Lever-hosted job boards via their official public APIs: 21 normalized fields per job, deduplicated, schema-validated.
Apify actor Battles_2026/greenhouse-lever-jobs-scraper. Public since 2026-10-11 23:46 CT; PPE $0.0015 per unique job ($1.50/1K), approved by Jonathan.
Builds are made only with sh ci/deploy/push_actor.sh actors/scraping/flagship-site.
Rollback target
Build 0.1.6 (build id wKQeBus3ZWzYjwSYI) is the last known-good build: prefill run
AgaXWhcahr5uLNN2L SUCCEEDED, 10 items in 7 s (Hermes APPROVE WITH NOTES). 0.1.4 is no longer a
valid target (Lever maxJobs over-charge bug H2). If a later build fails its
prefill run or the daily auto-test, point the actor's latest tag back at this build in the
Apify Console (Actor > Builds) before anything else.
Prefill run AgaXWhcahr5uLNN2L SUCCEEDED: 10 items in 7 s, $0.000, 256 MB. Rollback target stays
0.1.4 until Hermes re-review passes this build.
Fixes for REVIEW_LOG.md (CHANGES REQUIRED, round 1/3), each with a test:
H1: Greenhouse detail (pay range) failures of any engine kind (5xx, circuit open, time limit,
policy) no longer drop the list rows; only AntiBotStop and BudgetExhausted propagate.
30 jobs with every detail call 503ing now pushes 30/30 (was 0/30).
H2: Lever pages are trimmed to the requested limit (Lever may ignore it) and every board has
a maxJobs backstop at emit time: maxJobs=5 pushes and charges exactly 5.
M1: robots.txt per RFC 9309: 5xx, 429 or network error = disallow all; other 4xx = allow.
Retry-After above the 120 s cap stops that host for the run instead of retrying early.
Pinned apify==4.1.0 and the base image apify/actor-python:3.13@sha256:e4a55e4d....
The 240 s internal time limit applies only to short runs (Apify timeout <= 300 s, i.e. the
daily auto-test, or unknown); longer runs use Apify's timeout minus a 20 s margin.
Board tokens made only of dots (., ..) are rejected.
Hermes repro tests A-D moved into tests/actor_contracts/test_flagship_hermes_adversarial.py.
Billing: with no PPE price set, rows are counted free (freeRows), not chargedRows.
README: FAQ on personal data in free-text descriptions (GDPR/CCPA).
Added this CHANGELOG and the rollback target.
0.1.5 (5nhtOcgWE8ezsyn8l), 2026-10-11: built, never run
Intermediate build with only the billing and README changes above; superseded by 0.1.6.
Not a rollback target (no prefill run).
Input schema made Apify-valid (array item titles); migration 0003 re-pinned.
Deploy via ci/deploy/push_actor.sh (shared engine vendored into the build context and
removed after push).
Hermes fixes from migration 0003: small leverdemo prefill and maxJobs 20 so the daily
auto-test passes; 2 req/s per-host pacing ceiling; proxy rule reworded (no paid proxies
without Jonathan's approval).
0.1.2, 0.1.3, 2026-10-11: FAILED builds
Builds failed on Apify (input-schema validation and build-context issues fixed in 0.1.4).
Never run in production; not valid rollback targets.
Before 0.1.2 (commits c58307f, 8f23697)
Unified Greenhouse + Lever 21-field schema and terms check; actor implemented on the shared
core/engine (pacing, robots, retries and breaker, anti-bot stop, record gate, PPE biller,
logs, deadline, evidence).