Career Page Jobs Scraper: Greenhouse, Lever, Ashby, Workable
Pricing
from $1.50 / 1,000 job returneds
Career Page Jobs Scraper: Greenhouse, Lever, Ashby, Workable
Get open jobs straight from company career pages. Reads the documented public job-board APIs of Greenhouse, Lever, Ashby, Workable, Teamtailor and Gem and returns every posting in one schema. Filter by title, location or date, or get only jobs that are new since the last run.
Pricing
from $1.50 / 1,000 job returneds
Rating
0.0
(0)
Developer
Anton Sajin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Career Page Jobs Scraper
Get every open job from company career pages, in one clean schema, straight from the source.
Most companies publish their jobs through an applicant tracking system (ATS) such as Greenhouse, Lever or Ashby. This Actor reads the public job-board API of six of those systems, so you get the listing the company itself maintains: complete, current, and free of the duplicates and stale posts that job aggregators carry.
Give it a list of companies. Get back titles, locations, departments, salary ranges, posting dates, apply links and full descriptions.
What you can do with it
- Track hiring at companies you care about. See who is hiring for what, and when a new role opens.
- Monitor competitors. See which teams they are growing and where.
- Get alerts for new jobs. Turn on Only jobs that are new since the last run, schedule the Actor daily, and receive only fresh postings.
- Research the job market. Titles, locations, pay ranges and descriptions in a consistent format, ready for analysis.
Supported systems
| ATS | Example input | Notes |
|---|---|---|
| Greenhouse | https://boards.greenhouse.io/discord | Pay ranges when the company publishes them |
| Lever | https://jobs.lever.co/palantir | US and EU boards. Read at one request per second, as Lever asks |
| Ashby | https://jobs.ashbyhq.com/ramp | Salary ranges included |
| Workable | https://apply.workable.com/huggingface | |
| Teamtailor | https://career.teamtailor.com | Boards on a teamtailor.com address |
| Gem | https://jobs.gem.com/gem |
A system is supported only when its vendor documents the endpoint as public and unauthenticated, its robots.txt allows the path, and nothing in its published terms restricts reading it. Workday, SmartRecruiters, Rippling, Recruitee, Personio, Pinpoint and Breezy HR are deliberately not supported, because their terms or robots.txt rule this kind of access out or leave it unclear.
How to tell it which companies
Put one company per line in Companies. Four forms work:
- The job board URL, as in the table above. Most reliable.
- The company's own careers page, for example
https://example.com/careers. The Actor fetches that one page, if the site's robots.txt allows it, and looks for a link to or an embed of a supported job board. Pages that load their jobs with JavaScript, or from an unsupported system, cannot be read this way. - Shorthand
ats:slug, for examplegreenhouse:discordorlever:palantir. - Just the name, for example
huggingface. The Actor tries the name on each system in the order of the table and uses the first board that has open jobs. CheckcompanyNamein the results, since two companies can share a short name; use the shorthand when you know the system.
Inputs that cannot be read never fail the run. They are listed with the reason in the SUMMARY record of the run's key-value store.
Input example
{"companies": ["https://boards.greenhouse.io/discord","https://jobs.ashbyhq.com/ramp","lever:palantir","huggingface"],"titleKeywords": ["engineer", "developer"],"excludeTitleKeywords": ["intern"],"locations": ["remote", "new york"],"postedWithinDays": 14,"includeDescription": true}
Filters
All filters are optional, and a job must pass every filter you set. Matching is case-insensitive and looks for the text anywhere in the field.
| Field | Keeps jobs where |
|---|---|
titleKeywords | the title contains at least one of the phrases |
excludeTitleKeywords | the title contains none of the phrases |
locations | a location or the country contains at least one of the phrases |
departments | the department or team contains at least one of the phrases |
employmentTypes | the type is one of full-time, part-time, contract, internship, temporary, other |
remoteOnly | the job is marked remote |
postedWithinDays | the job was published in the last N days |
Two things to know. A job with no published date is dropped when postedWithinDays is set. A job with no stated employment type is dropped when employmentTypes is set; Greenhouse and Teamtailor often do not state one.
Monitoring new jobs
Set onlyNewJobs to true and schedule the Actor. Each run returns only jobs it has not returned before, and you are charged only for those. Use monitorId to keep separate feeds, for example one per saved task.
If a limit such as maxJobsPerCompany holds some new jobs back, they are returned on the next run rather than lost.
Output
One item per job:
{"id": "ashby:ramp:34413f8d-26bf-4bbc-8ade-eb309a0e2245","ats": "ashby","company": "ramp","companyName": null,"title": "Security Engineer, Cloud","department": "Engineering","team": "Backend","location": "New York, NY (HQ)","locations": ["New York, NY (HQ)", "Remote (Canada)", "Remote (US)", "Miami, FL"],"country": "USA","workplaceType": "hybrid","isRemote": true,"employmentType": "full-time","salary": {"min": 211400,"max": 290600,"currency": "USD","interval": "year","text": "$211.4K – $290.6K • Offers Equity"},"postedAt": "2026-04-07T17:12:35.753Z","updatedAt": null,"url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245","applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application","requisitionId": null,"descriptionHtml": "<h1>About Ramp</h1>…","descriptionText": "ABOUT RAMP\n\nRamp is building…","scrapedAt": "2026-10-11T00:02:51.120Z"}
Fields the ATS does not publish are null rather than guessed. For example, Lever, Ashby and Gem do not include the company's display name, and salary is present only where the company chose to publish it.
id is stable between runs, so you can use it as a key when you sync jobs into a database or spreadsheet.
Pricing
Pay per result: $1.50 per 1,000 jobs returned. There is no monthly fee, and you pay nothing for companies that return no jobs or for jobs your filters remove.
With onlyNewJobs on, a daily run over hundreds of companies typically costs a few cents, because only the new postings count.
You can cap what a run may spend with the Maximum cost per run setting; the Actor stops cleanly when it reaches your limit.
Using the data responsibly
- Job descriptions belong to the employers who wrote them. Reading and analysing them is one thing; republishing them wholesale is another. If you show jobs to other people, link to the original posting (
url) and check that your use is one the employer would expect. - No AI training on Workable and Teamtailor content. Both signal in their robots.txt that their content may be used for search and as AI input but not to train AI models. Respect that for jobs with
atsset toworkableorteamtailor. - The Actor collects job postings only. It never logs in anywhere and collects no applicant or personal data.
FAQ
Where does the data come from? From endpoints each vendor documents as public and unauthenticated: the Greenhouse Job Board API, the Lever Postings API, Ashby's public job posting API, Workable's public jobs endpoint, the Teamtailor career-site RSS feed and the Gem Job Board API. The Actor identifies itself in its User-Agent and follows the request limits those vendors publish. This is a description of how the tool works, not legal advice about your use of the data.
How fresh is the data? Every run reads the live boards. Nothing is cached between runs.
How fast is it? Each system returns a company's whole board in one or two requests, so dozens of companies finish in seconds. Lever boards are read one per second at Lever's request, so a list of several hundred Lever companies takes a few minutes.
A company I need is not supported. Many large employers use systems this Actor leaves out on purpose (see Supported systems). If a company uses a system that documents a public job feed and is missing here, open an issue on the Issues tab with the careers page URL.
Something looks wrong. Open an issue on the Issues tab and include the run ID.