Greenhouse, Lever, Ashby & Workday Jobs Scraper — with Salaries
Pricing
from $1.05 / 1,000 job returneds
Greenhouse, Lever, Ashby & Workday Jobs Scraper — with Salaries
Jobs from 3,500+ companies on Greenhouse, Lever and Ashby, plus any Workday career site (NVIDIA, Salesforce, CVS and 4,100+ more by name), read from their public JSON APIs so it doesn't break. Salaries, pay and remote filters, only-new-jobs mode.
Pricing
from $1.05 / 1,000 job returneds
Rating
0.0
(0)
Developer
CMM Research
Maintained by CommunityActor stats
0
Bookmarked
95
Total users
52
Monthly active users
2 days ago
Last modified
Categories
Share
Get every open job at Stripe, SpaceX, Ramp, Figma and 3,500+ other startups and tech companies, read from the Greenhouse, Lever and Ashby job boards they publish themselves, plus any big employer's Workday career site (NVIDIA, Salesforce, CVS, Morgan Stanley and 4,100+ more you can name), so it doesn't break when a page changes. Get job titles, locations, posting dates, descriptions, and salaries where the posting states them (nearly half of all jobs), as clean JSON, CSV or Excel. You don't need any coding, proxies or servers.
Built and maintained by CMM Research. Missing a company, or need a custom feed? Email us at chazmichael_michaels@icloud.com.
Who uses it
- Tech job boards. Startup and engineering roles from the source, with pay.
- Recruiters. Every open role at a list of target companies in one run, startups and Fortune 500 alike.
- Salary benchmarking. Stated pay ranges, including each company's own structured pay data where it publishes it.
A real result (Stripe, 7 Oct 2026):
{"title": "Offensive Security Engineer","company": "stripe","location": "US - Remote","remote": true,"department": "8611 Security Analytics","postedAt": "2026-09-25T14:53:02-04:00","employmentType": null,"salaryMin": 170400,"salaryMax": 255700,"salaryCurrency": "USD","salaryPeriod": "year","salaryText": "$170,400 – $255,700","url": "https://stripe.com/jobs/search?gh_jid=8233889","ats": "greenhouse"}
Every job also comes with its description (plain text, up to 8,000 characters) and the fields listed under Output below.
Want every Workday employer at once? This Actor reads the Workday companies you name. To search all of them in one go, use the Career Site Jobs API below: it already holds their jobs.
Want everything in one search? Our Career Site Jobs API searches more than 1.8 million jobs from 19,000+ companies across 19 hiring systems at once (Workday, Oracle, Greenhouse, Lever, Ashby and more). The jobs are collected daily, so results come back in seconds.
Hiring in healthcare? US Hospital & Nurse Jobs covers 128,000+ openings at 78 large US health systems, with unit, shift, per diem / travel and sign-on bonus filters.
Run it on a schedule
It works best as a daily feed of new jobs rather than a one-off pull:
- Set your filters, turn on
onlyNewSinceLastRun, and save the input as a task. - In Apify Console, go to Schedules, create a schedule, add the task and pick daily.
- On the task's Integrations tab, send each run's results to email, Slack, Google Sheets, Zapier, Make or a webhook.
The first run returns everything that matches. Every run after that returns only jobs this search hasn't delivered before, so you never pay twice for the same job. A daily run that finds 100 new jobs costs about $0.15.
Why this one
Most job scrapers parse HTML from job boards. HTML changes, so they break — which is why the category's ratings sit between 3.6 and 4.0 stars.
This reads documented JSON APIs. There is no markup to change, no anti-bot arms race, and no proxy bill. When a company posts a role, it appears here.
- Straight from the source — the company's own board, not a third-party aggregator
- One schema across four ATSs — Greenhouse, Ashby, Lever and Workday normalized identically
- Workday done properly — Workday quietly stops counting at 2,000 jobs and repeats page one after that; this splits big sites (NVIDIA, Lowe's, TJX) by job category so you get every role
- Pay ranges as data — Ashby's own pay data where the company publishes it, otherwise the
range stated in the description, as
salaryMin/salaryMax/salaryCurrency/salaryPeriod, annualised, and filterable withonlyWithSalary,minAnnualSalaryandsalaryCurrencies - Only what's new, on a schedule — turn on
onlyNewSinceLastRunand schedule the run: each run skips every job that search has already delivered, so you track new openings without paying twice for the same job - Curated registry included — 3,500+ verified Greenhouse, Lever and Ashby companies, 120,000+ open roles, or name your own, including 4,100+ Workday employers we know by name
- Simple pricing — $1.50 per 1,000 jobs delivered, no platform usage on top;
maxJobscaps the cost per run
Pricing
From 10 October 2026: $1.50 per 1,000 jobs ($0.0015 per job), plus Apify's standard $0.00005 run-start fee. Platform usage is included — you are not billed for compute separately. Until then it is free.
You pay only for jobs actually delivered to your dataset. Two ways to control spend:
maxJobs— hard cap on results per run. The default of 1,000 costs at most $1.50.- Apify free plan: runs by users on Apify's free plan return up to 200 jobs each. Any paid Apify plan removes that cap, at the same $1.50 per 1,000 jobs.
- Apify's maximum cost per run — if your limit is reached mid-run, the Actor stops cleanly and keeps everything delivered so far.
Filters (remoteOnly, titleKeywords, locationKeywords, postedWithinDays)
run before charging, so filtered-out roles are never billed.
Output
| Field | Description |
|---|---|
id | Stable identifier: {ats}:{company}:{nativeId} |
title | Role title |
company / companySlug | Company (for Workday, company is the name, e.g. "Morgan Stanley", and companySlug Workday's id, "ms") |
location | Location as published |
remote | The location text itself says remote — precise |
remoteEligible | The company's own ATS flag — broader, less precise (see note) |
department | Team or department |
postedAt | ISO 8601 posting date |
url | Canonical apply link on the company's own board |
description | Job description as plain text, up to 8,000 characters (optional) |
employmentType | Full-time, contract, etc. where published |
ats | Which system it came from |
salaryMin / salaryMax / salaryCurrency / salaryPeriod | Stated pay, e.g. 150000 / 180000 / "USD" / "year" (null when none is stated) |
salaryAnnualMin / salaryAnnualMax | The same pay per year (hour × 2,080, week × 52, month × 12) |
salaryText | Exactly what the pay was read from, so you can check it |
salarySource | structured (the company's own Ashby pay data) or description (read from the text) |
companyName, additionalLocations, country, workplaceType | Workday jobs only: the company's name, every location the role lists, the country, and the company's own Remote / Hybrid / On-site label |
Examples
Every remote engineering role across the curated list
{ "useCuratedList": true, "remoteOnly": true, "titleKeywords": ["engineer"], "maxJobs": 500 }
Specific companies, recent postings only
{ "companies": [{ "slug": "stripe" }, { "slug": "ramp" }], "postedWithinDays": 14 }
Engineering roles paying $180k+ a year
{ "useCuratedList": true, "titleKeywords": ["engineer"], "minAnnualSalary": 180000, "salaryCurrencies": ["USD"], "maxJobs": 1000 }
Big employers on Workday, by name or link
{ "companies": ["NVIDIA", "Morgan Stanley", "https://wd1.myworkdaysite.com/recruiting/tjx/TJX_EXTERNAL"], "titleKeywords": ["engineer"], "postedWithinDays": 7 }
Daily alert: new jobs at your target companies (schedule it once a day)
{ "companies": ["stripe", "ramp", "figma"], "onlyNewSinceLastRun": true, "maxJobs": 5000 }
Fast and cheap — titles and links only
{ "useCuratedList": true, "includeDescription": false, "maxJobs": 2000 }
Use it from Claude, Cursor or any AI agent (MCP)
Apify's hosted MCP server lets an AI assistant run this Actor as a tool. It writes the input from a plain-English request and reads back the results. Add this to your client's MCP settings (Claude Desktop, Cursor, VS Code, Windsurf and others):
{"mcpServers": {"greenhouse-lever-ashby-jobs": {"url": "https://mcp.apify.com?tools=viridian_layout_ea2/company-career-site-jobs"}}}
The first time it connects, a browser window opens so you can sign in to Apify. If your
client can't do that, add "headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }.
You'll find your token under Settings → API & Integrations in Apify Console.
In Claude Code, run this once:
$claude mcp add --transport http greenhouse-lever-ashby-jobs "https://mcp.apify.com?tools=viridian_layout_ea2/company-career-site-jobs"
Then ask in plain English, for example:
- "Get every open role at Stripe, Ramp and Figma posted in the last 7 days, with salaries."
- "Which startups on the curated list have remote engineering roles paying over $180k? Make a table."
- "List Anthropic's open roles by department, titles and links only."
- "Find NVIDIA's and Salesforce's new data engineering roles this week, with pay."
Runs started by an agent are billed exactly like any other run, at $1.50 per 1,000 jobs.
Ask it to set maxJobs if you want a hard cap.
A note on remote
Applicant tracking systems disagree about what "remote" means. Ashby flagged 112 of Ramp's 123 roles as remote while listing every one at "New York, NY (HQ)" — that field means remote-eligible, not remote.
So we publish both signals rather than picking one and hiding the ambiguity:
remote— the location text actually says remote. Trust this one.remoteEligible— what the company declared. Broader, noisier.
remoteOnly matches either. Filter on remote alone if you want only
genuinely location-independent roles.
Notes
Name companies however is easiest: "stripe", a job-board link such as
"https://jobs.lever.co/veeva", or {"slug": "ramp", "ats": "ashby"}. Slugs are usually
just the company name in lowercase. Leave ats blank and we'll work out which system a
company uses. If a company has no public board we can read, the run log says so.
For Workday, a name works when the company is in our list of 4,100+ Workday employers
("NVIDIA", "Morgan Stanley", or {"slug": "nvidia", "ats": "workday"}). Otherwise paste any
page of its career site, e.g. https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite.
Workday sends 20 jobs at a time and each description separately, so a very large employer
takes a few minutes; title, location and date filters are applied first, so only matching
jobs are downloaded. Workday's pay comes from the description; there's no structured pay field.
onlyNewSinceLastRun remembers each search's delivered jobs for 180 days in a key-value store
named company-career-site-jobs-monitor in your own Apify account. Jobs cut off by maxJobs
or your spending limit are still delivered on the next run.
Pay is read only when it clearly is pay (not revenue, funding, bonuses or benefits), so a missing salary is far more likely than a wrong one. A bare "$" is read as Canadian or Australian dollars when the location is in Canada or Australia, otherwise US dollars. The pay filters cost nothing extra: the pay comes with every job.
Companies that are unreachable or have no open roles are skipped — one bad company never sinks a run.