Career Page Jobs Scraper & Monitor - Greenhouse, Lever, Ashby
Pricing
from $2.80 / 1,000 job returneds
Career Page Jobs Scraper & Monitor - Greenhouse, Lever, Ashby
Open jobs from company careers pages that use an ATS with a public job feed (Greenhouse, Lever, Ashby, Workable, Workday, BambooHR, Teamtailor) or publish JobPosting JSON-LD: title, location, remote, department, salary, job URL. Monitoring returns only new and removed jobs. Unreadable ones are free.
Pricing
from $2.80 / 1,000 job returneds
Rating
0.0
(0)
Developer
NeverEmpty
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
Give this Actor the careers pages (or just the domains) of the companies you care about. It works for companies whose careers page uses an ATS with a public job feed (Greenhouse, Lever, Ashby, Workable, Workday, BambooHR, Teamtailor) or publishes schema.org JobPosting data; it does not work for every company. It reads each company's own site at run time and returns that company's open jobs, one row per job, and says how it read them. In monitoring mode it returns only the jobs that appeared and the jobs that disappeared since the last run.
It is not a job database that you search. It reads the companies you name, when you run it.
What you get per job
title, location, remote (only when the source states it), workplaceType, employmentType, department, postedAt, salary (when published), jobUrl, jobId, descriptionExcerpt (first 300 characters), company, plus where the row came from:
source-json-ldor the ATS name (greenhouse,lever, ...)atsBoard- the board identifier that was written on the company's page, for examplegreenhouse:figmaevidence- the exact text on the page that named the board, and what tied the board to this companycoverage-all-jobs-in-feed,partialorjobs-on-this-page
How a company is read
- The page you gave is fetched (for a bare domain: the home page, up to two careers links found on it, then
/careersand/jobs; at most 4 pages). - If the HTML names a job board of a supported ATS, the public job feed of that board is read. This gives the complete list.
- Otherwise, if the HTML has schema.org
JobPostingdata (JSON-LD), those jobs are returned (coverage: jobs-on-this-page- only what that one page lists). - Otherwise you get a free
no-jobs-foundrow. Jobs are never guessed from link texts.
ATS that can be read
| ATS | Feed that is read | Notes |
|---|---|---|
| Greenhouse | Job Board API | |
| Lever | Postings API | |
| Ashby | Posting API | |
| Workable | public widget API | |
| Workday | careers site JSON endpoint | at most 500 jobs per company; larger boards are returned as partial and are not monitored |
| BambooHR | /careers/list | no posting date in the list |
| Teamtailor | /jobs.rss | also on a company's own domain |
Not read: SmartRecruiters. The robots.txt of its job API disallows all paths, so this Actor does not request it. A company whose page names a SmartRecruiters board comes back as a free robots-disallowed row.
What cannot be read (you are not charged for these)
- Careers pages that load their jobs only with JavaScript and do not write an ATS board or JobPosting data into the HTML. Many large companies build their page this way. In a test of 40 well-known companies' careers pages on 2026-10-06 (10 large companies, 15 startups, 8 European, 2 Japanese, 5 with a home-built careers site), 14 returned jobs (all through an ATS feed, 2,433 jobs), 22 had no ATS board and no JobPosting data in their HTML, 3 refused the request or their robots.txt could not be read, and 1 address was a 404. Expect roughly one careers page in three to be readable from the page address alone. If you know the company's job board address (for example
https://jobs.ashbyhq.com/acme), give that address instead: it is read directly. - Sites that answer 401/403/429 or a verification page. The Actor does not retry around them.
- Hosts whose
robots.txtdisallows the address (checked at run time for every host, including the ATS feed host). - ATS that are not in the table (SmartRecruiters, Recruitee, Personio, iCIMS, SuccessFactors, Phenom, Eightfold, Talentio, HRMOS and others).
A board must belong to the company
A page can link to another company's board (a parent, a partner, a portfolio company). The board identifier is only used when it is the address you gave, or it is written in the page HTML and it can be tied to the site: its name matches the site's host name, or the feed's company name or job addresses do. If a page names several boards and exactly one matches the site name, that one is used; otherwise none is used and you get a free no-jobs-found row that lists what was seen. Identifiers are never made up from a company name.
Monitoring mode
- First run for a company: its jobs are remembered. Nothing is returned, nothing is charged (
baseline-recorded). - Later runs: one row per new job (
change: new-job) and one per job that is no longer listed (change: removed-job, with the remembered title, URL and location). - No change: a free
no-changerow, and onecompany-checkedevent is charged. - A company that could not be read in a run is free, and its memory is left untouched, so jobs are not reported as removed because of a failed read.
- If a company's source changes (for example it moves to another ATS), the list is recorded again instead of reporting every job as removed and new.
- Memory is kept per address exactly as you give it. JSON-LD sources are compared by job URL and only cover the jobs written on that page.
- Runs for the same company should not overlap.
Pricing (pay per event)
job-returned- each job row returned (in monitoring mode: each new or removed job).company-checked- monitoring mode only: each company that was compared and had no change.- Free: companies that could not be read, companies with no readable jobs, the first monitoring run, every explanatory row. No start fee.
Input example
{"companies": ["https://www.figma.com/careers/", "https://jobs.lever.co/palantir", "vercel.com"],"maxJobsPerCompany": 500,"monitoringMode": false}
Related
If you already know the ATS board names and want filters across many boards, use ATS Jobs API.
Notes
- Requests identify themselves as
NeverEmpty/1.0 (+https://apify.com/neverempty), go out one at a time, and wait more than one second between requests to the same host. remoteis null unless the source says so.salaryandpostedAtare null when the source does not publish them. Nothing is estimated.- Workday does not give a posting date in its list; BambooHR does not give date or salary in its list.
Thanks for using this Actor
We build these tools for people who run them every day, and we improve them from what users tell us.
- Missing a field, or need another filter? Tell us in the Issues tab. If the data is there, we add it.
- Found a bug or a wrong value? Post the run ID in the Issues tab. Wrong data is the thing we fix first.
If this Actor saved you time, a short review helps other people find it.