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

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

Pricing

from $2.00 / 1,000 jobs

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

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

ATS jobs API for company career pages. Give company names or domains, get every open job from Greenhouse, Lever, Ashby, Workable, Recruitee and SmartRecruiters in one format, with salary ranges and full descriptions. Filter by title, location, remote and date.

Pricing

from $2.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Ogochukwu Ozor

Ogochukwu Ozor

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Security

Limited permissions

Share

An ATS jobs API for company career pages. Get every open job from the companies you name, in one clean format, straight from their official job boards.

Type a company name, website or job board link. The scraper works out which hiring system (ATS) the company uses, reads its public job board and returns every listing with title, location, remote/hybrid, department, employment type, posting date, apply link, salary where published and the full description.

  • 6 hiring systems: Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters
  • No ATS detective work: give "Stripe", "stripe.com" or a board URL; it finds the board
  • One schema for all: the same fields whatever system the company uses
  • Salary ranges: from Ashby, Lever and Recruitee listings, Greenhouse pay-transparency ranges, and ranges written in descriptions
  • Fresh: read live from the company's board on every run, nothing cached
  • Official endpoints only: each system's public job board API, the same one that powers the company's careers page. No logins, no proxies.

Supported hiring systems (ATS)

ATSExample board URL you can pasteSalary data
Greenhousehttps://job-boards.greenhouse.io/airbnb or boards.greenhouse.io/airbnbPay-transparency ranges (mostly US jobs)
Leverhttps://jobs.lever.co/palantir (EU boards too)Salary range when the company sets one
Ashbyhttps://jobs.ashbyhq.com/openaiCompensation ranges, often with equity
Workablehttps://apply.workable.com/huggingface/Ranges written in the description
Recruiteehttps://bunq.recruitee.comSalary field when published
SmartRecruitershttps://jobs.smartrecruiters.com/BoschGroupRanges written in the description

Or just type the company name or website and let the scraper find the board.

Who it's for

  • Job seekers and job boards: track openings at target companies, build niche job boards and job alerts
  • Sales and lead generation: use hiring signals (who is hiring, for which teams, where) to find companies that need your product
  • Recruiters and talent teams: watch competitors' open roles and new team build-outs
  • Investors and analysts: follow headcount growth, new offices and salary ranges across a portfolio
  • AI agents and automations: structured job postings data from named companies, ready for LLMs

How to use it

  1. Click Try for free.
  2. Add companies, one per line: Stripe, notion.so, https://jobs.lever.co/palantir.
  3. Optionally filter by title, location, department, remote or posting date.
  4. Click Start. Results come back as a table you can export to JSON, CSV, Excel or HTML.

A board URL is the most reliable input. A plain name works when the company's board uses its name (most do). If a name isn't found, the run summary tells you, and pasting the careers page URL usually fixes it.

Input

FieldDefaultWhat it does
Companies—Names, websites or job board URLs
Job title containsallKeep titles containing any of these words
Job title does not contain—Drop titles containing any of these, e.g. intern
Location containsalle.g. London, Germany, Remote
Department or team containsalle.g. Engineering, Sales
Remote jobs onlyoffOnly jobs marked remote
Posted within the last N daysanye.g. 7 for last week's jobs
Include job descriptionsonFull description as plain text
Fetch Greenhouse pay rangesonOne extra quick request per Greenhouse job
Maximum jobs per companyno limitNewest first
Maximum jobs in total1000You pay per job saved

Output example

{
"company": "Airbnb",
"ats": "greenhouse",
"boardSlug": "airbnb",
"jobId": "7712345",
"title": "Senior Software Engineer, Payments",
"department": "Engineering",
"location": "United States",
"remote": true,
"workplaceType": "Remote",
"employmentType": null,
"postedAt": "2026-11-03T10:12:00-04:00",
"url": "https://careers.airbnb.com/positions/7712345?gh_jid=7712345",
"applyUrl": "https://careers.airbnb.com/positions/7712345?gh_jid=7712345",
"salaryMin": 212000,
"salaryMax": 265000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"salaryText": "Pay Range: 212,000-265,000 USD",
"salarySource": "job board",
"descriptionText": "Airbnb was born in 2007 when ...",
"input": "Airbnb",
"scrapedAt": "2026-11-06T09:00:00+00:00"
}

Values are standardised across systems: workplaceType is Remote, Hybrid or On-site; employmentType is Full-time, Part-time, Contract, Internship or Temporary; salaryPeriod is hour, day, week, month or year. Fields a company doesn't publish are null.

A SUMMARY record in the run's key-value store lists, for each input, the job board found, how it was found and how many jobs are open, plus any other boards that matched the same name.

Pricing

$2 per 1,000 jobs saved. A 50-company run with 2,000 jobs costs about $4. Filters are applied before saving, so you only pay for the jobs you keep. You can cap the maximum charge per run.

Use it from code

curl -X POST "https://api.apify.com/v2/acts/nikaido_thc~company-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies": ["Stripe", "OpenAI"], "titleKeywords": ["engineer"], "postedWithinDays": 7}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("nikaido_thc/company-jobs-scraper").call(
run_input={"companies": ["Stripe", "OpenAI"], "remoteOnly": True}
)
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["company"], job["title"], job["location"], job["salaryText"])

Schedule it daily with Apify Schedules and send new jobs to Google Sheets, Slack, a webhook, Make, Zapier or n8n through Integrations. AI agents can call it through the Apify MCP server.

FAQ

How is this different from LinkedIn or Indeed job scrapers? Jobs come straight from the company's own careers page, so they are the original postings with the direct apply link, appear there first, and include the full description and published salary. No job board duplicates or reposted agency ads.

Which companies are supported? Any company whose careers page runs on Greenhouse, Lever, Ashby, Workable, Recruitee or SmartRecruiters. That includes a large share of tech companies and startups. Workday, iCIMS, Taleo and in-house career sites are not supported yet.

Why wasn't my company found? Its board may use a different name from the company (e.g. "acme-corp"), or it uses a system not listed above. Paste the careers page or job board URL instead.

Why is salary missing for some jobs? Only some companies publish pay. US jobs on Greenhouse often have pay-transparency ranges; many European jobs don't publish salary at all.

Is this allowed? The scraper only reads the public job board endpoints that each hiring system provides so companies can show their jobs on their own careers sites. It collects job listings only, no applicant or candidate data.

Feedback

Want another hiring system or field? Open an issue on the Issues tab.