ATS JOB SCRAPER — Greenhouse, Lever and Ashby
Pricing
from $0.75 / 1,000 job scrapeds
ATS JOB SCRAPER — Greenhouse, Lever and Ashby
Extract live jobs directly from public Greenhouse, Lever, and Ashby APIs. Filter by recency, title, or remote status and export normalized hiring data—no job-board scraping, browser rendering, or proxies.
Pricing
from $0.75 / 1,000 job scrapeds
Rating
0.0
(0)
Developer
Ege
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Extract current job openings directly from the public APIs behind Greenhouse, Lever, and Ashby career pages. The Actor detects the ATS from each careers URL, normalizes all three vendors into one dataset, applies filters before billing, and reports unread boards separately instead of silently treating them as companies with no jobs.
Use it for job boards, recruiting research, talent-market analysis, lead generation, hiring-signal monitoring, and scheduled company watchlists. No browser rendering, proxy rotation, or job-board scraping is required.
What it does
- Reads multiple Greenhouse, Lever, and Ashby boards in one run.
- Normalizes company, role, location, remote status, department, employment type, date, description excerpt, and application URL.
- Filters by posting age, title keywords, remote status, and a per-company cap.
- Charges only for job rows that survive your filters.
- Writes a free problem row when a board URL is invalid, unavailable, or returns an unexpected format.
- Stops cleanly when the run reaches the user's maximum charge.
Quick start
Paste one or more public careers-page URLs. The Actor identifies the vendor and company slug automatically.
{"companies": ["https://job-boards.greenhouse.io/automatticcareers","https://jobs.lever.co/example","https://jobs.ashbyhq.com/example"],"maxJobsPerCompany": 100,"postedWithinDays": 30,"titleContains": ["engineer", "developer"],"remoteOnly": true}
You can also provide an explicit vendor and slug, such as lever:company-slug, when you do not have the full URL.
Input
| Field | Description |
|---|---|
| companies | Required list of Greenhouse, Lever, or Ashby careers URLs. |
| maxJobsPerCompany | Maximum matching jobs saved for each company. Default: 100. |
| postedWithinDays | Keep jobs from the last N days. Use 0 to keep all dated jobs. |
| titleContains | Keep titles containing at least one supplied term, case-insensitive. |
| remoteOnly | Keep only jobs the ATS explicitly identifies as remote. |
A job with no vendor-published date is kept by the recency filter because an unknown date is not evidence that the posting is old. Likewise, missing remote information is not converted to false; remoteOnly keeps only roles the source positively identifies as remote.
Output
The default dataset contains two row types:
- job — one normalized public job posting. This is the only billable row type.
- problem — a free diagnostic row containing the company, ATS, attempted endpoint, and reason the board could not be read.
Each job can include board, company, id, title, location, remote, department, team, employmentType, postedAt, url, and a plain-text description excerpt. Fields remain absent when the ATS does not publish them; the Actor does not invent or infer missing facts.
Use the dataset view selector to switch between Jobs and Companies not read, then export JSON, CSV, Excel, XML, or HTML.
Pricing
This Actor uses pay-per-event pricing with platform usage included:
- $0.01 per run start at the default 512 MB memory.
- $0.00075 per saved job — $0.75 per 1,000 matching jobs.
- Problem rows and filtered-out jobs are free.
Example totals at the default memory: 100 jobs cost about $0.085, 1,000 jobs cost $0.76, and 10,000 jobs cost $7.51. Users can set a maximum charge per run; the Actor honors that limit and stops early when necessary.
Reliability and limits
The Actor reads documented public ATS endpoints rather than scraping a third-party job board. This makes runs fast and avoids selector and anti-bot failures. A wrong slug, temporary outage, or unexpected response is returned as a problem row, so an unread board is never misrepresented as zero openings.
Only public, listed jobs are returned. Ashby postings marked as unlisted are skipped. Salary is included only if the selected vendor exposes it through the normalized fields; no compensation data is inferred. Descriptions are HTML-stripped excerpts limited to 600 characters.
Use the data responsibly and comply with applicable laws, source terms, and privacy requirements. Do not use the Actor to collect private or access-controlled listings.
Automation
Schedule recurring runs in Apify Console, trigger the Actor through the API, or connect it to webhooks, Make, Zapier, Google Sheets, Slack, or your own recruiting pipeline. The structured schema works well for incremental hiring monitors and AI agents.
FAQ
Why is a company in Companies not read?
The careers URL may use an unsupported ATS, the slug may be wrong, the public endpoint may be unavailable, or the vendor may have changed its response shape. Check the free problem row for the attempted endpoint and exact reason.
Are filtered jobs charged?
No. A job is charged only after it passes all selected filters and is written to the dataset.
Where can I get help?
Open the Actor's Issues tab with the careers URL, run ID, and expected behavior. Include no secrets or private data.