Career Site Jobs Scraper – Greenhouse, Lever, Workday & more
Pricing
from $2.00 / 1,000 jobs
Career Site Jobs Scraper – Greenhouse, Lever, Workday & more
Search live jobs from 13,000+ company career sites (Greenhouse, Lever, Ashby, Workday) by title, location, remote and seniority, or scrape any company on 8 ATS. Salary ranges, Markdown descriptions, new-jobs mode with free closed-job alerts. No start fee.
Pricing
from $2.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Smoldesk Studios
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Career Site Jobs Scraper – Greenhouse, Lever, Workday, Ashby & more
Search live job postings straight from 13,000+ company career sites (over 1 million open jobs) by job title, location, remote type and seniority: Greenhouse, Lever, Ashby and Workday boards of companies like NVIDIA, Salesforce, SpaceX, Airbnb, Anduril, GitLab, Ramp and Notion. Or point it at any company's careers page on Greenhouse, Lever, Ashby, Workday, Workable, Recruitee, SmartRecruiters or Personio and get every open role. No login, no API key, no start fee.
Every job comes with title, company, department, location(s), remote / hybrid / on-site, employment type, seniority (intern → executive), post date, job URL and apply URL, the full description as clean Markdown (ready for LLMs and RAG) plus HTML, and a salary range (min / max / currency / period) taken from the ATS pay-transparency fields or, when the employer only writes it in the text, parsed from the description ("$165,000.00 - $265,000.00", "184,000 USD - 287,500 USD", "€55k–65k"). In our tests 3 out of 4 US remote jobs came with a salary.
The data is fetched live from each employer's own job board on every run, so there are no stale or expired jobs from a weeks-old database. Turn on "Only new jobs" and schedule it daily: you get a feed of fresh postings, pay only for jobs you haven't seen before, and get a free "closed" notice for every job that has been taken down since your last run.
What you can use it for
- Job boards & aggregators: fill a niche job board (remote, AI, climate, fintech…) with fresh postings direct from employers, with apply links, and remove jobs as soon as they close.
- Job alerts: a daily feed of new "senior data engineer, remote, US" jobs into Slack, Sheets, Airtable or email.
- Sales & recruiting leads (hiring signals): find companies hiring for roles that need your product or your candidates.
- Salary benchmarking: structured pay ranges from US pay-transparency postings across thousands of companies, by seniority.
- Competitor & market research: track what a set of companies is hiring for and how fast roles close.
- AI agents & RAG: give an LLM clean, current job ads in Markdown for job matching, CV tailoring or market summaries.
How to scrape company career sites
- Create a free Apify account (no credit card needed to start) and open this Actor.
- Choose how to run. Leave Companies empty to search the built-in directory of 13,000+ company boards by job title, or paste career-page links in Companies to read specific employers.
- Add filters. Use Job title keywords, Locations, Remote / hybrid / on-site, Seniority and Posted within (days). Exclude noisy recruiters with Exclude companies.
- Set the limit. Max jobs caps the total, Max jobs per company keeps one employer from filling the results.
- Click Start. Results appear in the Output tab while it runs.
- Download or connect. Export as JSON, CSV, Excel or HTML, or read the dataset through the API, Make, Zapier, n8n, Google Sheets or a webhook.
- Automate it. Open Schedules, add a daily schedule and switch on Only new jobs (and Also report closed jobs if you track removals).
Tips
- The directory covers Greenhouse, Lever, Ashby and Workday boards. For a company you care about, paste its careers link to read all its open jobs.
- A narrow search through the whole directory reads thousands of boards; the cost is explained in the Pricing section below.
- If a custom career page is not recognised, paste the underlying Greenhouse, Lever or Workday board link instead.
Two ways to run it
1. Search the directory (leave companies empty): the Actor checks the boards of 13,000+ companies (4,400 on Greenhouse, 1,400 on Lever, 2,200 on Ashby, 4,900 on Workday: US/EU tech, startups and large enterprises) and returns jobs matching your filters. It stops as soon as maxJobs is reached. Workday boards are searched when you give title keywords.
2. Scrape specific companies (fill companies): paste careers URLs, ats:slug pairs or just company names. The ATS is detected automatically:
| You paste | Platform |
|---|---|
https://boards.greenhouse.io/stripe, job-boards.greenhouse.io/airbnb, greenhouse:spacex | Greenhouse |
https://jobs.lever.co/palantir, jobs.eu.lever.co/... | Lever |
https://jobs.ashbyhq.com/ramp, ashby:notion | Ashby |
https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite | Workday |
https://apply.workable.com/huggingface | Workable |
https://bunq.recruitee.com | Recruitee |
https://jobs.smartrecruiters.com/BoschGroup | SmartRecruiters |
https://acme.jobs.personio.de | Personio |
notion (just a name) | looked up in the directory, then tried on every platform |
https://careers.acme.com (own careers page) | the page is checked for an embedded board from the list above |
Your title / location / remote / seniority / date filters apply in both modes.
Output
{"status": "open","ats": "greenhouse","company": "Anduril Industries","companySlug": "andurilindustries","id": "5244604007","title": "Mission Operations Product Manager, Group 5 Mission Autonomy","department": "Air Dominance & Strike : Mission Autonomy Engineering : Program Management","team": null,"location": "Remote","allLocations": ["Remote", "Costa Mesa, California, United States"],"countryCode": null,"workplaceType": "remote","isRemote": true,"employmentType": "full-time","experienceLevel": null,"seniority": "mid","postedAt": "2026-10-07T21:06:14+00:00","updatedAt": "2026-10-07T21:08:46+00:00","url": "https://boards.greenhouse.io/andurilindustries/jobs/5244604007?gh_jid=5244604007","applyUrl": "https://boards.greenhouse.io/andurilindustries/jobs/5244604007?gh_jid=5244604007","salaryText": "USD 166,000 - 220,000 per year","salaryMin": 166000,"salaryMax": 220000,"salaryCurrency": "USD","salaryPeriod": "year","salarySource": "ats","markdown": "Anduril Industries is a defense technology company with a mission to transform U.S. and allied military capabilities…","descriptionHtml": "<div class=\"content-intro\"><p>Anduril Industries is a defense technology company…","scrapedAt": "2026-10-14T05:33:11.359512+00:00"}
status:open, orclosedfor the free closed-job notices (those only carry id, title, company, URL, location andclosedDetectedAt).ats:greenhouse,lever,ashby,workday,workable,recruitee,smartrecruitersorpersonio.seniority:internship,entry,mid,senior,lead,manager,director,executiveornull(title has no level word). "Product / Project / Account Manager" titles count asmid, not people managers.workplaceType:remote,hybrid,on-siteornullwhen the board doesn't say.employmentType:full-time,part-time,contract,internshipornull.salarySource:ats(structured pay range from the job board) ordescription(parsed from the ad text).salaryPeriod:hour,day,week,monthoryear.countryCodeis filled where the platform provides it (Lever, Ashby, Workday, Workable, Recruitee, SmartRecruiters).
Input
{"titleKeywords": ["data engineer", "analytics engineer"],"titleExcludeKeywords": ["intern"],"locations": ["United States", "Remote"],"workplaceTypes": ["remote"],"seniorityLevels": ["senior", "lead"],"excludeCompanies": ["jobgether"],"postedWithinDays": 7,"maxJobs": 200,"maxJobsPerCompany": 5,"companies": [],"ats": [],"onlyNewJobs": false,"reportClosedJobs": true}
| Field | Description |
|---|---|
titleKeywords | Job title contains ANY of these (whole words: engineer matches "Engineering", java doesn't match "JavaScript"). Empty = all titles |
titleExcludeKeywords | Skip titles containing any of these |
locations | Location contains ANY of these words, e.g. New York, Germany, London, Remote, US |
workplaceTypes | remote, hybrid, on-site |
seniorityLevels | internship, entry, mid, senior, lead, manager, director, executive |
excludeCompanies | Skip companies whose name/slug contains these (agencies, aggregators) |
postedWithinDays | Only jobs first published in the last N days (0 = any) |
maxJobs | Stop after this many jobs (0 = no limit) |
companies | Scrape only these companies instead of the directory (see table above) |
maxJobsPerCompany | Cap per company, newest kept (0 = no cap) |
ats | Directory search only: limit to greenhouse, lever, ashby and/or workday |
onlyNewJobs | Skip jobs this same search returned in earlier runs |
reportClosedJobs | With onlyNewJobs: add a free closed record for jobs from earlier runs that were taken down |
Pricing
Pay per result, no monthly rental:
| Event | Price |
|---|---|
| Job | $2.00 per 1,000 jobs (full description, salary and seniority included) |
| Career sites checked | $0.0004 per 100 boards read ($0.004 per 1,000) |
| Closed-job notice | free |
What that means in practice:
| Run | You pay |
|---|---|
| 20 jobs, stops early after ~200 boards | about $0.04 |
| Specific companies, 10 boards, 100 jobs | about $0.20 |
| Whole 13,000-company directory, 145 matching jobs | about $0.34 |
| Whole directory, only 5 matching jobs | about $0.06 |
Set "Maximum cost per run" in the run options to stay within budget. The Actor stops cleanly at your limit and never charges for jobs it doesn't deliver. The same job is returned (and charged) once per run, and boards that are retried after throttling are charged once.
Use with AI (LangChain / LlamaIndex / CrewAI)
Each job's markdown field is the full ad with HTML stripped and headings/lists kept, so it drops straight into an LLM pipeline. With LangChain (pip install langchain-apify):
from langchain_apify import ApifyWrapperfrom langchain_core.documents import Documentapify = ApifyWrapper() # reads APIFY_API_TOKENloader = apify.call_actor(actor_id="smoldesk/career-site-jobs-scraper",run_input={"titleKeywords": ["machine learning engineer"], "workplaceTypes": ["remote"],"seniorityLevels": ["senior"], "maxJobs": 100},dataset_mapping_function=lambda job: Document(page_content=job.get("markdown") or "",metadata={k: job.get(k) for k in ("url", "title", "company", "location", "workplaceType", "seniority","salaryMin", "salaryMax", "salaryCurrency", "postedAt")},),)docs = loader.load()
Already have a run? Load its dataset with ApifyDatasetLoader(dataset_id="<run's dataset ID>", dataset_mapping_function=...) from the same package. LlamaIndex: ApifyActor from llama-index-readers-apify with the same actor_id and mapping. CrewAI / MCP clients: add the Actor as a tool through the Apify MCP server: https://mcp.apify.com?actors=smoldesk/career-site-jobs-scraper.
Tips
- A search that matches few jobs checks every board in the directory, which takes about 20 minutes (~$0.05 in board checks). A search that reaches
maxJobsearly finishes in under a minute. Narrow the directory withats(e.g. onlyworkdayfor large enterprises, or onlyashbyfor startups) to make it faster and cheaper. - Use
maxJobsPerCompany(e.g. 5) so a single big employer or job aggregator doesn't fill your whole result, andexcludeCompaniesto drop recruiting agencies. - Monitoring: turn on
onlyNewJobs, setpostedWithinDaysto2and schedule the Actor daily. Closed jobs come back as freestatus: "closed"records, so your job board can unpublish them. - Workday uses its own search ranking, so for big Workday employers the Actor reads the first pages of results for each keyword. For a complete list of one Workday company, put it in
companiesand leavetitleKeywordsempty. - Lever boards don't show a post date in their list, so with
postedWithinDaysthe Actor checks Lever jobs one by one. That's slower, but nothing extra to pay. - Missing a company? Put its careers URL in
companies. The directory is refreshed regularly.
FAQ
Do I need an account or API key for Greenhouse, Lever, Workday etc.? No. The Actor reads the same public job boards that candidates see.
Do I need proxies? No. All sources are public job-board APIs.
Is it legal? The Actor only collects job ads that employers publish openly for candidates. Follow privacy laws (GDPR, CCPA) in your use case if you store recruiter names or emails that appear in ad text.
Which ATS platforms aren't covered? iCIMS, Taleo, SuccessFactors and BambooHR are not supported yet. Pages using them are skipped with a warning and nothing is charged.
Feedback
Found a bug or missing a field? Open an issue in the Issues tab. If the Actor saved you time, a short review on this page helps other people find it.
More Actors from Smoldesk Studios
- Weibo Scraper: keyword and hashtag search, posts, comments, profiles and the hot-search board from China's biggest microblog, no login
- Google Hotels Scraper: hotel prices for your dates in any currency, ratings, review aspects and booking-site prices, worldwide
- Bilibili Scraper: videos, danmaku, comments and creator stats from China's YouTube (哔哩哔哩)
- Google Trends Scraper: interest over time, by region and city, related queries and Trending now — no API key
- SEEK, JobStreet & JobsDB Scraper: jobs and normalised salaries in 8 APAC countries
- Substack Scraper: newsletters, subscriber counts and posts
- Shopify Store Analyzer: products, prices and apps of any Shopify store
- Telegram Channel Scraper: public channel posts and stats