Company career sites (5 ATS platforms) data API
Career Site Jobs API is a pay-per-record Apify Actor by Daemon Data that returns $1 per 1,000 jobs | Jobs straight from company career sites on Workday, Greenhouse, Lever, Ashby and SmartRecruiters in one schema: title, location, remote, salary range, date, description, apply URL. Search your own company list, or across companies by title, place and date. Only-new mode. as JSON, CSV or Excel. It costs $0.001 per job with the default options ($1.00 per 1,000); no login to the source site and no proxy or browser to set up on your side, and the same input runs from the Apify console, one REST call, Python, Node.js, n8n or an AI assistant through MCP.
Daemon Data Career Site Jobs API on Apify Listing as plain text
Output fields
The most useful top-level fields with values from a real record; the full list is id, platform, company, legalEntity, careerSite, jobId, requisitionId, title, url, applyUrl, locations, country, workplaceType, department, team, employmentType, experienceLevel, salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText, postedAt, postedText, descriptionHtml, description, scrapedAt, organization, date_posted, locations_derived, description_text, ai_work_arrangement, ai_salary_min_value, ai_salary_max_value, ai_salary_currency, ai_salary_unit_text, source. Per-field notes and the OpenAPI definition are on the Apify API page.
| Field | Type | Example |
|---|---|---|
id | string | "ashby:ramp:34413f8d-26bf-4bbc-8ade-eb309a0e2245" |
jobId | string | "34413f8d-26bf-4bbc-8ade-eb309a0e2245" |
title | string | "Security Engineer, Cloud" |
platform | string | "ashby" |
company | string | "Ramp" |
legalEntity | null | null |
careerSite | string | "https://jobs.ashbyhq.com/ramp" |
requisitionId | null | null |
url | string | "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245" |
applyUrl | string | "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245... |
locations | array | ["New York, NY (HQ)", "Remote (Canada)", "Remote (US)", "Miami, FL"] |
country | string | "USA" |
workplaceType | string | "hybrid" |
department | string | "Engineering" |
team | string | "Backend" |
Input and how to call it
Example input. Fields and pricing were checked against the public listing on 2026-11-09; this build does not run paid example searches.
{
"careerSiteUrls": [
"https://boards.greenhouse.io/airbnb",
"https://jobs.lever.co/palantir",
"https://jobs.ashbyhq.com/ramp",
"https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"
],
"keywords": [
"engineer"
],
"maxJobsPerSite": 50
}
One HTTP call starts a run, waits for it and returns the records (token from console.apify.com):
curl -X POST "https://api.apify.com/v2/acts/data_daemon~career-site-jobs-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"careerSiteUrls": ["https://boards.greenhouse.io/airbnb", "https://jobs.lever.co/palantir", "https://jobs.ashbyhq.com/ramp", "https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite"], "keywords": ["engineer"], "maxJobsPerSite": 50}'
Python: ApifyClient(token).actor("data_daemon/career-site-jobs-scraper").call(run_input=...). Python, Node.js and n8n calling instructions.
AI assistant (MCP): add the remote server https://mcp.apify.com/?tools=data_daemon/career-site-jobs-scraper with header Authorization: Bearer YOUR_APIFY_TOKEN in Claude, ChatGPT, Cursor or VS Code and ask for the data in plain words.
All input fields
| Field | Type | Meaning |
|---|---|---|
careerSiteUrls | array | Company careers pages on Workday (https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite), Greenhouse (https://boards.greenhouse.io/airbnb), Lever (https://jobs.lever.co/palantir), Ashby (https://jobs.ashbyhq.com/ramp) or SmartRecruiters (https://jobs.smartrecruiters.com/BoschGroup). Short forms like greenhouse:airbnb work too. Leave empty to search every company in the built-in list (cross-company search, see below). |
keywords | array | Keep jobs whose title contains all words of any keyword (data engineer, account executive). Prefix match: engineer also matches "Engineering". Empty = all jobs. |
excludeKeywords | array | Drop jobs whose title matches any of these (same matching as title keywords), e.g. senior, intern. Applied before anything is charged. |
locations | array | Keep jobs whose location or country contains any of these (New York, London, Remote). Country names also match the country's code and big cities, so United States finds "San Francisco, CA" and India finds "Bengaluru". Empty = everywhere. |
workplaceTypes | array | Keep only these workplace types (as the employer states them). Empty = all. |
postedWithinDays | integer | Only jobs first published in the last N days. Empty = all open jobs (cross-company search: last 7 days). |
includeDescription | boolean | On (default): the full job description as text and HTML. Workday and SmartRecruiters read each job page for it; the price is the same either way. |
maxJobsPerSite | integer | Stop each career site after this many jobs. Workday sites with more than 2,000 jobs are split by job family automatically when you ask for more. |
maxJobs | integer | Stop the run after this many jobs in total. Empty = no limit for your own career sites, 100 for a cross-company search; 0 = no limit. |
searchAllCompanies | boolean | On: search the built-in company list as well as the career-site URLs you gave. Off (default): the list is searched only when no URL is given. |
platforms | array | Cross-company search only: search companies on these platforms. Empty = all five. |
maxCompanies | integer | Cross-company search only: search at most this many companies from the list (most active boards first, platforms mixed). Empty or 0 = the whole list, within the time limit. |
maxSearchSeconds | integer | Cross-company search: stop searching after this many seconds and finish with the jobs found. Default 240, so a synchronous API call (5-minute limit) gets its results; 0 = until the run timeout. With 'Also search the built-in company list' on, the limit covers your own URLs too. |
compatibleOutput | boolean | Also write each job under the key names many existing career-site job API clients read: organization, date_posted, locations_derived, description_text, ai_work_arrangement, ai_salary_min_value, ai_salary_max_value, ai_salary_currency, ai_salary_unit_text, source. Empty = on when the input uses titleSearch, locationSearch, timeRange, ats or another field name of those clients (limit alone does not count), off otherwise. |
onlyNewSinceLastRun | boolean | On: deliver only jobs an earlier run with the same stateName (or the same sites and filters) has not delivered; skip the rest without charging. Off (default): every matching job. |
stateName | string | Optional name for the only-new memory, e.g. fintech-companies-us. Empty = derived from the sites and filters. |
skipJobIds | array | id or jobId values you already have; skipped and not charged. |
Price
$0.001 per job ($1.00 per 1,000); $0.001 per run. List prices for Apify Free and Starter plans; Scale and Business plans pay 15% to 30% less.
| Event | Price | Per 1,000 | Charged when |
|---|---|---|---|
| Job | $0.001 | $1.00 | One job posting saved to the dataset, with the full description when descriptions are on. Jobs left out by the filters, skipped by only-new mode or skipJobIds are never charged. |
| Actor Start | $0.001 | Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). |
Cost example: 50 jobs with default options cost $0.051, including any start fee. This is an illustrative record count; set explicit row and total-charge caps for your run. Apify's free plan includes $5 of usage a month, about 5,000 jobs before start fees; the Actor's own compute is included in the per-record price, and records skipped by filters, de-duplication or only-new mode are not charged.
Ready-made example pages
Saved inputs you can run with one click on Apify (Examples tab); each has its own page:
- Workday jobs: software engineer jobs posted in the last 7 days: Software engineer jobs posted in the last 7 days on company career sites that run on Workday (myworkdayjobs.com), searched across the built-in list of Workday employers, with location, posting date, apply URL and full de
{"platforms": ["workday"], "keywords": ["software engineer"], "postedWithinDays": 7, "maxJobs": 50, "includeDescription": true} - Greenhouse, Lever and Ashby jobs: data engineer, last 7 days: Data engineer jobs posted in the last 7 days across thousands of company job boards on Greenhouse, Lever and Ashby, in one schema: company, title, locations, workplace type, salary range where the employer publishes it,
{"platforms": ["greenhouse", "lever", "ashby"], "keywords": ["data engineer"], "postedWithinDays": 7, "maxJobs": 100, "includeDescription": true}