Company Careers & ATS Job Scraper avatar

Company Careers & ATS Job Scraper

Pricing

$4.00 / 1,000 job delivereds

Go to Apify Store
Company Careers & ATS Job Scraper

Company Careers & ATS Job Scraper

Scrape open roles straight from company job boards on Greenhouse, Lever, Ashby and Workday. Charges only for jobs it actually delivers.

Pricing

$4.00 / 1,000 job delivereds

Rating

0.0

(0)

Developer

munin

munin

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Give it a company career page and get back every open role, with the full job description, as structured data.

It talks to the company's own job board — Greenhouse, Lever, Ashby and Workday — instead of scraping a job aggregator. That means the data is first-hand: the same postings the company publishes, with their own departments, locations, requisition IDs and apply links, and no duplicates or stale reposts from an aggregator's index.

You are charged per job delivered. Companies that fail, boards that return nothing, and jobs removed by your filters cost you nothing.

What you put in

You do not need to know which ATS a company uses. Any of these work:

InputExample
Company career pagehttps://www.anthropic.com/careers
Greenhouse boardhttps://boards.greenhouse.io/stripe
Lever boardhttps://jobs.lever.co/spotify
Ashby boardhttps://jobs.ashbyhq.com/openai
Workday sitehttps://nvidia.wd5.myworkdayjobs.com/en-US/NVIDIAExternalCareerSite
Short formgreenhouse:stripe, workday:nvidia/wd5/NVIDIAExternalCareerSite

When you give a plain company page, the Actor reads that page once to find the board embedded in it, and if the page hides it behind JavaScript it falls back to looking the company up on each ATS directly.

What you get

One row per job:

{
"platform": "greenhouse",
"company": "stripe",
"jobId": "6349832",
"requisitionId": null,
"title": "Software Engineer, Payments",
"url": "https://job-boards.greenhouse.io/stripe/jobs/6349832",
"applyUrl": "https://job-boards.greenhouse.io/stripe/jobs/6349832#app",
"location": "San Francisco, New York, Remote (US)",
"locations": ["San Francisco", "New York", "Remote (US)"],
"department": "Engineering",
"team": "Payments",
"employmentType": "Full time",
"compensation": "$180,000 - $250,000 USD",
"isRemote": true,
"postedAt": "2026-09-12T04:35:19.000Z",
"updatedAt": "2026-09-15T04:55:55.000Z",
"descriptionText": "About Stripe\n\nStripe is a financial infrastructure platform...",
"scrapedAt": "2026-09-19T04:11:07.552Z"
}

descriptionText is the description as readable plain text (bullet lists kept as - lines). Set Description format to html for the original markup, or both for each.

Filters

All of them are applied before you are charged.

  • Title keywords / Exclude keywords — matched against the job title. Turn on Match keywords in descriptions to match the department, team and full description as well.
  • Locations — substring match against every location on the posting.
  • Remote only — uses the board's own remote flag and workplace type, not just the word "remote".
  • Posted within days — jobs whose board publishes no date are kept rather than silently dropped.
  • Max jobs per company / Max jobs in total — hard stops on volume and spend.

What it cannot do

  • Only these four ATSes. SmartRecruiters, Workable, iCIMS, Taleo, SAP SuccessFactors, BambooHR and in-house boards are not supported. A company on one of those returns a failure row naming the URL, and costs you nothing.
  • Workday sites must be public and unauthenticated. Some tenants gate their board behind a login or a non-standard site path; those return an error row.
  • Compensation is only there when the company publishes it. In practice that is Ashby boards and US roles covered by pay-transparency laws — roughly one board in seven.
  • Dates are ISO 8601 (UTC). Posted dates on Workday are approximate: Workday's list only says "Posted 30+ Days Ago"; the exact date is taken from the job detail when the company exposes it, otherwise converted from that relative text.
  • No personal data. The Actor returns job postings only — no recruiter names, no emails, no candidate data.
  • It reads public job board APIs. It does not log in, and it does not bypass anti-bot protection.

Failure rows

A company that cannot be resolved does not stop the run. It is written to the dataset so you can see exactly what happened:

{ "input": "https://www.hubspot.com/careers", "jobsFound": 0, "success": false, "error": "Could not find a supported job board (Greenhouse, Lever, Ashby or Workday) for this URL." }

Pricing

Pay per event: you pay for each job delivered to the dataset, and for nothing else. There is no charge for starting a run, no charge per dataset write, and no charge for companies that fail.

Tips

  • Run it on a schedule with Posted within days = 1 to get a daily feed of new roles at the companies you care about.
  • Feed the output into an LLM for screening — descriptionText is already clean text, so you are not paying tokens for HTML.
  • A whole Greenhouse or Ashby board comes back in one request, so scraping 50 companies takes seconds. Workday is slower: it serves 20 jobs per page and one request per description.