Career Site Jobs Scraper: Greenhouse, Lever, Ashby, Workable avatar

Career Site Jobs Scraper: Greenhouse, Lever, Ashby, Workable

Pricing

from $1.20 / 1,000 job returneds

Go to Apify Store
Career Site Jobs Scraper: Greenhouse, Lever, Ashby, Workable

Career Site Jobs Scraper: Greenhouse, Lever, Ashby, Workable

Get normalized job postings straight from companies' own career sites on Greenhouse, Lever, Ashby and Workable. Auto-detects the ATS from any careers URL, filters by keyword, location and remote, and can return only jobs that are new since the last run.

Pricing

from $1.20 / 1,000 job returneds

Rating

0.0

(0)

Developer

Fatih S.

Fatih S.

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Share

Career Site Jobs Scraper: Greenhouse, Lever, Ashby & Workable

Get every open job straight from the source: the company's own applicant-tracking system (ATS). Paste career-page URLs, ATS board links or just company slugs, and get clean, normalized job postings in one dataset, whether the company runs Greenhouse, Lever, Ashby or Workable.

Built for scheduled monitoring: switch on Only new jobs and each run returns (and charges for) only postings that appeared since the last run.

What you get

  • ✅ 4 ATS platforms, one schema: Greenhouse, Lever, Ashby and Workable all map to the same fields.
  • 🔎 ATS auto-detection: paste https://www.figma.com/careers/ and the Actor finds the Greenhouse board behind it. Bare slugs like linear are looked up on Greenhouse, Lever, Ashby and Workable.
  • 🆕 Only new jobs since last run: job IDs are remembered per company in a named key-value store. Perfect for daily alerts and job-board feeds.
  • 💰 Salary when published: structured pay ranges from Ashby and Lever, plus pay-transparency ranges parsed from descriptions (min, max, currency, interval).
  • 🧹 Filters: keywords (title, department or full text), exclude words, locations, remote/hybrid/on-site, departments, employment type, posted within N days.
  • 📊 Hiring signals per company: a SUMMARY record with job counts, new and removed jobs, top departments, remote share and salary share for each company.
  • 🛡️ Polite and reliable: official public job-board endpoints only, robots.txt checked per host, Crawl-delay honoured, automatic back-off on 429s, and per-company error isolation, so one bad URL never kills the run.
  • ⚡ Fast and cheap: plain HTTP JSON with no browser and no proxy. In our final test, 3,062 jobs from 10 companies on Greenhouse, Lever, Ashby and Workable came back in about 11 seconds.

Input examples

Pull everything from a few companies

{
"companies": [
"https://job-boards.greenhouse.io/stripe",
"https://jobs.lever.co/palantir",
"https://jobs.ashbyhq.com/openai",
"https://apply.workable.com/huggingface/"
]
}

US or remote engineering roles posted in the last 7 days, text descriptions only

{
"companies": ["greenhouse:anthropic", "ashby:notion", "linear", "https://www.figma.com/careers/"],
"keywords": ["engineer", "ML"],
"excludeKeywords": ["intern"],
"locations": ["United States", "Remote"],
"postedWithinDays": 7,
"descriptionFormat": "text"
}

Daily new-jobs monitor (schedule this task)

{
"companies": ["greenhouse:stripe", "lever:spotify", "ashby:ramp", "workable:huggingface"],
"onlyNew": true,
"stateStoreName": "my-sales-hiring-monitor",
"skipOutputOnFirstRun": true,
"keywords": ["account executive", "SDR", "BDR"],
"keywordsIn": "title"
}

Accepted company formats

You pasteDetected as
https://job-boards.greenhouse.io/stripe, https://boards.greenhouse.io/embed/job_board?for=stripe, greenhouse:stripeGreenhouse stripe
https://jobs.lever.co/palantir, https://jobs.eu.lever.co/acme, lever:palantir, lever-eu:acmeLever (global or EU)
https://jobs.ashbyhq.com/ramp, ashby:rampAshby ramp
https://apply.workable.com/huggingface/, workable:huggingfaceWorkable huggingface
https://www.figma.com/careers/ (any careers page)Scanned for ATS links and embeds
linear (bare slug)Probed on Greenhouse, Lever, Ashby and Workable; the board with most jobs wins

Output

One dataset item per job:

{
"id": "ashby:notion:1fc309c8-da20-4ff2-84c7-8b863ece2b0a",
"jobId": "1fc309c8-da20-4ff2-84c7-8b863ece2b0a",
"sourceAts": "ashby",
"companySlug": "notion",
"company": "Notion",
"title": "Software Engineer, Developer Platform",
"department": "Engineering",
"team": "Engineering",
"location": "San Francisco, California",
"locations": [
"San Francisco, California",
"New York, New York"
],
"country": "United States",
"isRemote": false,
"workplaceType": "hybrid",
"employmentType": "FULL_TIME",
"employmentTypeRaw": "FullTime",
"postedAt": "2026-08-24T14:44:49.699Z",
"updatedAt": null,
"salary": {
"min": 213000,
"max": 320000,
"currency": "USD",
"interval": "YEAR",
"text": "$213,000 - $320,000",
"source": "description"
},
"descriptionText": "Who We Are\n\nNotion is the collaborative AI workspace where teams and agents think together. We're building one place where your knowledge, projects, meetings, a…",
"descriptionHtml": "<h1>Who We Are</h1><p style=\"min-height:1.5em\">Notion is the collaborative AI wo…",
"jobUrl": "https://jobs.ashbyhq.com/notion/1fc309c8-da20-4ff2-84c7-8b863ece2b0a",
"applyUrl": "https://jobs.ashbyhq.com/notion/1fc309c8-da20-4ff2-84c7-8b863ece2b0a/application",
"requisitionId": null,
"hiringEntity": null,
"boardUrl": "https://jobs.ashbyhq.com/notion",
"scrapedAt": "2026-10-08T09:08:19.189Z"
}
FieldNotes
idStable unique key ats:company:jobId; use it for de-duplication
isRemote / workplaceTypeisRemote = fully remote. workplaceType is remote, hybrid, onsite or null
employmentTypeFULL_TIME, PART_TIME, CONTRACT, INTERN, TEMPORARY, OTHER or null (raw value in employmentTypeRaw)
postedAt / updatedAtISO 8601. Greenhouse = first published / last updated, Lever = created, Ashby = published, Workable = published
salary{min, max, currency, interval, text, source}; source is structured (from the ATS) or description (parsed pay range)
countryFrom the ATS where available, otherwise inferred from the location text
isNew, firstSeenAtOnly in Only new jobs mode

The run's key-value store has a SUMMARY record listing each input with status (ok, not_found, robots_disallowed, unsupported_ats, ats_not_detected, error), job counts, new/removed jobs, top departments, remote share and salary share.

Field coverage (measured on 2,900+ live jobs from 9 companies, Oct 2026)

ATSTitle, location, URLs, descriptionDepartmentEmployment typePosted dateSalary (where employer publishes it)
Greenhouse100%100%rarely exposed100%parsed from description (3–88% depending on employer)
Lever100%100%92–100%100%34–65%
Ashby100%100%100%100%66–81%
Workable100%100%100%100%if published

Pricing

Pay per event, no subscription:

EventPrice
Job returned$0.002 per job ($2 per 1,000 jobs). Lower on paid Apify plans: $0.0018 (Starter), $0.0015 (Scale), $0.0012 (Business)
Company board checked$0.0003 per company board fetched successfully

Boards that fail (not found, unsupported ATS, robots.txt) are not charged. In Only new jobs mode you pay only for new jobs plus the per-company check, so a daily monitor of 100 companies with a few dozen new postings costs roughly $0.10–0.15 per day. Set Max total charge on the run to cap spend; the Actor stops cleanly at the limit.

Example: pulling all ~725 open Stripe jobs costs about $1.45.

Good to know

  • Careers pages rendered by JavaScript may hide their ATS link. If detection fails, paste the ATS board URL instead.
  • Not supported yet: Workday. Workday career-site URLs are recognized and listed in the run SUMMARY as unsupported_ats (no charge). Workday support is planned for a later version.
  • Not supported: SmartRecruiters, whose api.smartrecruiters.com/robots.txt disallows all crawlers except LinkedInBot, and sites like LinkedIn, Indeed and Glassdoor, whose terms prohibit scraping.
  • Recruiter and hiring-manager names are not collected. Output is company and job data only.
  • Unlisted Ashby jobs (direct-link only) are skipped.

The Actor reads job postings that employers publish for the public through their ATS's public job-board endpoints, the same data any visitor sees without logging in. It honours robots.txt and rate limits and collects no personal data. Job descriptions are the employers' content, so check that your use (e.g. republishing on a job board) is permitted. This is not legal advice.

FAQ

How do I find a company's ATS? Paste their careers page URL; the Actor detects it. Or open any job on their site and look at the URL (greenhouse.io, lever.co, ashbyhq.com, workable.com).

Can I use different filters for different companies? Run separate tasks, each with its own stateStoreName if you use Only new jobs.

How do I get alerts? Schedule a task with Only new jobs on, then add an integration (Slack, email, webhook, Zapier, Make) that fires when the run succeeds.