Job Postings & Career Page Scraper – Workday, Greenhouse, Lever avatar

Job Postings & Career Page Scraper – Workday, Greenhouse, Lever

Pricing

$1.00 / 1,000 jobs

Go to Apify Store
Job Postings & Career Page Scraper – Workday, Greenhouse, Lever

Job Postings & Career Page Scraper – Workday, Greenhouse, Lever

Job postings scraper for career pages: every open job listing from Workday, Oracle, ADP, Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Workable, Personio, Breezy, Teamtailor, Rippling, BambooHR, JazzHR, Pinpoint, JOIN, Jobvite, Manatal in one schema, remote, salary. ATS hiring data by URL.

Pricing

$1.00 / 1,000 jobs

Rating

0.0

(0)

Developer

Forever Tools

Forever Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

20 days ago

Last modified

Share

Company Jobs Scraper — Workday, Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Workable, Personio, Breezy, Teamtailor, Rippling, BambooHR, JazzHR, Pinpoint, JOIN, Jobvite, Manatal, Oracle, ADP

Get every open job at the companies you care about in one clean, unified schema, straight from the official public job-board endpoints of nineteen widely used applicant tracking systems (ATS).

Input is flexible: paste job-board URLs, ats:slug pairs, bare board names, or just company websites: the actor finds the careers page and detects which ATS the company uses.

Great for: job boards & aggregators, hiring-intent signals for sales (who's hiring SDRs in Berlin?), recruiting & sourcing, competitor/team-growth tracking, labour-market research, and AI agents that need live job data.

Input example

{
"companies": [
"https://www.figma.com",
"https://jobs.ashbyhq.com/notion",
"greenhouse:stripe",
"https://jobs.lever.co/palantir",
"ServiceNow",
"https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite",
"https://careers.jpmorgan.com"
],
"keywords": ["engineer", "data"],
"locations": ["London", "Remote"],
"postedWithinDays": 30
}

https://careers.jpmorgan.com is a plain company website: the actor finds that it runs on Oracle Recruiting Cloud. The same works for ADP Workforce Now and the other systems.

Output (one row per job, same fields for every ATS)

{
"company": "Stripe",
"ats": "greenhouse",
"boardSlug": "stripe",
"jobId": "8172503",
"title": "Abuse Research Engineer",
"department": "Security Analytics",
"location": "Remote from the US",
"remote": true,
"workplaceType": null,
"employmentType": null,
"salaryMin": null, "salaryMax": null, "salaryCurrency": null, "salaryPeriod": null,
"postedAt": "2026-09-09T14:52:09.000Z",
"updatedAt": "2026-09-25T20:45:00.000Z",
"url": "https://stripe.com/jobs/search?gh_jid=8172503",
"applyUrl": "https://stripe.com/jobs/search?gh_jid=8172503",
"descriptionText": "Who we are ...",
"descriptionHtml": "<p>Who we are ..."
}

Salary is filled in when the company publishes it: from the ATS's structured pay fields (Greenhouse pay-transparency ranges, Ashby, Lever, Recruitee, Rippling) or, failing that, from a pay range written in the job description (salaryText shows the text it was read from). The key-value store record REPORT lists, per company, the detected ATS, total open jobs and how many were returned.

Pricing

$0.001 per job ($1 per 1,000 jobs), description included. You only pay for jobs that pass your filters. No subscription. Examples: all ~500 open roles at a mid-size tech company = about $0.50; a daily feed of new jobs (postedWithinDays: 1) across 200 companies usually returns a few hundred rows = a few tens of cents per day. Companies where no job board is found cost nothing (they only appear in the REPORT record). Apify platform compute is billed separately and is small: the actor calls JSON endpoints, no browser.

How it works

  1. Resolve each input. An ats:slug pair or a job-board URL is used directly. A company website is fetched (plus /careers and /jobs) and scanned for a link to a supported ATS. A bare name like ServiceNow is tried as a board slug on every supported ATS except Workday (Workday needs the full career-site URL).
  2. Fetch the board through the ATS's public job-board endpoint, the same data the company's own careers page shows.
  3. Normalize every posting into the schema above, so a Greenhouse job and a Workday job have the same fields.
  4. Filter and push. Filters run before a job is saved, so filtered-out jobs are never charged.

Filters

InputWhat it does
keywordsKeep jobs whose title contains any of the words (case-insensitive substring: engineer matches "Senior Software Engineer").
locationsKeep jobs whose location text contains any of the words. Remote also matches jobs flagged as remote.
remoteOnlyKeep only remote jobs.
postedWithinDaysKeep jobs posted in the last N days. Jobs where the ATS doesn't publish a date are kept. 0 = no limit.
includeDescriptionTurn off to get smaller rows without descriptionText / descriptionHtml.
maxJobsPerCompanyCap rows per company (0 = all).

Use cases

Hiring signals for B2B sales

Put your target accounts in companies, filter titles like SDR, RevOps or Data Engineer, and schedule it weekly. A company opening those roles is often buying tools for them.

Job boards and niche aggregators

Build a niche board (remote Rust jobs, climate-tech jobs in Europe) from a curated list of employers. The unified schema means one importer handles every ATS, and url / applyUrl send candidates to the employer's own page.

Recruiting and competitor tracking

Track open roles and department growth at competitors, or catch new postings at the companies your candidates want.

Labour-market research and AI agents

Pull clean, structured postings with salary ranges (where published) for analysis, or give an LLM agent live job data through the Apify API or MCP server.

FAQ

Which input format should I use? The job-board URL or ats:slug is fastest and most reliable. Company websites work when the careers page links to a supported ATS; if detection fails, the REPORT record says so and you can paste the board URL instead.

Why did a company return 0 jobs? Either the company uses an unsupported system (iCIMS, Taleo, SuccessFactors, in-house pages), its board currently has no openings, or your filters removed everything. REPORT shows the detected ATS and the total open jobs before filtering.

Is salary included? Yes, when the company publishes it (salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText): structured pay ranges from the ATS where available, otherwise a range stated in the description (needs includeDescription). salaryCurrency stays null when a description says only "$" without naming the currency. Many companies publish no pay at all (common outside the US), so expect nulls.

How do I get only new jobs every day? Save a task with your companies and postedWithinDays: 1, and add an Apify schedule. Deduplicate on ats + jobId if you keep a history.

Does it scrape LinkedIn or Indeed? No. It reads employers' own ATS job boards only. That is where postings originate, usually with fuller descriptions.

Is this legal to use? It reads public job postings that companies publish for anyone to see, through public endpoints, without logging in, and collects no personal data. You are responsible for how you use the data.

Supported ATS & slugs

ATSExample board URLslug
Greenhouseboards.greenhouse.io/stripestripe
Lever (US & EU)jobs.lever.co/palantirpalantir
Ashbyjobs.ashbyhq.com/notionnotion
SmartRecruitersjobs.smartrecruiters.com/ServiceNowServiceNow
Recruiteebunq.recruitee.combunq
Workableapply.workable.com/huggingfacehuggingface
Personiopersonio.jobs.personio.depersonio
Breezy HRacme.breezy.hracme
Teamtailoracme.teamtailor.comacme
Ripplingats.rippling.com/acme/jobsacme
BambooHRacme.bamboohr.com/careersacme
JazzHRacme.applytojob.com/applyacme
Pinpointacme.pinpointhq.compaste the URL or pinpoint:acme (not guessed from a bare name)
JOINjoin.com/companies/acmeacme
Jobvitejobs.jobvite.com/acme/jobsacme
Manatalcareers-page.com/acmeacme
Oracle Recruiting Cloudjpmc.fa.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1001paste the full career-site URL
ADP Workforce Nowworkforcenow.adp.com/mascsr/default/mdf/recruitment/recruitment.html?cid=<uuid>paste the full career-center URL (or adp:<cid>)
Workdaynvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSitepaste the full career-site URL

Notes

  • Only public job postings are read, through each ATS's documented public job-board endpoint. No logins, no personal data.
  • Workday and Oracle list at most 2,000 jobs per search; with a single title keyword the search is done on their side (whole words), so large employers still work well.
  • Companies using other systems (iCIMS, legacy Taleo, …) are reported in REPORT as "no supported job board found".
  • JazzHR shows a posting date on only some job pages, so postedAt is often empty there; BambooHR pay is the employer's free text (salaryText), parsed into min/max only when it is a clear range.
  • Oracle Recruiting Cloud: the company name is the career site's name, and pay is not published by Oracle's public API.
  • ADP Workforce Now: the public API has no company name, so company is the career center's cid; use the input column to tell companies apart. Pay comes from the posting's pay range when the employer sets one.
  • Schedule it daily with postedWithinDays: 1 to get a feed of new jobs.
  • Built and maintained with AI assistance. Problems or requests: use the Issues tab.

Other actors by the same developer (same flat pay-per-result pricing, no subscription):

Integrations

Run it from the Apify API, a schedule, or no-code tools: the Apify apps for Zapier, Make and n8n can start any public actor ("Run Actor") and read its dataset. AI agents can call it through the Apify MCP server.

Ready-made examples

One-click tasks you can run or copy and adapt: