Career Site Jobs API — 1.7M+ Jobs with Salaries | $2 per 1K avatar

Career Site Jobs API — 1.7M+ Jobs with Salaries | $2 per 1K

Pricing

from $1.40 / 1,000 jobs

Go to Apify Store
Career Site Jobs API — 1.7M+ Jobs with Salaries | $2 per 1K

Career Site Jobs API — 1.7M+ Jobs with Salaries | $2 per 1K

1.7M+ open jobs from 19,000+ companies' own career sites (Workday, Oracle, Greenhouse, SmartRecruiters, UKG + 10 more), refreshed daily. Pay on 29% of jobs. Filter by title, location or salary, or get only new jobs each run. $2 per 1,000.

Pricing

from $1.40 / 1,000 jobs

Rating

0.0

(0)

Developer

CMM Research

CMM Research

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

6 days ago

Last modified

Categories

Share

Career Site Jobs API — 1.8M+ Jobs with Salaries

Search more than 1.8 million open jobs from 19,000+ companies' own career sites (not job boards) in seconds. Workday, Oracle, Greenhouse, Lever and 15 more hiring systems, refreshed every night. Get job titles, companies, locations, posting dates, descriptions, and salaries where the posting states them (more than 500,000 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

  • Job boards and newsletters. Schedule a daily search with onlyNewSinceLastRun and get a clean feed with no duplicates.
  • Recruiters and sales teams. See who is hiring for what, where, right now.
  • Salary research. Filter by minimum pay and currency across real, current postings.
  • Labour-market and AI projects. Build a large, structured, deduplicated job dataset without running a scraper.

A real result (from a 7 Oct 2026 search for data engineers paid in USD):

{
"title": "Senior Data Engineer",
"companyName": "Credence",
"company": "credence",
"location": "McLean, Virginia, United States",
"additionalLocations": [
"Boston, Massachusetts, United States",
"Warner Robins, Georgia, United States",
"Wright-Patterson Air Force Base, Ohio, United States"
],
"remote": false,
"department": "DOW AI/Tech",
"postedAt": "2026-10-07T00:00:00.000Z",
"employmentType": "Full-time",
"salaryMin": 115000,
"salaryMax": 155000,
"salaryCurrency": "USD",
"salaryPeriod": "year",
"salaryText": "$115,000 - $155,000",
"url": "https://apply.workable.com/j/7AE92C7BA3",
"ats": "workable"
}

Every job also comes with its description (plain text, up to 8,000 characters) and the fields listed under Output below.

Large employers hire through Workday (NVIDIA, Salesforce, CVS, Lowe's, Morgan Stanley) or Oracle Recruiting Cloud (JPMorgan Chase, Marriott, Kroger, Hilton, Macy's); mid-size and global companies through SmartRecruiters (Bosch, Domino's, Accor), UKG (Buc-ee's, Big 5 Sporting Goods, Ollie's) or Jobvite (JBS, Pilgrim's, MedVet); startups and small businesses through Greenhouse, Workable, Ashby, Lever, BambooHR, Rippling, Breezy, Personio, Teamtailor and Recruitee. Large US hospital systems are included too, such as Ascension, SSM Health, Sutter Health, CommonSpirit, Kaiser Permanente, Baylor Scott & White, Duke Health, BJC HealthCare, MedStar Health, Emory Healthcare and Texas Health Resources, including the ones on Phenom, iCIMS, TalentBrew and Taleo career sites. This Actor covers all of them with one set of output fields.

SystemJobs
Workday860,000+
Oracle Recruiting Cloud300,000+
SmartRecruiters220,000+
UKG Pro (UltiPro)108,000+
Greenhouse89,000+
Workable63,000+
Ashby32,000+
BambooHR27,000+
Breezy HR19,000+
Personio12,000+
Recruitee12,000+
Jobvite10,000+
TalentBrew career sites10,000+
Teamtailor10,000+
Rippling9,500+
iCIMS (Jibe career sites and iCIMS career portals)8,500+
Phenom career sites6,000+
Lever3,000+
Taleo700+

Counts from the 19 Oct 2026 index; they change daily.

Why this one

  • Fast. Every career site is collected once a day into an index, so a search doesn't crawl thousands of sites while you wait. A typical search finishes in 10–20 seconds.
  • Straight from the source. Every role comes from the company's own career site, not a third-party job board, and the url is the company's own apply link.
  • Newest first. Results are sorted by posting date, and postedWithinDays skips the old ones cheaply.
  • Nothing silently missing. Workday hides everything past its first 2,000 results; the daily collection gets past that, so big employers like Dollar Tree (23,000+ roles) are complete.
  • Pay ranges as data. About a quarter of all roles — far more in the US, where pay-transparency laws apply — state a salary or hourly rate. It's extracted into salaryMin / salaryMax / salaryCurrency / salaryPeriod, annualised into salaryAnnualMin / salaryAnnualMax, and filterable. Each system's own structured pay data is used where it exists (Ashby, Rippling, UKG, Recruitee, and the pay fields of Breezy and BambooHR).
  • Only what's new, on a schedule. Turn on onlyNewSinceLastRun and schedule the search daily: each run returns only roles added since the last one, so you never pay twice for the same job.
  • Real company names (companyName), plus the career-site id (company) for joins.
  • Pay only for what you get. Filters run before charging.

Pricing

$2 per 1,000 jobs, plus Apify's standard run-start fee. Platform usage is included, so you are not billed for compute separately.

  • maxJobs is a hard cap per run.
  • Apify's maximum cost per run also works: if the limit is reached mid-run, the Actor stops cleanly and keeps everything delivered so far.

Input

FieldWhat it does
titleKeywords / titleExcludeKeywordsCase-insensitive "contains" filters on the job title.
locationKeywordsMatches any listed location or the country.
companyKeywordsMatches the company name or its career-site id.
postedWithinDaysOnly recent roles. Undated roles count from the day the index first saw them.
onlyNewSinceLastRunOnly roles the index added since this same search last ran. The first run returns everything that matches. Changing any filter starts a new history.
monitorNameOptional. Keeps two searches with identical filters on separate histories (e.g. one per client).
remoteOnlyOnly roles whose location or workplace label says remote.
onlyWithSalaryOnly roles whose posting states pay.
minAnnualSalaryOnly roles whose pay range reaches at least this per year, in the job's own currency (hourly × 2,080, monthly × 12).
salaryCurrenciesOnly roles paying in these currencies, e.g. USD, GBP.
sourcesLimit to any of the 19 systems (workday, oracle, smartrecruiters, ukg, greenhouse, workable, ashby, lever, bamboohr, breezy, personio, rippling, teamtailor, recruitee, jobvite, phenom, icims, talentbrew, taleo).
includeDescriptionAdds the job description as plain text (up to 8,000 characters).
maxJobs / maxJobsPerCompanyCaps on results, and your cost control.

Output

FieldDescription
idStable identifier
titleRole title
companyName / companyCompany name, and its career-site id
location / additionalLocations / countryEvery listed location (country where the site publishes it)
remote / remoteEligible / workplaceTypeRemote signals, and the company's own workplace label where published
departmentTeam or job category
postedAtWhen the company posted the role
firstSeenAtWhen the index first saw it. A reliable "new since" signal, even for undated roles
employmentTypeFull time, part time, contract… where published
salaryMin / salaryMax / salaryCurrency / salaryPeriodStated pay: e.g. 120000 / 150000 / USD / year, or 18.5 / 22 / USD / hour. Null when the posting states none
salaryAnnualMin / salaryAnnualMaxThe same range per year, for comparing hourly and salaried roles
salaryText / salarySourceThe text it came from ("$120,000 - $150,000"), and whether it was published as data (structured) or read from the description
urlApply link on the company's own career site
descriptionPlain-text description (optional)
atsWhich of the 19 systems the role came from (e.g. workday, greenhouse, phenom, icims)
indexedAtWhen the index this run read was built

The field names match our Workday and Greenhouse / Ashby / Lever Actors, which fetch a company's jobs live when you need the very latest.

Examples

Data engineers in Texas, last 7 days

{ "titleKeywords": ["data engineer"], "locationKeywords": ["Texas", "TX"], "postedWithinDays": 7 }

Every new remote role in the last day, titles and links only

{ "remoteOnly": true, "postedWithinDays": 1, "includeDescription": false, "maxJobs": 20000 }

Software engineers in the US paying $150k+

{ "titleKeywords": ["software engineer"], "salaryCurrencies": ["USD"], "minAnnualSalary": 150000, "maxJobs": 2000 }

Daily feed of new nursing roles in Ohio (schedule it once a day)

{ "titleKeywords": ["nurse", "RN"], "locationKeywords": ["Ohio", "OH"], "onlyNewSinceLastRun": true, "maxJobs": 5000 }

Everything two companies have open

{ "companyKeywords": ["Morgan Stanley", "Stripe"], "maxJobs": 10000 }

Instant API (Standby mode)

Need results inside your own app, in a second or two, without starting a run? This Actor also runs in Standby mode: it stays warm as a web API, and each request is one search.

curl "https://viridian-layout-ea2--career-site-jobs-api.apify.actor/?titleKeywords=data%20engineer&locationKeywords=Remote&postedWithinDays=7&maxJobs=50" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN"

Every input field works as a URL parameter; list fields take comma-separated values (titleKeywords=nurse,rn). Or POST the same JSON input you would give a run:

curl -X POST "https://viridian-layout-ea2--career-site-jobs-api.apify.actor/" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"titleKeywords": ["product manager"], "minAnnualSalary": 150000, "salaryCurrencies": ["USD"], "maxJobs": 100}'

The answer is JSON: {"count", "stoppedBecause", "indexedAt", "jobs": [...]}, with each job in the same format as a run's output. Same price as a run: you pay only for the jobs returned, and your spending limit trims the answer. Up to 5,000 jobs per request; descriptions are left out unless you add includeDescription=true. For daily "only new jobs" feeds, schedule a normal run with onlyNewSinceLastRun.

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": {
"career-jobs": {
"url": "https://mcp.apify.com?tools=viridian_layout_ea2/career-site-jobs-api"
}
}
}

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 career-jobs "https://mcp.apify.com?tools=viridian_layout_ea2/career-site-jobs-api"

Then ask in plain English, for example:

  • "Find registered nurse jobs in Ohio posted in the last 3 days that state an hourly rate."
  • "Which companies posted remote data engineer roles paying over $150k this week? Make a table."
  • "List every open role at Morgan Stanley and Stripe, with titles and links only."

Runs started by an agent are billed exactly like any other run, at $2 per 1,000 jobs. Ask it to set maxJobs if you want a hard cap.

Notes

  • Pay is read from each posting's own text, so it is as accurate as the posting. When a posting lists several ranges (one per state, say), the first is used. salaryText shows exactly what was read.

  • The index is rebuilt once a day. The run's SUMMARY record and every job's indexedAt say exactly when. For a single company's roles to the minute, use the live Actors linked above.

  • Roles disappear from the index within a few days of the company closing them.

  • onlyNewSinceLastRun remembers each search in a key-value store named career-site-jobs-monitor in your own Apify account. If a run stops at maxJobs or your spending limit, the new roles it didn't deliver are not offered again, so set maxJobs comfortably above a day's volume.

  • Jobvite career pages don't show a posting date, so Jobvite roles are dated by when the index first saw them (firstSeenAt).

  • Teamtailor's feed lists at most 100 roles per company, so its very largest employers are partially covered.