Highlights
- Resolve public careers URLs directly with
get_scraper_for_url(...) and resolve_careers_url(...), without knowing the ATS or tenant slug first.
- Find companies by name or slug through the hosted directory with
find_company(...) and Client.find_company(...).
- Check whether a hosted source has a local adapter with
ScraperRegistry.has_scraper(...).
Fixes and security
- Search filters now match literal text, including values containing regex characters such as
+, (, and [.
- Unknown hosted sources remain readable before a matching enum member or scraper ships.
- Multi-tenant scraper slugs are validated before hostname or path interpolation.
Validation
- 1,167 offline tests passed, with 2 opt-in live tests skipped by the default suite.
- All 20 live E2E tests passed against real ATS endpoints and the hosted dataset.
- Linux and macOS CI passed on Python 3.11, 3.12, and 3.13.
- Both artifacts passed Twine validation and an isolated wheel smoke test covering the new discovery API and live data.
PyPI: https://pypi.org/project/ats-scrapers/0.2.0/