Career Site Jobs API - Greenhouse, Lever, Ashby & 4 more ATS avatar

Career Site Jobs API - Greenhouse, Lever, Ashby & 4 more ATS

Pricing

from $1.00 / 1,000 job listing returneds

Go to Apify Store
Career Site Jobs API - Greenhouse, Lever, Ashby & 4 more ATS

Career Site Jobs API - Greenhouse, Lever, Ashby & 4 more ATS

Get job postings straight from company career sites through the official public job-board APIs of Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Workable and Personio. One clean schema, filters, only-new-jobs mode. $1 per 1,000 jobs.

Pricing

from $1.00 / 1,000 job listing returneds

Rating

0.0

(0)

Developer

Wellington Pereira Konkel

Wellington Pereira Konkel

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Career Site Jobs API — Greenhouse, Lever, Ashby & 4 more ATS

Get job postings straight from company career sites — Greenhouse, Lever, Ashby, SmartRecruiters, Recruitee, Workable and Personio — in one clean schema. The Actor reads the official public job-board APIs each applicant tracking system (ATS) publishes for job boards: no HTML scraping, no browser, no login.

$1 per 1,000 jobs. You pay only for jobs returned; companies that fail (wrong URL, board not found) cost nothing.

What can this Actor do?

  • 🏢 7 ATS in one run — paste career page URLs, the ATS is detected automatically.
  • 🧹 One schema for every ATS — title, department, team, location(s), country, remote flag, workplace type, employment type, salary (when the employer publishes it), posted/updated dates, job and apply links.
  • 🔎 Filters — title keywords (include/exclude), location keywords, remote only, posted in the last N days.
  • 🔔 Only new jobs — monitoring mode that returns only jobs your previous runs did not return. Schedule it daily and get a feed of new openings (hiring signals, job alerts, market research).
  • 📝 Optional descriptions as plain text, with contact details (emails, phone numbers, personal profile links) removed.
  • ⚡ Fast and light — pure API calls, 256 MB of memory.

Supported career sites

ATSExample input
Greenhousehttps://boards.greenhouse.io/stripe or greenhouse:stripe
Lever (incl. EU)https://jobs.lever.co/spotify
Ashbyhttps://jobs.ashbyhq.com/ashby
SmartRecruitershttps://careers.smartrecruiters.com/smartrecruiters
Recruiteehttps://bunq.recruitee.com
Workablehttps://apply.workable.com/<company>
Personiohttps://personio.jobs.personio.de

Tip: open the company's "Careers" page and click any job — the address of the job page tells you the ATS.

How to use it

  1. Click Try for free (or Start).
  2. Paste one career page per line in Company career pages.
  3. Optionally add filters (title, location, remote, posted within N days).
  4. Click Start. Each job becomes one row in the Output tab — export as JSON, CSV or Excel, or read it through the API.

How much does it cost?

$1.00 per 1,000 jobs (pay-per-event job-listing, $0.001 per job), plus Apify's standard Actor start fee ($0.00005 per GB of run memory — about $0.0000125 per run at the default 256 MB). Platform usage is included.

Jobs returnedPrice
100$0.10
1,000$1.00
10,000$10.00
  • Jobs removed by your filters are not charged. Companies that fail are not charged.
  • Set a maximum cost per run in the run options; the Actor stops cleanly when it is reached.

Input

FieldDescriptionDefault
companiesCareer page URLs or ats:board—
titleKeywordsKeep titles containing any of these wordsall
excludeTitleKeywordsDrop titles containing any of these wordsnone
locationKeywordsKeep jobs whose location/country contains any of theseall
remoteOnlyOnly remote jobsfalse
postedWithinDaysOnly jobs posted in the last N daysall
onlyNewJobsOnly jobs not returned by previous runs (same company list)false
includeDescriptionAdd the description as plain textfalse
maxJobsPerCompanyLimit per company (after filters)500
{
"companies": ["https://boards.greenhouse.io/stripe", "https://jobs.lever.co/spotify", "https://jobs.ashbyhq.com/ashby"],
"titleKeywords": ["engineer", "developer"],
"remoteOnly": false
}

Output

{
"company": "ashby",
"ats": "ashby",
"jobId": "d573471b-2005-482c-9fbf-d1df9550cb57",
"title": "Engineering Manager - UK",
"department": "Engineering",
"team": "EMEA Engineering",
"location": "United Kingdom",
"locations": ["United Kingdom", "London", "Manchester"],
"country": "United Kingdom",
"remote": true,
"workplaceType": "Remote",
"employmentType": "FullTime",
"salary": "£110K – £200K",
"postedAt": "2025-04-01T14:39:51Z",
"updatedAt": null,
"url": "https://jobs.ashbyhq.com/ashby/d573471b-2005-482c-9fbf-d1df9550cb57",
"applyUrl": "https://jobs.ashbyhq.com/ashby/d573471b-2005-482c-9fbf-d1df9550cb57/application",
"description": null,
"scrapedAt": "2026-10-01T06:40:00Z"
}

Fields an ATS does not publish are null (for example, SmartRecruiters' list has no description; many employers do not publish salaries). A run summary (companies read, jobs, failures) is saved as SUMMARY in the run's key-value store.

Use it from your code (API)

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("srkonkel/career-site-jobs-ats").call(run_input={
"companies": ["https://boards.greenhouse.io/stripe", "https://jobs.lever.co/spotify"],
"titleKeywords": ["data"],
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["company"], job["title"], job["url"])

JavaScript (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('srkonkel/career-site-jobs-ats').call({
companies: ['https://jobs.ashbyhq.com/ashby'],
remoteOnly: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.length, 'jobs');

cURL (run and get the jobs in one call):

curl -X POST "https://api.apify.com/v2/acts/srkonkel~career-site-jobs-ats/run-sync-get-dataset-items" \
-H "Authorization: Bearer <YOUR_APIFY_TOKEN>" -H "Content-Type: application/json" \
-d '{"companies": ["https://boards.greenhouse.io/stripe"], "postedWithinDays": 7}'

Use it with AI agents (MCP)

Add this Actor as a tool in the Apify MCP server and your AI agent can look up open roles at any company that uses a supported ATS, paying per job like any other user.

FAQ

Is this legal? The Actor only reads the public job-board APIs that these ATS vendors publish so that job boards and websites can display openings. It does not log in, bypass protections or scrape HTML. Use the data in line with the terms of the sites involved and applicable law.

Do you collect personal data? No profiles or candidate data — only job postings. Descriptions are optional and emails, phone numbers and personal profile links are removed from them.

Why did a company fail? The URL is not from a supported ATS, the board name is wrong, or the board is empty/ private. Failed companies are listed in the run log and in SUMMARY, and are never charged.

Can I monitor companies for new jobs? Yes: turn on Only jobs not seen in previous runs and schedule the Actor (daily or hourly). Keep the same company list so the state matches.

Workday / iCIMS / Taleo? Not supported yet: they do not offer a comparable public job-board API.

Limitations

  • One run reads the companies you list; it is not a search over all companies on the internet.
  • Each ATS controls its own data: missing fields stay null.