Careers Page Jobs Scraper — Any Company Website, Any ATS avatar

Careers Page Jobs Scraper — Any Company Website, Any ATS

Pricing

from $0.80 / 1,000 open roles

Go to Apify Store
Careers Page Jobs Scraper — Any Company Website, Any ATS

Careers Page Jobs Scraper — Any Company Website, Any ATS

Give company websites, get every open role: finds the job board behind each careers page (Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Personio, Breezy) and reports roles new and closed since your last run. Sites with no board found are listed with the reason. No login.

Pricing

from $0.80 / 1,000 open roles

Rating

0.0

(0)

Developer

Northbell

Northbell

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Share

You know the companies, not their job boards. Give this Actor a list of company websites — stripe.com, notion.so — and it finds the job board behind each careers page, reads every open role from it, and tells you which roles are new and which closed since your last run. No board names to look up, no login.

$1 per 1,000 open roles returned, plus $0.01 per run.

It reads nine applicant-tracking systems through their public job board APIs: Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Personio and Breezy. A board API returns every open role at once, so "new since last run" and "closed since last run" are exact, not a sample.

Measured on 11 October 2026 with 34 well-known company websites (US and Europe): a board was found for 28 of them — 8 from links on the site, 20 by the company name — 4,923 open roles in one run of 112 seconds. Of the 6 without one, 5 run a careers system of their own (not one of the nine), and 1 is on Workday but its careers page did not answer in time on that run (an earlier run found it).

How a board is found

Each company row says how its board was found, in detectedBy:

detectedByhow
urlyou gave the job board link itself (jobs.lever.co/acme, acme.wd5.myworkdayjobs.com/Careers)
pagethe website, or the careers page it links to, links to or embeds the board
namenothing on the pages: the company name (from the domain) was asked of Greenhouse, Lever, Ashby, SmartRecruiters, Workable, Recruitee, Personio and Breezy, and the board was kept only because it names the company

A company with no board found is not a guess. It comes back as a company row with provider: null and the reason: no-ats-found (the pages have no link to a supported board, and no board answers to the name), site-unreachable, board-not-found (a board link that does not exist) or not-a-url. Large companies that run their own careers system (not one of the nine) end up here. Those rows are free.

nameMatches: false on a company row means the board found does not carry the site's name: a group site that links to a subsidiary's board, for example. Check those by eye. When the board was found by the company name and more than one job board carries that name, the one with the most open roles is used and the others are listed in otherBoards (provider, board, open roles), because two companies can share a name. Turn off Also try the company name as the board name to use only links found on the site.

Run it again and again

  • On a schedule — save your input as a task and add a Schedule: the same company list every morning. Send each run to Google Sheets, Slack or email with an integration on the task.
  • Watch for changes — Set What to return to Only roles that are new since the last run: each run returns, and charges for, only the roles that appeared since the last one. Roles that closed come back as free closed rows, and each company row counts both.
  • In bulk — Put every company in Company websites (up to 500) in one run.

What you get

Three kinds of row, tagged by type:

  • job — one open role: title, department, location, remote, seniority, employmentType, the pay range when the company published one (salaryMin, salaryMax, salaryCurrency), postedAt, jobUrl, and isNewSinceLastRun. Plus website, provider, board and detectedBy. The full text with Include the full description.
  • closed — a role that was open on your last run and is gone now, with its title and when it was last seen. Free.
  • company — one per website: the board found, openRoles, newRoles, closedRoles and netChange since the last run (or why no board was found). Free.

The Companies view of the dataset is a hiring tracker on its own: which of your companies opened roles this week, and which went quiet.

Input

{
"websites": ["stripe.com", "notion.so", "https://jobs.lever.co/acme"],
"titleKeywords": "engineer, data",
"output": "changes"
}

Filters (title, location, remote, posted within N days, experience level, employment type, published pay) change what is returned, never what is compared: a role you filtered out is not reported as closed.

Pricing

$1 per 1,000 open roles returned, plus $0.01 per run. Closed roles, company rows and companies with no board found are not charged. With What to return set to Only new, a daily run over the same companies charges only for the roles that appeared since the day before. If a run reaches your Maximum total charge, it stops there and remembers only the roles it returned: the rest still count as new on the next run, and closed roles are listed before the charged ones so none are lost.

For AI agents

Call with {"websites": ["stripe.com"]}. Rows have type: job, closed or company. A company with no board has provider: null and a reason; nothing is invented.

One applicant-tracking system, any company on it, by board name: Greenhouse Jobs Scraper · Lever Jobs Scraper · Ashby Jobs Scraper · Workday Jobs Scraper.

Pay, skills and remote read out of the postings: Job Posting Parser.

Also reading the same companies on LinkedIn? Job Dedupe & Merge turns both datasets into one row per job, with every URL it was found at.