Career Site Jobs Scraper – Greenhouse, Lever, Workday & more avatar

Career Site Jobs Scraper – Greenhouse, Lever, Workday & more

Pricing

from $2.00 / 1,000 jobs

Go to Apify Store
Career Site Jobs Scraper – Greenhouse, Lever, Workday & more

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

Smoldesk Studios

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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

  1. Create a free Apify account (no credit card needed to start) and open this Actor.
  2. 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.
  3. Add filters. Use Job title keywords, Locations, Remote / hybrid / on-site, Seniority and Posted within (days). Exclude noisy recruiters with Exclude companies.
  4. Set the limit. Max jobs caps the total, Max jobs per company keeps one employer from filling the results.
  5. Click Start. Results appear in the Output tab while it runs.
  6. 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.
  7. 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 pastePlatform
https://boards.greenhouse.io/stripe, job-boards.greenhouse.io/airbnb, greenhouse:spacexGreenhouse
https://jobs.lever.co/palantir, jobs.eu.lever.co/...Lever
https://jobs.ashbyhq.com/ramp, ashby:notionAshby
https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSiteWorkday
https://apply.workable.com/huggingfaceWorkable
https://bunq.recruitee.comRecruitee
https://jobs.smartrecruiters.com/BoschGroupSmartRecruiters
https://acme.jobs.personio.dePersonio
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, or closed for the free closed-job notices (those only carry id, title, company, URL, location and closedDetectedAt).
  • ats: greenhouse, lever, ashby, workday, workable, recruitee, smartrecruiters or personio.
  • seniority: internship, entry, mid, senior, lead, manager, director, executive or null (title has no level word). "Product / Project / Account Manager" titles count as mid, not people managers.
  • workplaceType: remote, hybrid, on-site or null when the board doesn't say. employmentType: full-time, part-time, contract, internship or null.
  • salarySource: ats (structured pay range from the job board) or description (parsed from the ad text). salaryPeriod: hour, day, week, month or year.
  • countryCode is 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
}
FieldDescription
titleKeywordsJob title contains ANY of these (whole words: engineer matches "Engineering", java doesn't match "JavaScript"). Empty = all titles
titleExcludeKeywordsSkip titles containing any of these
locationsLocation contains ANY of these words, e.g. New York, Germany, London, Remote, US
workplaceTypesremote, hybrid, on-site
seniorityLevelsinternship, entry, mid, senior, lead, manager, director, executive
excludeCompaniesSkip companies whose name/slug contains these (agencies, aggregators)
postedWithinDaysOnly jobs first published in the last N days (0 = any)
maxJobsStop after this many jobs (0 = no limit)
companiesScrape only these companies instead of the directory (see table above)
maxJobsPerCompanyCap per company, newest kept (0 = no cap)
atsDirectory search only: limit to greenhouse, lever, ashby and/or workday
onlyNewJobsSkip jobs this same search returned in earlier runs
reportClosedJobsWith onlyNewJobs: add a free closed record for jobs from earlier runs that were taken down

Pricing

Pay per result, no monthly rental:

EventPrice
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 noticefree

What that means in practice:

RunYou pay
20 jobs, stops early after ~200 boardsabout $0.04
Specific companies, 10 boards, 100 jobsabout $0.20
Whole 13,000-company directory, 145 matching jobsabout $0.34
Whole directory, only 5 matching jobsabout $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 ApifyWrapper
from langchain_core.documents import Document
apify = ApifyWrapper() # reads APIFY_API_TOKEN
loader = 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 maxJobs early finishes in under a minute. Narrow the directory with ats (e.g. only workday for large enterprises, or only ashby for 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, and excludeCompanies to drop recruiting agencies.
  • Monitoring: turn on onlyNewJobs, set postedWithinDays to 2 and schedule the Actor daily. Closed jobs come back as free status: "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 companies and leave titleKeywords empty.
  • Lever boards don't show a post date in their list, so with postedWithinDays the 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