Career Site Jobs API – ATS job feeds with salaries
Pricing
from $1.00 / 1,000 job postings
Career Site Jobs API – ATS job feeds with salaries
Job postings straight from company career sites via their ATS (Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Workday, Oracle Recruiting). Normalized fields, salary ranges extracted, keyword/location filters, and a monitoring mode that returns only new jobs.
Pricing
from $1.00 / 1,000 job postings
Rating
0.0
(0)
Developer
Omar Arida
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
8 days ago
Last modified
Categories
Security
Limited permissionsShare
Career Site Jobs API – jobs straight from company career pages, with salaries
Get every open role from any company's own career site, normalized into one clean schema, with salary ranges extracted, keyword and location filters, and a monitoring mode that returns only the jobs posted since your last run.
It works by talking to the public JSON endpoints behind the applicant-tracking systems companies use, so there is no fragile scraping, no CAPTCHAs and no proxies. Supported ATS:
| ATS | Example source |
|---|---|
| Greenhouse | https://boards.greenhouse.io/stripe or greenhouse:stripe |
| Lever | https://jobs.lever.co/spotify or lever:spotify |
| Ashby | https://jobs.ashbyhq.com/openai |
| Workable | https://apply.workable.com/acme |
| SmartRecruiters | https://careers.smartrecruiters.com/Visa |
| Workday | https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite |
| Oracle Recruiting Cloud | https://xyz.fa.em2.oraclecloud.com/hcmUI/CandidateExperience/en/sites/CX_1 |
You can also paste a normal company careers page (e.g. https://www.example.com/careers) and the Actor will look for the embedded ATS link, or a bare slug (stripe) and it will try Greenhouse, Lever and Ashby.
What people use it for
- Recruiters & sourcers – watch 200 target companies and get a daily feed of new openings in your niche.
- Sales teams – hiring is a buying signal. "Who is hiring NetSuite / SAP / Salesforce / Kubernetes people right now?" = companies that are about to buy related services.
- Compensation analysts & HR tech – posted salary ranges (now required by pay-transparency laws in many US states and EU countries) normalized into min / max / currency / period.
- Job boards & aggregators – a reliable, structured feed from employers' primary sources.
- Analysts & journalists – headcount trends, remote-vs-office shifts, new office locations.
- AI agents – clean structured input via the Apify MCP server.
Input
{"sources": ["https://boards.greenhouse.io/stripe", "https://jobs.lever.co/spotify", "https://jobs.ashbyhq.com/openai"],"keywords": ["NetSuite", "SAP", "ERP"],"locationKeywords": ["London", "Remote"],"includeDescription": true,"onlyNewSinceLastRun": true,"monitorKey": "erp-hiring-watch"}
| Field | Description | Default |
|---|---|---|
sources | Career-site URLs, ATS board URLs, ats:slug or bare slugs | – |
keywords | Keep jobs whose title/department/description contains any of these | all |
excludeKeywords | Drop jobs containing any of these | – |
locationKeywords | Keep jobs whose location contains any of these | all |
remoteOnly | Only remote roles | false |
postedWithinDays | Only jobs posted in the last N days | no limit |
includeDescription | Fetch full description (needed for description keyword matching and text salary extraction) | true |
onlyNewSinceLastRun | Monitoring mode – output only jobs not returned before under the same monitorKey | false |
monitorKey | Name of the watchlist memory | default |
maxJobsPerSource, maxJobs | Safety caps | 5000 / 100000 |
Output
One record per job:
{"ats": "greenhouse","sourceSlug": "stripe","company": "Stripe","jobId": "6123456","title": "Senior Accountant, Revenue","department": "Finance","team": null,"location": "Dublin, IE","locations": ["Dublin, IE"],"isRemote": false,"employmentType": "Full-time","postedAt": "2026-10-21T09:12:00Z","updatedAt": "2026-10-28T11:03:00Z","applyUrl": "https://boards.greenhouse.io/stripe/jobs/6123456","salary": { "min": 95000, "max": 120000, "currency": "EUR", "period": "year", "source": "text", "raw": "€95,000 - €120,000 per year" },"descriptionText": "Who we are…","isNew": true,"firstSeenAt": "2026-10-29T20:00:00Z"}
salary.source is structured when the ATS publishes a pay range (Lever, Ashby, Greenhouse pay-range metadata) and text when it was parsed from the description. SUMMARY in the key-value store lists, per source, how many jobs were fetched, matched and new, plus any source that failed.
Download as JSON, CSV or Excel, or query the dataset through the API.
Monitoring mode
Turn on onlyNewSinceLastRun, give the watchlist a monitorKey, and add an Apify Schedule (e.g. every morning). Each run returns only jobs you have not seen before, so you can pipe them to Slack, email, a Google Sheet or your CRM with an Apify integration. Memory is stored in a key-value store named career-site-jobs-api-state in your account; delete the key to reset.
Pricing
Pay per event: a small amount per job delivered plus a start fee. You only pay for jobs that pass your filters. In monitoring mode you only pay for the new ones. Set a max cost per run in the Console to stay in control.
API / agents
curl "https://api.apify.com/v2/acts/omararida~career-site-jobs-api/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \-X POST -H 'Content-Type: application/json' \-d '{"sources":["greenhouse:stripe"],"keywords":["accountant"],"includeDescription":false}'
Works with the Apify MCP server so Claude, ChatGPT and other agents can call it as a tool.
Notes
- Workable and SmartRecruiters descriptions require one extra request per job; turn off
includeDescriptionfor faster list-only runs. - Salary extraction from free text is heuristic. It is tuned for ranges like
$120,000 - $150,000,€4.500 – €5.500 per month,AED 15,000 – 20,000 monthly,£45k-55k,$45 - $60 / hour. Always keep therawfield for audit. - Only public job boards are read. No personal data is collected.
Support
Missing an ATS (iCIMS, SuccessFactors, Taleo, BambooHR, Personio, Recruitee, Teamtailor)? Open an issue on the Issues tab with an example career page and it will be added.