An input without companies runs a small free example (Ramp on Ashby, up to 10 postings, not charged per result); Companies no longer has a default list, so an API or MCP call that omits it is never billed for sample companies.
Price per result lowered.
Run status lists which board each slug and careers page was matched to, and when an earlier ATS had an empty board with the same slug.
Salary from descriptions: an amount range without a period word counts as yearly pay only next to pay wording (salary, pay, base, compensation, range, OTE); deal sizes (ACV, TCV, quota), grants, "worth" amounts and ranges in unsupported currencies are ignored; a range followed by "bonus" is kept when pay wording precedes it; a bare dollar sign is not read as USD for postings in Mexico, Latin America, the Philippines, Hong Kong or Taiwan.
Workday: job id is the requisition suffix of the posting path (stable when a title is edited, so only-new does not deliver the same posting twice); interns are typed internship from the title; the 2,000-posting listing notice appears only when the listing was read to its end; doubly encoded entities in descriptions are decoded.
README follows the standard section order and says that SmartRecruiters postings carry no salary and that bare slugs are tried on Personio's .de host.
0.1 (2026-10-01)
Initial release: open jobs from Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, Personio and Workday in one schema.
Input as careers page URLs, job board URLs, bare slugs (probed across ATS) or ats:slug.
Normalized salary (min, max, currency, period, yearly amounts) from ATS pay fields or from an explicit pay range in the description, with salarySource.
Filters: title keywords and exclusions, departments, locations, remote only, employment types, only with salary, minimum annual salary, salary currencies, posted within days.
Only-new mode per job board and filter combination; status lists missing companies, empty boards, unreadable boards, cut listings and salary coverage per ATS.