Career Page Jobs Scraper for Greenhouse, Lever and Ashby
Pricing
from $0.80 / 1,000 jobs
Career Page Jobs Scraper for Greenhouse, Lever and Ashby
Open jobs straight from company career pages on Greenhouse, Lever, Ashby, Workable, Recruitee, Personio and Teamtailor. Paste careers links, websites or company names. Salary, remote or hybrid, locations, and new or closed jobs since your last run. $1 per 1,000 jobs.
Pricing
from $0.80 / 1,000 jobs
Rating
0.0
(0)
Developer
CleanScrape
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
16 hours ago
Last modified
Categories
Share
Get every open job straight from companies' own career pages, as a clean table you can export to CSV, Excel or JSON. Paste careers links, company websites or company names. The Actor finds each company's job board on Greenhouse, Lever, Ashby, Workable, Recruitee, Personio or Teamtailor, reads it, and returns one row per job:
- title, department and team;
- locations with city, country and country code;
- remote, hybrid or on-site;
- salary range with currency and pay period, when the company publishes it;
- employment type, posted date, job link and apply link;
- the full description.
Run it on a schedule with a watch name and every job says whether it is new since the last run, while jobs that are no longer listed go to a separate Closed jobs table.
Jobs come from the company's own job board, so there are no reposts, aggregator duplicates or expired listings. No account, cookies or API key is needed. This is an independent tool, maintained by CleanScrape.
Start with a small run
The form opens with three companies, given three different ways: a website (figma.com), a job board link (jobs.lever.co/spotify) and a company name (Ramp). It saves up to 50 jobs per company. Start it as it is, then paste your own companies.
- In Companies, add one company per line.
- Optional: narrow down with Job titles containing, Locations, Workplace or Posted within.
- Start the run. Open the Jobs table, and the Companies table to see how each line was matched.
What you can paste
| You paste | What happens |
|---|---|
A job board link: boards.greenhouse.io/figma, jobs.lever.co/spotify, jobs.ashbyhq.com/ramp, apply.workable.com/huggingface, bunq.recruitee.com, tado.jobs.personio.de, a Teamtailor career site | That board is read directly. A link to a single job works too. |
A company website: figma.com, www.podimo.com | The site's pages are checked for a link to its job board, as far as the site's robots.txt allows. If none is linked, the website's name is tried as below. |
A company name: Ramp, Hugging Face | Likely board names are tried on every system, and a board is used only if its own company name matches what you typed. |
No guessing. If a board exists under that name but belongs to a different company name, it is not read: the Companies table lists it as not confirmed, with its link, so you can paste it if it is the right one. If several boards carry the same name (for example a "RAMP" board with one job next to Ramp's real board with 171), the one with the most open jobs is used and the others are listed. A board with no open jobs is never used for a name, since empty accounts under famous names are common. On Workable, Recruitee, Personio and Teamtailor, where anyone can open a board under any name, a name match also needs at least 3 open jobs, or for a website, jobs that mention that website. Every company row says how its board was found: your link, a link on the company's page, or the board's name.
Inputs that can't be read are explained, not silently dropped: SmartRecruiters (its robots.txt asks crawlers not to use its job API), Workday, iCIMS, Taleo, LinkedIn and job boards like Indeed are not supported.
Filters
All filters are optional, and jobs filtered out are not charged.
- Job titles containing: each line is a set of words that must all appear in the title, in any order.
data engineermatches "Senior Engineer, Data Platform". - Leave out titles containing: for example
intern,director. - Locations: cities, regions, countries or two-letter country codes (
London,Germany,US,Remote). A country also matches jobs whose location shows it without naming it, such as a US state (Austin, TX) orRemote - US. - Workplace: remote, hybrid or on-site. Jobs whose board does not say are left out when this is set.
- Departments or teams.
- Posted within (days). Jobs without a posting date are kept.
- Jobs per company: the newest first.
Monitor companies for new and closed jobs
Give the run a Watch name (for example engineering-jobs) and schedule it with the same list, daily or weekly.
- The first run saves every job as the starting point (
changeStatus: first-check). - Later runs mark each job
neworseen. Turn on Only new jobs to save just the new ones. - Jobs that disappeared from a board go to the Closed jobs table, with when they were first and last seen.
A job is reported as no longer listed only after a complete read of its board. If a board could not be read in full, nothing is marked closed, and the Companies table says so. A job that is no longer listed may have been filled, paused or moved; the board does not say which.
The watch is kept in your own Apify account (a named key-value store), and two runs of the same watch never overlap.
What each job contains
| Column | Meaning |
|---|---|
| Title, Company, Department, Team | As published on the job board. Company is empty when the board shows no company name (some companies use Lever only behind their own careers page) |
| Location, City, Country, Country code, Locations | The first location, and every location of the job |
| Workplace | remote, hybrid or onsite, from the board's own field. Empty when the board doesn't say. Greenhouse has no such field, so a Greenhouse job is remote only when its location says Remote |
| Employment type | full-time, part-time, contract, temporary or internship, plus the board's own wording |
| Salary from, Salary to, Currency, Pay period, Salary (as published) | The published pay range |
| Salary source | structured (the board's pay field: Lever, Ashby, Recruitee, Greenhouse with the salary option) or description (a currency range written in the job text). Empty means no pay was published, never zero |
| Posted, Updated | Dates from the board (UTC) |
| Job link, Apply link | The job page and where to apply |
| Description | Full text; the original HTML too if you ask for it |
| More details | Board-specific extras: Greenhouse offices and requisition ID, Workable function and experience, Personio seniority and years of experience, Recruitee hours per week |
| System, Board, Board link | Which job board the job came from |
| Change, First seen | With a watch name: new, seen or first-check, and when the watch first saw the job |
The Companies table has one row per line you entered: the board found and how, jobs on the board, jobs matching your filters, jobs saved, new and closed jobs, whether the board was read completely, and a note when something could not be read. The Run report shows the same in a readable page.
Coverage by system
| System | Salary | Workplace | Posted date | Notes |
|---|---|---|---|---|
| Greenhouse | From the description; structured ranges with the salary option | From the location text only | Yes | Boards hosted in the EU have no public API and are reported as unsupported |
| Lever | Structured, when published | Yes | Yes | |
| Ashby | Structured, when published | Yes | Yes | |
| Workable | From the description | Yes | Yes | |
| Recruitee | Structured, when published | Yes | Yes | |
| Personio | From the description | – | Yes | Seniority, schedule and years of experience |
| Teamtailor | From the description | Yes (for the newest 100) | Yes | The job feed shows the newest 100 jobs; larger career sites are completed from their job list, one page per remaining job |
Pricing
You pay for each job board that is read and for each job saved:
| What is charged | Price |
|---|---|
| Job saved (after your filters) | $1.00 per 1,000 jobs |
| Job board read | $0.002 per board |
Examples from real runs:
| Run | Cost |
|---|---|
| Figma, Spotify and Ramp, 50 newest jobs each (3 boards, 150 jobs) | $0.156 |
| 12 companies, only engineering jobs in the US or remote (12 boards, 169 jobs) | $0.193 |
| Stripe's whole board (1 board, 723 jobs) | $0.725 |
| 79 career sites in full (79 boards, 6,854 jobs) | about $7.01 |
| Daily check of 20 companies with "Only new jobs", a typical day with 15 new jobs | $0.055 per day |
A board is charged when it is read, also if no job matches your filters or none is new; the run message says so. Nothing is charged for a company whose job board could not be found or read, for a board that lists no open jobs, for duplicate lines, or for the Companies and Closed jobs tables. Apify plan discounts apply to both prices: 10% on Bronze, 15% on Silver and 20% on Gold and higher.
Set a spending limit under Run options for large runs. The run stops cleanly before it reaches the limit and keeps everything saved so far.
Ready-to-run examples
Each example opens with its input filled in. Change the companies and run it.
| Example | What it does |
|---|---|
| Engineering jobs at OpenAI, Anthropic and other AI companies | Engineering jobs from seven AI companies' career pages, with locations, remote or hybrid and salary ranges where published. |
| Remote jobs from 10 tech companies' career pages | Only remote jobs from GitLab, Supabase, Zapier, Vercel and others. |
| Daily new jobs at your competitors | A watch over five fintech companies: scheduled daily, each run saves only new jobs and lists closed ones. |
| Engineering salaries from Stripe, Coinbase and Datadog | US engineering jobs with their published pay ranges, to compare offers. |
| Jobs at European startups on Personio and Recruitee | Open jobs from startups on Personio, Recruitee, Teamtailor and Workable, with city and country. |
Use it from the API or an AI agent
Run it from your code with the Apify API or a client library. Python (pip install apify-client):
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("cleanscrape/career-site-jobs-scraper").call(run_input={"companies": ["figma.com", "https://jobs.lever.co/spotify", "Ramp"],"titleKeywords": ["engineer"],"locations": ["Remote", "United States"],})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["company"], job["title"], job["location"], job["salaryMin"], job["salaryMax"])
The Companies and Closed jobs tables are separate datasets: their IDs are in the run's storageIds.datasets (companies, closedJobs).
It also works as a tool in Claude, Cursor and other AI assistants that support MCP, through Apify's MCP server:
https://mcp.apify.com?tools=cleanscrape/career-site-jobs-scraper
Then ask, for example: "Which engineering jobs did Notion, Linear and Ramp post this week, and what do they pay?"
Related tools
- Google Jobs Scraper searches job listings across the web by title and place.
Common questions
Where do the jobs come from?
From each company's own job board on Greenhouse, Lever, Ashby, Workable, Recruitee, Personio or Teamtailor. These systems publish companies' open jobs so they can be shown on careers pages; Lever's documentation notes that published postings may be read by third parties, and Greenhouse states that job board data is publicly available. No login, cookies or bot checks are involved.
Which companies are covered?
Any company whose careers page runs on one of the seven systems. There is no fixed list: paste the companies you care about. The Companies table tells you when a company uses a system that isn't supported.
How fresh are the jobs?
They are read live from the job board when the run starts, not from an index updated once a day.
Can I find a company's job board without knowing its system?
Yes. Paste the website or the company name; the Companies table shows which board was found and how.
Can I export to Excel or Google Sheets?
Yes. Export the Jobs table as Excel or CSV from the Output tab, or connect Google Sheets through an Apify integration. Schedule the run with a watch name to keep a sheet of new jobs.
Is it legal?
The Actor reads job postings that companies publish publicly on their job boards, at a gentle pace, and it follows each company website's robots.txt. Check the rules that apply to how you store and use the data. This is not legal advice.
Good to know
- Times are UTC.
- A company can show the same job in several locations; that is one row with several locations, also when the job board lists it once per location.
- If a job board changes its format, the run says which board could not be read instead of saving wrong rows.
More tools from CleanScrape
- ATP and WTA Tennis Rankings Scraper: current ATP and WTA singles, doubles and race rankings with points and movement
- Flashscore Tennis Scraper: tennis results, statistics, point-by-point and head-to-head
- Kick Sponsor Tracker: which Kick streamers promote which brands, with codes and broadcast hours
- Whatnot Scraper: Whatnot listings with prices and seller stats, and live shows
- Whatnot Seller Tracker: top sellers per category, items sold, sales per day and followers over time
- TikTok Shop Product Scraper: US TikTok Shop prices, sellers and ratings
- Bilibili Scraper: Bilibili videos, danmaku, comments and creators
- App Store Reviews & Google Play Reviews Scraper: reviews from both app stores in one table
- Google Trends Scraper API: search interest over time, by region, related queries and trending searches
- Map Your Show Exhibitor List Scraper: trade show exhibitor lists and booth changes
- Shopify Product Reviews Scraper API: Judge.me and Okendo reviews from Shopify product links
- Google News Scraper and RSS Feed Reader: headlines from Google News and publisher feeds
- Google Jobs Scraper: job listings with salaries and apply links
- Pinterest Scraper API: keyword search, public pin links and board previews; search results may lack a pin link
- Google Hotels Scraper: hotel prices and booking offers for your dates
- Meta Threads Scraper: public Threads posts from accounts or post links
- Likee Scraper API: Likee videos and comments
- Casino Bonus Checker: the casino bonus each affiliate and review site shows, with promo codes, 18+ notices and affiliate IDs
- Video Frame Extractor for Scene Changes and Thumbnails: still images from video files at scene changes, intervals or timestamps, with contact sheets
Support
Questions, a board that is read wrongly or a system you need: open an issue on the Actor's Issues tab or write to contact.cleanscrape@gmail.com with the run ID.
If the Actor was useful, an honest review on its Store page helps other people find it.
This Actor is an independent tool. It is not affiliated with Greenhouse, Lever, Ashby, Workable, Recruitee, Personio, Teamtailor or the companies whose jobs it reads.
If the Actor was useful, an honest review on its Store page helps other people find it.