Career Page Scraper & ATS Jobs API — 17 ATS Platforms, No Proxy
Pricing
from $3.00 / 1,000 job postings
Career Page Scraper & ATS Jobs API — 17 ATS Platforms, No Proxy
Every open role from employers' own job boards on 17 ATS platforms: Greenhouse, Ashby, Lever, Workday, Oracle, SuccessFactors, Phenom, Eightfold and more. Whole boards with descriptions, salaries in USD, 190 technologies and hiring profiles. 1,129 verified employers. No proxy, no login.
Pricing
from $3.00 / 1,000 job postings
Rating
0.0
(0)
Developer
Spool
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
2
Monthly active users
9 days ago
Last modified
Categories
Share
Every open role, straight from the employer's own job board. Name a company, paste a domain or a careers URL, and this Actor finds its public board on one of 17 ATS platforms (Greenhouse, Ashby, Lever, Workday, Oracle Cloud HCM, SAP SuccessFactors, Phenom, Eightfold, SmartRecruiters and more), reads the board whole and returns every role exactly as the employer published it: full description, department, posting date, direct apply link. No aggregator in the way, no proxy, no login, and the rows start arriving in seconds.
Staff Machine Learning Engineer Databricks $190,000–$285,000 Engineering · lead greenhouse San FranciscoSecurity Engineer, Cloud Ramp $175,000–$220,000 Security · mid ashby New YorkSenior Software Engineer, GPU Systems Nvidia $184,000–$287,500 Engineering · senior workday Santa ClaraLead, Systems Engineering L3Harris $126,500–$176,500 Engineering · lead successfactors Ottawa
- Whole boards, not search snippets — Stripe's 716 roles, JPMorgan Chase's 7,353, Nvidia's 1,700+, each with the employer's own text.
- Enriched on the way — salaries annualised in USD, 190 technologies read from the text, city, region, country and remote/hybrid/onsite, duplicates removed, one hiring profile per company.
- 1,129 verified employers on tap — ask the largest boards for your keywords without naming anyone.
- Only what is new — monitor mode remembers what it delivered and returns just the new openings, run after run.
- $3.50 per 1,000 roles, nothing for companies it cannot find.
⚡ Try it in one minute
- Press Try for free and keep the prefilled input, or paste this:
{ "companies": ["stripe.com", "https://jobs.ashbyhq.com/ramp", "Datadog"] }
- Press Start. Each company is resolved to its board, the board is read in full, and its roles go out the moment that company answers.
- Open the Output tab. The Jobs, Companies and Salaries views show their own columns. Export JSON, CSV or Excel, or read the dataset from the API.
Measured on the platform, 10 October 2026: 1,027 roles from Stripe, Ramp and Datadog, every one with a description, 364 with a salary, 3 hiring profiles. First rows at 5 seconds, done at 7, $3.61.
🎯 Who it is for
| You are | Give it | You get |
|---|---|---|
| A recruiter or sourcer | your target companies | every open role with the real posting date, so you see who is hiring for what, today |
| A job board or newsletter | a watch-list and onlyNew on a daily schedule | a clean feed of new openings, no duplicates, straight to Sheets, Slack or a webhook |
| Sales or investors reading hiring signals | 50 accounts | a hiring profile per company: open roles, departments, seniority mix, top technologies, salary band |
| An analyst or researcher | keywords and searchEmployerBoards: 800 | who is hiring machine learning engineers across 1,129 verified employers, with salaries |
| An AI agent | the MCP endpoint below | a tool that answers "list every engineering role at Ramp paying over $200k" |
📦 What you get
Every job row carries the posting as the employer published it, plus what the Actor adds:
- The posting — title, company, location, the employer's own description (
descriptionSource: ats), the department as the employer labels it, posting date andpostedDaysAgo, the direct apply URL on the employer's site,atsProviderandatsBoardUrl. - Salary, three ways — as stated, annualised in its currency, annualised in USD. Structured pay fields and pay ranges written in the text are both read (
salarySource: atsordescription). - Classification —
department,seniority,tech(190 technologies) andtechCategories,city,region,country(ISO code),locationType(onsite, hybrid, remote). - Bookkeeping —
searchTermthat matched,dedupeKey,firstSeenAtin monitor mode.
Company rows (recordType: company) hold open roles found, the board's total open roles, department and seniority mix, top technologies, salary range in USD and remote share. Notice rows say in plain words why a run returned nothing. The full field list, with types, is on the Output tab.
🏢 17 platforms, found by name, by URL or through the careers page
| Platform | Found by | Descriptions | Salaries | Measured |
|---|---|---|---|---|
| Greenhouse | name, domain or board URL | in the listing, every role | pay ranges in the text | Stripe 716 roles, Datadog 444, Airbnb, Anthropic |
| Ashby | name, domain or board URL | in the listing | structured compensation | Ramp 158 roles, every one with a description |
| Lever | name or board URL | in the listing | in the text | — |
| SmartRecruiters | name or board URL | one request per role, capped | in the text | paged past 100 roles |
| Workday | careers URL or discovery | one request per role, capped | in the text | Nvidia 1,700+ roles, Capital One, Target |
| Oracle Cloud HCM | careers URL or discovery | one request per role, capped | in the text | JPMorgan Chase 7,353 roles, BNY Mellon 570 |
| SAP SuccessFactors | careers URL or discovery | one request per role, capped | in the text | L3Harris 2,305 roles, ExxonMobil, Skyworks 334, Aflac |
| Phenom career sites | careers URL or discovery | one request per role, capped | in the text | Cisco 715 roles, Snowflake 163, Lowe's |
| Eightfold career sites | careers URL or discovery | one request per role, capped | — | Qualcomm 1,831, Lockheed Martin, Autodesk 379, Kraft Heinz 797 |
| Amazon | name | in the listing | — | 2,112 hits for "software engineer" |
| Rippling, Breezy | name | titles, locations, departments only | — | Rippling 651 roles |
| Personio, Teamtailor, Pinpoint | name | in the listing | Pinpoint compensation fields | Oatly 15, Cazoo 4 |
| BambooHR, Recruitee | careers URL | — | — | reached only from a URL |
How a company is found. A name is turned into the slugs the platforms use (Datadog → datadog; Welcome to the Jungle → welcometothejungle, wttj) and tried on every platform at once. If nothing answers, the Actor does what you would: opens the company's website, follows its careers link and reads which system the careers page hands off to, from the URLs and embed scripts it carries, never from prose, within six requests and ten seconds. A careers URL you paste goes straight to that step. Companies that still cannot be found are listed in RUN_SUMMARY.companyBoards.notFound with a reason you can act on, and cost nothing.
Measured on 1,000 companies — the S&P 500 and the 499 largest active YC companies, 9–10 October 2026:
| Found | Of which | |
|---|---|---|
| S&P 500 | 44% | mostly Workday, Oracle, SuccessFactors, Phenom and Eightfold, reached through the careers page |
| YC, largest 499 | 52% | mostly Greenhouse, Ashby and Lever, reached by name |
| All 1,000 | 48% · 34,382 open roles | 251 companies found only through their careers page; median 7.5 s per company found |
Guessing from the name alone found 27%. What is left: 443 companies whose site did not answer or showed no job board within the budget (many small YC companies have none), and 50 on systems this Actor cannot read yet (iCIMS 21, Paradox 9, Taleo 5, Avature 4, Workable 4, ADP 2, UKG 2, the login-only SuccessFactors portal 3). Those are named in notFound, so you know exactly which ones to paste a careers URL for.
🔎 1,129 verified employers, searchable by keyword
searchEmployerBoards: 100 asks the hundred largest boards in a bundled, verified list of 1,129 well-known employers on 17 platforms (Lockheed Martin, Capital One, JPMorgan Chase, Nvidia, Databricks, OpenAI, Stripe, Anthropic, Datadog, Airbnb… 68,177 open roles on 9 October 2026) for your keywords, largest board first. searchEmployerBoards: 800 covers the whole list. A role matches when the whole phrase appears in its title or every word of it does: machine learning engineer matches Senior Engineer, Machine Learning and not Engineering Manager.
{ "searchTerms": ["machine learning engineer"], "searchEmployerBoards": 100 }
Measured: 100 boards asked, 100 answered, 46 had matching roles, 232 roles delivered, 228 with a description, 173 with a salary, 46 company profiles, in 33 seconds.
🚚 Rows arrive company by company
Each company's roles go out the moment its board is read. Measured with Stripe, Ramp and Datadog together: 1,027 roles, the first 161 at 5 seconds and the last at 7, every description scanned for 190 technologies and pay ranges on the way. Boards that cost one request per description (Workday, Oracle, SuccessFactors, Phenom, Eightfold) follow once their descriptions are read, eight at a time. A role that already went out is dropped if it turns up again, not charged twice; RUN_SUMMARY.waves lists each wave with its row count and the second it landed.
🔔 Monitor mode: only what is new since the last run
Turn on onlyNew and the run remembers every role it has delivered. On a schedule, each run returns only roles that were not there before: a feed of new openings at the companies you watch, nothing delivered twice, nothing charged twice.
- Memory is one record per input in a key-value store named
career-page-jobs-monitorin your own account. Nothing leaves your storage. - The record is named from the companies and keywords, so the same input always shares one memory. Set
monitorNameto share memory between inputs or to start over. - Only rows actually delivered are remembered; roles held back by a spending limit stay new. Roles not seen for 60 days are forgotten, so a closed and reposted role shows up again.
{ "companies": ["stripe.com", "ramp.com", "Datadog"], "searchTerms": ["engineer"], "onlyNew": true }
Measured: first run 546 roles from Datadog and Ramp remembered; the same input again minutes later, 0 new, 546 already seen, nothing charged but the Actor start.
Watch a list of companies in three steps. Press Save as task, set your companies and keywords and turn onlyNew on. In the task, open Schedules and pick every day. Then open Integrations and connect Slack, Google Sheets, Airtable or a webhook: each run delivers exactly the new roles, and a day with nothing new costs the Actor start.
🍳 Recipes
A named company's whole board
{ "companies": ["stripe.com", "https://jobs.ashbyhq.com/ramp", "Datadog"] }
Measured: 3 boards, 1,325 open roles, 1,027 delivered after deduplication, every one with a description, 364 with a salary, 3 hiring profiles; Ramp's 161 roles landed at 5 seconds, Datadog's 382 at 6, Stripe's 484 at 7.
Enterprises on Workday, Oracle, SuccessFactors and Eightfold, by name
{ "companies": ["L3Harris", "autodesk.com", "Skyworks Solutions", "paccar.com", "https://jobs.kraftheinz.com/careers"], "searchTerms": ["engineer"] }
Measured: 5 of 5 found through their careers pages (SuccessFactors 3, Eightfold 2), 225 engineering roles delivered, first rows at 3 seconds, done at 8.
An enterprise on Workday, by careers URL, with more descriptions
{ "companies": ["https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"], "searchTerms": ["software engineer"], "maxDescriptionsPerBoard": 300 }
Who is hiring data engineers across the employer list
{ "searchTerms": ["data engineer", "analytics engineer"], "searchEmployerBoards": 200, "requireSalary": true }
Remote senior roles at a watch-list of companies, posted this month
{ "companies": ["Anthropic", "Figma", "Cloudflare", "Airbnb"], "searchTerms": ["senior"], "location": "Remote", "postedWithinDays": 30 }
Kubernetes roles over $200k on the employer list
{ "searchTerms": ["engineer"], "searchEmployerBoards": 150, "requireTech": ["Kubernetes"], "minSalaryUsd": 200000 }
⚙️ Every option
| Option | Default | What it does |
|---|---|---|
companies | Stripe, Ramp, Datadog | Names, domains or careers URLs, up to 200 |
searchTerms | — | Keep only roles whose title matches (whole phrase or every word) |
location | — | Keep roles whose location mentions this text |
searchEmployerBoards | 0 | Also ask the N largest boards in the verified list for the keywords (0–800) |
discoverCareersPages | true | Read the company's careers page when no board answers to its name |
maxJobsPerCompany | 500 | Cap per company after filters, up to 5,000 |
maxDescriptionsPerBoard | 100 | Descriptions fetched per Workday, Oracle, SuccessFactors, Phenom, Eightfold or SmartRecruiters board, up to 500 |
postedWithinDays | — | Keep roles published or updated within N days |
requireSalary | false | Keep only roles with a salary, structured or read from the text |
minSalaryUsd | — | Annualised USD floor |
requireTech | — | Keep only roles naming these technologies |
companyRollup | true | One hiring-profile row per company |
onlyNew | false | Monitor mode: deliver and charge only roles not delivered before |
monitorName | derived | Name of the memory record; set to share or reset |
💰 How much does it cost?
Pay per event: per role delivered and, with companyRollup on, per company profile. Duplicates, filtered-out roles and companies without a public board cost nothing. Actor start is $0.002 per GB of memory, one event at the default.
| Plan | per role | per company profile |
|---|---|---|
| Free | $0.0035 | $0.005 |
| Bronze | $0.0035 | $0.0045 |
| Silver | $0.00325 | $0.004 |
| Gold | $0.003 | $0.0035 |
- The prefilled run, three whole boards, 1,027 roles and 3 profiles: $3.61 (Gold: $3.09)
- Five enterprises with the keyword "engineer", 225 roles and 5 profiles: $0.81
- 100 employer boards for one keyword, 232 roles and 46 profiles: $1.04
- 1,000 roles = $3.50; 10,000 = $35
- Monitor mode on a daily schedule: only new roles are charged; a day with nothing new costs the $0.002 start
- The free plan's $5 monthly credit covers roughly 1,400 roles
Platform usage (compute) is billed by Apify separately and is small: the boards answer with compact JSON and no proxy is used.
🤖 Use it from an AI agent, the API or an integration
MCP. Add the Apify MCP server to Claude, Cursor or any MCP client and the agent can call this Actor as a tool: "List every open engineering role at Stripe, Ramp and Datadog with a stated salary above $200k."
https://mcp.apify.com/?tools=spool/career-page-jobs-api
API. POST https://api.apify.com/v2/acts/spool~career-page-jobs-api/run-sync-get-dataset-items?token=… with the input as JSON returns the rows in one call. An empty input runs the prefilled companies. Python and JavaScript: client.actor("spool/career-page-jobs-api").call(run_input={...}) with apify-client. Schedules and integrations: run it daily with onlyNew and push the rows to Google Sheets, Airtable, Slack, HubSpot or a webhook from the Integrations tab; filter on recordType to route roles and companies separately.
🧭 Good to know
- Boards are found by guessing well, then by looking. A name is tried as the slugs the platforms use, then the company's careers page is read for the system behind it. A company on a system not listed above is reported as not found, with the system named. Give the domain or the careers URL and it is exact.
- Workday, Oracle, SuccessFactors, Phenom, Eightfold and SmartRecruiters descriptions cost one request each, so they are capped by
maxDescriptionsPerBoard; roles past the cap come with title, location, department and apply URL but no text. Greenhouse, Ashby, Lever, Teamtailor and Pinpoint send every description in the listing. - Rippling and Breezy list APIs carry no text: title, location and department only.
- Workday, Oracle, SuccessFactors, Phenom, Eightfold and Amazon are searched, not listed. They are asked for your first keyword; without keywords they return their first pages.
- Keyword matching is by title. A role whose title does not contain the phrase, or every word of it, is left out rather than guessed; search the board without keywords to see everything.
- Not read: Workable (returns nothing to unauthenticated requests), iCIMS, Paradox, Taleo, Avature, ADP and UKG tenants, Jobvite, The Muse. They are recognised and named in
notFound. - This Actor does not read LinkedIn, Indeed or Glassdoor. For aggregator boards with the employer's posting attached, use Job Board API, which shares this engine.
- If your spending limit cuts a run short, roles beyond it are not delivered and not charged, a notice row says how many were held back, and in monitor mode they stay new for the next run.
- Tested. Offline tests cover row typing against the dataset schema, keyword matching, date and salary filters, the readers' parsers and the engine copy; Apify runs the prefilled input daily.
⚖️ Is this legal?
Greenhouse, Ashby, Lever, Workday, SmartRecruiters and the other platforms publish these boards through public endpoints intended for exactly this use: the same data the company's careers page renders for any visitor. No login, no candidate or recruiter data, no paywall bypass. Job listings are business information published to be found; handle any personal data a description happens to contain according to the law that applies to you.
❓ FAQ
Is this a Greenhouse jobs API, a Lever API or a Workday jobs API? It is all of them behind one input: give a company and the Actor works out which platform hosts its board and reads it through that platform's public endpoint.
How is this different from Job Board API? Job Board API searches LinkedIn, Indeed, Glassdoor and 30 more sources by keyword and attaches the employer's posting where it can. This Actor starts from the employer: you name the companies, it reads their boards whole, with no aggregator in between and no proxy.
How many companies can one run take? Up to 200 names, domains or URLs, plus up to 800 boards from the verified list. Boards answer in one or two requests each; a run of 50 companies typically finishes in under a minute.
Can I get only new openings? Yes: onlyNew remembers what was delivered and returns only new roles on the next run. Put it on a schedule and connect an integration.
Why was a company not found? RUN_SUMMARY.companyBoards.notFound says so for each one: the careers page uses a system the Actor cannot read yet (iCIMS, Paradox, Taleo, Avature, ADP, UKG and the login-only SuccessFactors portal are recognised and named), the website did not answer, or no careers page was found. Paste the careers URL and the Actor reads what is behind it.
Do you return salaries? Where the employer states them: Ashby and Pinpoint as structured fields, the others usually as a pay range in the description, which the Actor reads conservatively into salaryMin, salaryMax, salaryCurrency and the annualised USD fields. Sign-on bonuses and relocation amounts are not mistaken for pay.
Can I run it with an empty input? Yes. An empty input, from the form or the API, runs the prefilled companies (Stripe, Ramp, Datadog).
📜 Changelog
1.2.1 — 2026-10-10. An empty input runs the prefilled companies. Company labels: a typed name wins ("Lockheed Martin"), a domain or careers URL becomes the brand ("Kraftheinz"). Salary parser reads "126 500$ - 176 500$" and ignores sign-on bonus, relocation and referral amounts.
1.2.0 — 2026-10-10. Oracle Cloud HCM, SAP SuccessFactors and Phenom career sites: three more systems read through their public endpoints, by careers URL or through discovery; JPMorgan Chase and BNY Mellon (Oracle), Snowflake, Cisco and Lowe's (Phenom) measured. SuccessFactors in all three of its layouts: table, tiles and the script-driven sites' own jobs service (L3Harris 2,305 roles, Skyworks 334, Aflac 38). Eightfold's personalised sites (Qualcomm 1,831, Lam Research) and Eightfold sites on a company's own domain (Autodesk 379, Kraft Heinz 797, Fortive 267). The login-only SuccessFactors portal is recognised, so discovery keeps walking to the real careers host (PACCAR, West Pharmaceutical); up to three discovered boards are tried before a company is given up. Workday, Oracle, Phenom, SuccessFactors and Eightfold descriptions are read eight at a time for the first maxDescriptionsPerBoard roles. The employer list is rebuilt from the benchmark: 1,129 verified boards on 17 platforms, 68,177 open roles (was 307 boards on 4 platforms); searchEmployerBoards goes to 800. Measured on the same 1,000 companies: 478 found (48%), up from 345 (34%) before these readers.
1.1.0 — 2026-10-10. Careers-page discovery for companies whose board slug is not their name: website → careers link → the system behind it, 6 requests and 10 seconds at most per company; a reason per company that cannot be found; slug guesses now run on every platform at once instead of one after another; generic words (careers, jobs…) are never guessed as slugs, after one landed on another company's board. Measured on 1,000 companies: 27% found by name, 34% with discovery.
1.0.0 — 2026-10-10. First release on the Job Board API engine: fourteen ATS platforms by name or URL, the 307-employer verified list searchable by keyword, company-by-company delivery, monitor mode, salaries in USD, 190 technologies, location fields, hiring profiles.
💬 Support
Open an issue on the Issues tab and you will get a reply, usually the same day. If a platform changes and breaks, say so there; RUN_SUMMARY in your run's key-value store shows which boards answered. If the Actor saved you time, a review on this page helps other people find it.
More from spool
- Job Board API — LinkedIn, Indeed, Glassdoor, Workday + 28 More — one search across 33 sources with the employer's posting attached, salaries in USD, monitor mode
- Company Tech Stack API — Detected from Job Postings — a company's technologies read from its own job board
- Wellfound Jobs Scraper (AngelList) — Salary & Equity Data — startup roles from Wellfound with salary and equity
- SEC Filings API — Who Mentions What in EDGAR — SEC filings searched by term, with company and mention counts