Home / Tools / Greenhouse Jobs Scraper: Lever, Ashby, Workday API

Jobs & content

Greenhouse Jobs Scraper: Lever, Ashby, Workday API

ATS Jobs API: Greenhouse, Lever, Ashby, Workday, Workable & SmartRecruiters jobs scraper. Enter company domains or careers URLs; ATS is auto-detected. One normalized schema with salary, remote flag & dates, filters and new-job monitoring.

Run it on Apify API & MCP

Sample output

CompanyJob titleLocationATSPosted
NotionSoftware Engineer, AI Connections…San Francisco, Californiaashby2026-08-24
NotionBusiness Development Representati…New York, New Yorkashby2026-04-02
NotionBusiness Development Representati…San Francisco, Californiaashby2026-04-01

Real rows from the prefilled example run (Oct 19, 2026), 5 of 29+ fields shown. Export as JSON, CSV, Excel or HTML, or read them through the API.

Full JSON of one real output row (8 rows in the example dataset)
{
  "company": "Notion",
  "title": "Software Engineer, AI Connections (Developer Platform)",
  "department": "Engineering",
  "team": "Engineering",
  "location": "San Francisco, California",
  "locations": [
    "San Francisco, California",
    "New York, New York"
  ],
  "country": "United States",
  "remote": false,
  "workplaceType": "Hybrid",
  "employmentType": "Full-time",
  "postedAt": "2026-08-24T14:44:49Z",
  "updatedAt": null,
  "salaryMin": 272000,
  "salaryMax": 304000,
  "salaryCurrency": "USD",
  "salaryInterval": "YEAR",
  "salaryText": "$272,000 – $304,000",
  "salarySource": "description",
  "descriptionText": "WHO WE ARE\n\nNotion is the collaborative AI workspace where teams and agents think together https://www.youtube.com/watch?v=vkpYpWfEK5s. We're building one place where your knowledge, projects, meetings, and AI tools live side by side, so work is faster, clearer, and less fragment...",
  "descriptionHtml": "<h1>Who We Are</h1><p style=\"min-height:1.5em\">Notion is the collaborative AI workspace where teams and agents <a target=\"_blank\" rel=\"noopener noreferrer nofollow\" href=\"https://www.youtube.com/watch?v=vkpYpWfEK5s\">think together</a>. We're building one place where your knowledg...",
  "jobUrl": "https://jobs.ashbyhq.com/notion/1fc309c8-da20-4ff2-84c7-8b863ece2b0a",
  "applyUrl": "https://jobs.ashbyhq.com/notion/1fc309c8-da20-4ff2-84c7-8b863ece2b0a/application",
  "ats": "ashby",
  "atsBoardToken": "notion",
  "atsBoardUrl": "https://jobs.ashbyhq.com/notion",
  "jobId": "1fc309c8-da20-4ff2-84c7-8b863ece2b0a",
  "requisitionId": null,
  "sourceInput": "https://jobs.ashbyhq.com/notion",
  "scrapedAt": "2026-10-19T09:59:59Z"
}

Output fields

From the Actor's dataset schema. Every row has the same flat shape, so it drops straight into a spreadsheet, a database or an agent's context.

FieldTypeDescription
companystringCompany name
titlestringJob title
locationstringPrimary location
locationsarrayAll locations of the posting
workplaceTypestringRemote, Hybrid or On-site
employmentTypestringFull-time, Part-time, Contract, Internship, Temporary
postedAtstringFirst published (ISO 8601, UTC)
salaryIntervalstringYEAR, MONTH or HOUR
salarySourcestringstructured (from ATS) or description (parsed from text)
atsstringgreenhouse, lever, ashby, workable, smartrecruiters or workday
changeTypestringMonitoring mode only: new or changed

Pricing

Pay per result, billed by Apify. No subscription and no minimum. Discount tiers apply automatically on paid Apify plans.

EventFree planBronzeSilverGold
Job posting result main
Charged once for each job posting successfully saved to the dataset.
$0.0015$0.0013$0.0011$0.001
Actor start
Charged once when the Actor run starts.
$0.005$0.005$0.005$0.005

Examples on the Free plan: 100 job posting results = $0.15, 1,000 job posting results = $1.50, 10,000 job posting results = $15. Apify's Free plan includes $5 of monthly usage credit. Prices read from the Apify API at build time (2026-10-19).

Example input

This is the prefilled input on the Store page. Keep it and click Start to see real data in seconds.

{
  "companies": [
    "stripe.com",
    "https://jobs.lever.co/spotify",
    "https://jobs.ashbyhq.com/notion",
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
  ],
  "maxJobsPerCompany": 10,
  "searchInDescription": false,
  "remoteOnly": false,
  "monitoringMode": false,
  "monitoringIncludeChanged": true,
  "monitoringStoreName": "ats-jobs-monitor",
  "includeDescription": true,
  "fetchGreenhouseSalary": false,
  "maxConcurrency": 5
}

Use it from code, no-code or an AI agent

cURL (one request, returns rows)
curl -X POST \
  "https://api.apify.com/v2/acts/wrenfield-data~ats-jobs-api/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"companies": ["stripe.com", "https://jobs.lever.co/spotify", "https://jobs.ashbyhq.com/notion", "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"], "maxJobsPerCompany": 10, "searchInDescription": false, "remoteOnly": false, "monitoringMode": false, "monitoringIncludeChanged": true, "monitoringStoreName": "ats-jobs-monitor", "includeDescription": true, "fetchGreenhouseSalary": false, "maxConcurrency": 5}'
Python
# pip install apify-client
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("wrenfield-data/ats-jobs-api").call(
    run_input={
    "companies": [
        "stripe.com",
        "https://jobs.lever.co/spotify",
        "https://jobs.ashbyhq.com/notion",
        "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
    ],
    "maxJobsPerCompany": 10,
    "searchInDescription": False,
    "remoteOnly": False,
    "monitoringMode": False,
    "monitoringIncludeChanged": True,
    "monitoringStoreName": "ats-jobs-monitor",
    "includeDescription": True,
    "fetchGreenhouseSalary": False,
    "maxConcurrency": 5
},
    max_total_charge_usd=1.00,  # hard cap for this run
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(row)
JavaScript / Node
// npm i apify-client
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('wrenfield-data/ats-jobs-api').call({
  "companies": [
    "stripe.com",
    "https://jobs.lever.co/spotify",
    "https://jobs.ashbyhq.com/notion",
    "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
  ],
  "maxJobsPerCompany": 10,
  "searchInDescription": false,
  "remoteOnly": false,
  "monitoringMode": false,
  "monitoringIncludeChanged": true,
  "monitoringStoreName": "ats-jobs-monitor",
  "includeDescription": true,
  "fetchGreenhouseSalary": false,
  "maxConcurrency": 5
}, { maxTotalChargeUsd: 1 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
MCP (Claude, Cursor, VS Code, any MCP client)
{
  "mcpServers": {
    "wrenfield-ats-jobs-api": {
      "url": "https://mcp.apify.com?tools=wrenfield-data/ats-jobs-api"
    }
  }
}

Remote MCP server hosted by Apify. Sign in with OAuth on first use, or send Authorization: Bearer <APIFY_TOKEN>. The tool appears as wrenfield-data--ats-jobs-api. More client setups on the MCP page.

n8n, Make, Zapier

Use the official Apify node or app, pick Run Actor, enter wrenfield-data/ats-jobs-api and paste the input JSON above. Then read the run's dataset items. Ready-made n8n workflows are on the n8n templates page.

FAQ

How much does Greenhouse Jobs Scraper: Lever, Ashby, Workday API cost?

$0.0015 per job posting result on the Apify Free plan ($1.50 per 1,000), billed per result by Apify with no subscription. Plus $0.005 per actor start. Higher Apify plans get the discounted tiers shown in the pricing table. You can cap any run with a maximum cost.

Is it legal to scrape jobs from ATS job boards?

The Actor only reads public job postings from the same public endpoints that power companies' own careers pages. It doesn't log in or collect personal data. You should still make sure your use of the data complies with applicable laws and the sites' terms.

Why didn't my company domain get detected?

Some companies host their careers pages on a separate domain, behind bot protection, or use an ATS that isn't supported. Paste the URL of the job board itself (e.g. the link of any job posting) or use a prefixed token such as greenhouse:acme. The run summary shows why each company failed.

Which ATS platforms are not supported?

iCIMS, Taleo, SuccessFactors, BambooHR, Personio, Recruitee, Teamtailor and other ATSs aren't supported yet. Let us know via the Issues tab which ones you need.

How many jobs can I get from a Workday site?

Workday's public search API can cap or truncate results for very large employers (often around 2,000 postings). For such employers, use keywords (they are sent to Workday's own search) to reach more specific roles.

How does monitoring mode work?

For each company the Actor stores the IDs and a fingerprint (title, locations, department, employment type, salary) of jobs it has saved, in a named key-value store in your account. The next run outputs only postings that are new or whose fingerprint changed. The first run saves everything and creates the baseline. Jobs that were not saved because of Max jobs per company / Max jobs in total are not remembered, so they appear on a later run. Entries not seen for 120 days are cleaned up automatically.

Do I need proxies?

No. The Actor uses public JSON endpoints and works without proxies.

Related tools

Compare and plan

Try Greenhouse Jobs Scraper: Lever, Ashby, Workday API now

Open it on Apify, keep the prefilled example and click Start. The Apify Free plan includes $5 of monthly credit, no card needed.

Open on Apify