Daemon Data

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.

FieldTypeExample
idstring"ashby:ramp:34413f8d-26bf-4bbc-8ade-eb309a0e2245"
jobIdstring"34413f8d-26bf-4bbc-8ade-eb309a0e2245"
titlestring"Security Engineer, Cloud"
platformstring"ashby"
companystring"Ramp"
legalEntitynullnull
careerSitestring"https://jobs.ashbyhq.com/ramp"
requisitionIdnullnull
urlstring"https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245"
applyUrlstring"https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245...
locationsarray["New York, NY (HQ)", "Remote (Canada)", "Remote (US)", "Miami, FL"]
countrystring"USA"
workplaceTypestring"hybrid"
departmentstring"Engineering"
teamstring"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

FieldTypeMeaning
careerSiteUrlsarrayCompany 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).
keywordsarrayKeep jobs whose title contains all words of any keyword (data engineer, account executive). Prefix match: engineer also matches "Engineering". Empty = all jobs.
excludeKeywordsarrayDrop jobs whose title matches any of these (same matching as title keywords), e.g. senior, intern. Applied before anything is charged.
locationsarrayKeep 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.
workplaceTypesarrayKeep only these workplace types (as the employer states them). Empty = all.
postedWithinDaysintegerOnly jobs first published in the last N days. Empty = all open jobs (cross-company search: last 7 days).
includeDescriptionbooleanOn (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.
maxJobsPerSiteintegerStop 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.
maxJobsintegerStop 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.
searchAllCompaniesbooleanOn: 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.
platformsarrayCross-company search only: search companies on these platforms. Empty = all five.
maxCompaniesintegerCross-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.
maxSearchSecondsintegerCross-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.
compatibleOutputbooleanAlso 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.
onlyNewSinceLastRunbooleanOn: 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.
stateNamestringOptional name for the only-new memory, e.g. fintech-companies-us. Empty = derived from the sites and filters.
skipJobIdsarrayid 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.

EventPricePer 1,000Charged when
Job$0.001$1.00One 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.001Charged 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:

Published by Daemon Data (data_daemon on Apify Store). Prices, fields and example pages read from the live Apify listing on 2026-11-09; the listing is the canonical description of the Actor.