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

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

Pricing

from $3.00 / 1,000 jobs

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

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

Get every open job from any company's career page, live. Paste domains: the Actor finds the ATS (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Personio, Recruitee) and returns clean jobs with salary, remote type and country. Track new and closed jobs.

Pricing

from $3.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Tim Tonat

Tim Tonat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

What does Career Page Jobs Scraper do?

This Actor gets every open job straight from a company's own career page, live. Paste company domains like stripe.com or tado.com. It finds the applicant tracking system (ATS) behind the career page and returns one clean row per job in the same format for every system:

  • title, department, team, all locations, city, country and ISO country code
  • salary range (min, max, currency, period), from the ATS or found in the job description
  • workplace type: remote, hybrid or on-site
  • employment type, seniority, publish date, language, job URL and apply URL
  • the full job description as plain text

Supported systems: Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Personio and Recruitee. They power the career pages of tens of thousands of companies, from start-ups to Fortune 500, and many German Mittelstand companies (Personio).

No proxies and no browser: the Actor uses the public job board feeds of each ATS, so runs are fast, cheap and reliable.

Why use this career page scraper?

  • Live, not a database snapshot: the jobs come directly from the ATS at run time. No indexing delay, no stale or expired postings.
  • Your own company list: monitor exactly the companies you care about: your target accounts, your competitors or your portfolio.
  • Hiring signals for sales: who is hiring sales, data or engineering people right now? A company that hires is a company that buys. The summary shows open jobs, new jobs, top departments, remote share and salary share per company.
  • New and closed jobs: with Only new jobs since the last run, a daily schedule delivers just the new jobs and flags jobs that were closed. You only pay for new jobs, closed-job tracking is free.
  • Salary and remote filters that work: salaries are normalized to numbers, remote/hybrid/on-site is detected even when the ATS does not have a field for it.
  • Recruiting and job boards: fill a niche job board or an ATS-independent job feed with fresh jobs from hand-picked employers.

Which ATS are supported?

ATSTypical companiesSalaryRemote type
GreenhouseAirbnb, Stripe, Celonis, N26from descriptionfrom title/location
LeverPalantir, Zooxstructured fieldstructured field
AshbyOpenAI, Notionstructured fieldstructured field
WorkdayNVIDIA and many large enterprisesfrom descriptionfrom title/location
SmartRecruitersBosch and other enterprisesfrom descriptionstructured field
Workablemany SMBs worldwidefrom descriptionstructured field
PersonioGerman and European SMBs (tado, 1KOMMA5°)structured fieldfrom title/description
RecruiteeEuropean SMBs (Channable, bunq)structured fieldstructured field

How does the Actor find the job board?

  1. If you paste an ATS board URL (e.g. https://jobs.lever.co/palantir), it is used directly.
  2. Otherwise the Actor opens the website, looks for an embedded or linked job board, and follows links to career pages ("Careers", "Jobs", "Karriere", "Open positions") two levels deep.
  3. If the career page loads jobs with JavaScript only, it checks whether a board exists under the company name (e.g. stripe.com → Greenhouse board stripe). These rows show detectedVia: "slug-guess" in the summary.

Companies without a supported ATS get one free row with recordType: "company-error" and the reason.

How to scrape jobs from career pages

  1. Click Try for free.
  2. Paste company domains, career page URLs or ATS board URLs into Companies, one per line.
  3. Optional: set filters, e.g. title contains sales, location DE, workplace remote, only jobs with salary.
  4. Click Start.
  5. Open the Jobs table, or download everything as JSON, CSV or Excel. The Hiring summary shows the numbers per company.

To monitor companies, enable Only new jobs since the last run and create a Schedule (e.g. daily). Connect it to Slack, Google Sheets or your CRM via Integrations.

How much does it cost?

This Actor uses pay per event, platform usage is included:

  • per company with a detected job board
  • per job delivered after your filters

The current prices are shown in the Pricing tab. Companies without a supported ATS, closed-job rows and errors are free. If the details of a Workday or SmartRecruiters job can't be loaded even after retries, the job is delivered free with detailsMissing: true (no description or salary). Filters are applied before charging, so you only pay for the jobs you get. With monitoring you pay only for new jobs. Set a maximum cost per run and the Actor stops exactly at that limit.

Input

See the Input tab for all options.

{
"companies": ["notion.so", "tado.com", "https://jobs.lever.co/palantir"],
"titleKeywords": ["sales", "account executive"],
"locations": ["DE", "AT", "CH"],
"workplace": ["remote", "hybrid"],
"postedWithinDays": 30,
"onlyWithSalary": false,
"onlyNewSinceLastRun": false,
"includeDescription": true,
"mergeDuplicates": true
}

Title keywords match whole words: java finds "Java Developer", but not "JavaScript Developer". Add * for word starts: engineer* also finds "Engineering Manager".

Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

{
"recordType": "job",
"companyInput": "notion.so",
"id": "ashby:notion:1fc309c8-da20-4ff2-84c7-8b863ece2b0a",
"ats": "ashby",
"company": "Notion",
"title": "Software Engineer, Developer Platform",
"department": "Engineering",
"locations": ["San Francisco, California", "New York, New York"],
"city": "San Francisco",
"country": "United States",
"countryCode": "US",
"workplace": "hybrid",
"employmentType": "full-time",
"seniority": null,
"salary": { "min": 213000, "max": 320000, "currency": "USD", "period": "year", "source": "ats" },
"publishedAt": "2026-08-24T14:44:49.699Z",
"jobUrl": "https://jobs.ashbyhq.com/notion/1fc309c8-da20-4ff2-84c7-8b863ece2b0a",
"applyUrl": "https://jobs.ashbyhq.com/notion/1fc309c8-da20-4ff2-84c7-8b863ece2b0a/application",
"language": "en",
"descriptionText": "About the team ...",
"isNew": null
}

The Hiring summary (key-value store record SUMMARY) lists per company: detected ATS and board URL, open jobs, matching jobs, new and closed jobs, top departments, top countries, remote share and salary share.

FAQ

How is this different from job APIs that sell a database?

Database APIs index many career sites and serve you what they stored, usually with a delay of hours and only for companies they cover. This Actor reads the career page of the companies you choose, at the moment you run it, and also tells you which jobs were closed.

Why does a company show "No supported ATS found"?

The company uses a system that is not supported yet (e.g. SAP SuccessFactors, iCIMS, Taleo, an in-house career site) or blocks automated access to its homepage. Paste the URL of a single job posting instead of the domain: if the job is hosted by a supported ATS, the Actor recognizes the board.

Are Workday results complete?

Workday returns at most about 2,000 jobs per search. For very large employers, add title keywords: the Actor runs one Workday search per keyword, so each search stays below the limit. Workday and SmartRecruiters load each job's details separately, so keep Include job description on if you need the salary and the exact publish date from these systems.

What does "openJobs" in the summary mean?

All jobs the Actor loaded for the company before your filters. For Workday and SmartRecruiters with title keywords, these are the search results for your keywords, not every open job of the company.

How is the salary detected?

Lever, Ashby, Personio and Recruitee have structured salary fields (source: "ats"). For the others, the Actor finds salary ranges in the description, e.g. "$120k–$150k", "60.000 € - 75.000 € brutto" or "£45,000 to £55,000 per annum" (source: "text"). Ranges that are clearly not salaries, like revenue or headcount, are ignored.

The Actor only reads public job postings that companies publish to attract applicants, through the public feeds of their ATS. Job postings contain no personal data apart from occasional recruiter names in the description.

Something does not work

Please open an issue in the Issues tab with the company and the run ID. You can also start the Actor programmatically from the API tab.