Greenhouse, Lever, Ashby & Workday Jobs Scraper — with Salaries avatar

Greenhouse, Lever, Ashby & Workday Jobs Scraper — with Salaries

Pricing

from $1.05 / 1,000 job returneds

Go to Apify Store
Greenhouse, Lever, Ashby & Workday Jobs Scraper — with Salaries

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

CMM Research

Maintained by Community

Actor stats

0

Bookmarked

95

Total users

52

Monthly active users

2 days ago

Last modified

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:

  1. Set your filters, turn on onlyNewSinceLastRun, and save the input as a task.
  2. In Apify Console, go to Schedules, create a schedule, add the task and pick daily.
  3. 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 with onlyWithSalary, minAnnualSalary and salaryCurrencies
  • Only what's new, on a schedule — turn on onlyNewSinceLastRun and 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; maxJobs caps 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

FieldDescription
idStable identifier: {ats}:{company}:{nativeId}
titleRole title
company / companySlugCompany (for Workday, company is the name, e.g. "Morgan Stanley", and companySlug Workday's id, "ms")
locationLocation as published
remoteThe location text itself says remote — precise
remoteEligibleThe company's own ATS flag — broader, less precise (see note)
departmentTeam or department
postedAtISO 8601 posting date
urlCanonical apply link on the company's own board
descriptionJob description as plain text, up to 8,000 characters (optional)
employmentTypeFull-time, contract, etc. where published
atsWhich system it came from
salaryMin / salaryMax / salaryCurrency / salaryPeriodStated pay, e.g. 150000 / 180000 / "USD" / "year" (null when none is stated)
salaryAnnualMin / salaryAnnualMaxThe same pay per year (hour × 2,080, week × 52, month × 12)
salaryTextExactly what the pay was read from, so you can check it
salarySourcestructured (the company's own Ashby pay data) or description (read from the text)
companyName, additionalLocations, country, workplaceTypeWorkday 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.