ATS Jobs Feed: 350k+ Jobs from Greenhouse, Lever, Ashby avatar

ATS Jobs Feed: 350k+ Jobs from Greenhouse, Lever, Ashby

Pricing

Pay per event

Go to Apify Store
ATS Jobs Feed: 350k+ Jobs from Greenhouse, Lever, Ashby

ATS Jobs Feed: 350k+ Jobs from Greenhouse, Lever, Ashby

Pricing

Pay per event

Rating

0.0

(0)

Developer

A Q

A Q

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

38 minutes ago

Last modified

Share

ATS Jobs Feed: 350k+ Jobs from Greenhouse, Lever, Ashby, Recruitee, Personio & SmartRecruiters

ATS Jobs Feed is a pre-indexed, daily-refreshed database of open jobs from 12,000+ company career sites. Instead of scraping live pages one by one, you query a ready-made index: filter by keyword, country, remote, seniority, function, salary or company and get clean JSON, CSV or Excel in seconds. It also tells you which jobs were opened, closed or edited since yesterday and gives you a hiring signal per company.

Covers Greenhouse, Lever, Ashby, Recruitee, Personio and SmartRecruiters, including many European employers. $6 per 1,000 jobs. No proxies, no browser, no waiting for crawls.

What can this job data feed do?

  • ⚡ Instant results: the crawl already happened. A 100-job query returns in a few seconds, even when the index holds 350,000+ open jobs.
  • 🔎 Rich filters: keywords (title, department, company, skills), exclude words, country or city, remote / hybrid / on-site, seniority, job function, employment type, platform, company and minimum salary.
  • 🏷️ Structured fields that ATS pages don't give you: normalized country, seniority, function, workplace, skills, yearsExperience, and salary converted to a yearly USD figure. Every derived field says where it came from in tagSources.
  • 🔔 Changes mode: new, closed and edited jobs since the previous daily snapshot. Run it on a schedule to feed alerts, CRMs and job boards without re-reading the whole index.
  • 🏢 Companies mode: one record per company with open roles, jobs posted in the last 7 / 30 days, top functions, countries and skills, remote share, median salary and a 7-day hiring trend. Built for sales prospecting and market research.
  • 📝 Descriptions your way: none, truncated (default, 1,500 characters) or full text. E-mail addresses and phone numbers are removed.
  • 🧭 Honest freshness: every record has dataAsOf and snapshotId, and dataStale turns true if a refresh was missed.

Who is it for?

  • Job boards and aggregators that need fresh, de-duplicated postings by niche or country.
  • Recruiters and staffing agencies tracking who is hiring for what, right now.
  • Sales and revenue teams using hiring as a buying signal ("20 new data roles at this company").
  • Analysts and investors measuring hiring velocity, remote policy and pay transparency.
  • AI agents and automations that need a fast, structured jobs API (works with the Apify API, Zapier, Make, n8n and the Apify MCP server).

How to use it

  1. Choose a Mode: jobs, changes or companies.
  2. Set filters, for example keywords data engineer, location Germany, workplace remote.
  3. Pick the description level and Max items.
  4. Click Start, or call the Actor from the API and put it on a schedule.

Empty input returns the 100 newest software-engineering jobs, so you can see the format in seconds.

Input

FieldWhat it does
modejobs (default), changes or companies
searchKeywords, excludeKeywordsTerms matched against title, department, company and skills (any match). Companies mode matches the company name
locationsCountry names or ISO codes (Germany, DE, US) or text in the location (Berlin, Remote)
workplace, seniority, functions, employmentTypes, atsPlatformsMulti-select filters
companiesCompany names or slugs (stripe, greenhouse:stripe)
minSalaryUsdOnly jobs with a published salary range whose top end reaches this yearly amount
postedWithinDaysJobs mode: age window, default 30 (0 = any age). A narrow window is also the fastest
changesSince, changeTypesChanges mode: date and new / closed / changed
minOpenJobsCompanies mode: minimum open roles
descriptionMode, descriptionMaxCharsnone, truncated (default) or full
includeAiOptOutInclude Greenhouse postings flagged as opted out of AI use (off by default; their descriptions stay withheld)
includeLowQualityInclude boards flagged as spam-like or mass-repeated (off by default, see Data quality)
maxItemsMaximum records to return and pay for (default 100, up to 100,000)
{
"mode": "jobs",
"searchKeywords": ["data engineer", "machine learning"],
"locations": ["Germany"],
"workplace": ["remote", "hybrid"],
"postedWithinDays": 14,
"descriptionMode": "truncated",
"maxItems": 500
}

Output example

Job record (mode: "jobs")

{
"id": "greenhouse:stripe:8238489",
"ats": "greenhouse",
"board": "stripe",
"company": "Stripe",
"title": "Engineering Manager, Self Serve Direct Onboarding",
"jobUrl": "https://stripe.com/jobs/search?gh_jid=8238489",
"applyUrl": "https://stripe.com/jobs/search?gh_jid=8238489",
"location": "New York City, San Francisco, Seattle",
"country": "US",
"workplace": null,
"employmentType": null,
"department": "8216 Risk Onboarding and Trusted Users",
"function": "engineering",
"seniority": "manager",
"yearsExperience": 4,
"skills": [],
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"salaryInterval": null,
"salaryUsdYearMin": null,
"salaryUsdYearMax": null,
"salaryApproxFx": null,
"postedAt": "2026-10-15T18:58:40Z",
"firstSeen": "2026-10-16",
"tagSources": {
"seniority": "title",
"function": "title"
},
"descriptionStatus": "ok",
"descriptionChars": 4367,
"qualityFlags": [],
"description": "Who we are\n\nAbout Stripe\n\nStripe is a financial infrastructure platform for businesses. Millions of companies, from the world’s largest enterprises to the most ambitious startups, use Stripe to accept payments, grow their revenue, and accelerate new business opportunities. Our mission is to…",
"snapshotId": "20261016-0005q",
"dataAsOf": "2026-10-16T00:05:57Z",
"dataStale": false
}

Change record (mode: "changes")

{
"id": "greenhouse:stripe:8238489",
"ats": "greenhouse",
"board": "stripe",
"company": "Stripe",
"title": "Engineering Manager, Self Serve Direct Onboarding",
"jobUrl": "https://stripe.com/jobs/search?gh_jid=8238489",
"applyUrl": "https://stripe.com/jobs/search?gh_jid=8238489",
"location": "New York City, San Francisco, Seattle",
"country": "US",
"workplace": null,
"employmentType": null,
"department": "8216 Risk Onboarding and Trusted Users",
"function": "engineering",
"seniority": "manager",
"yearsExperience": 4,
"skills": [],
"salaryMin": null,
"salaryMax": null,
"salaryCurrency": null,
"salaryInterval": null,
"salaryUsdYearMin": null,
"salaryUsdYearMax": null,
"salaryApproxFx": null,
"postedAt": "2026-10-15T18:58:40Z",
"firstSeen": "2026-10-16",
"tagSources": {
"seniority": "title",
"function": "title"
},
"descriptionStatus": "ok",
"descriptionChars": 4367,
"qualityFlags": [],
"changeType": "new",
"changedAt": "2026-10-16T00:05:57Z",
"changedFields": [],
"description": "Who we are\n\nAbout Stripe\n\nStripe is a financial infrastructure platform for businesses. Millions of companies, from the world’s largest enterprises to the most ambitious startups, use Stripe to accept payments, grow their revenue, and accelerate new business opportunities. Our mission is to…",
"snapshotId": "20261016-0005q",
"dataAsOf": "2026-10-16T00:05:57Z",
"dataStale": false
}

Company hiring signal (mode: "companies")

{
"id": "greenhouse:stripe",
"company": "Stripe",
"companyNameDerivedFromSlug": false,
"ats": "greenhouse",
"board": "stripe",
"careersUrl": "https://stripe.com/jobs",
"openJobs": 726,
"openJobsIsLowerBound": null,
"postedLast7d": 46,
"postedLast30d": 261,
"newSinceLastSnapshot": 2,
"closedSinceLastSnapshot": 3,
"openJobs7dAgo": null,
"openJobsChange7d": null,
"hiringTrend": null,
"remoteShare": 0.16,
"withSalaryShare": 0,
"medianSalaryUsdYear": null,
"topFunctions": [
{
"function": "engineering",
"jobs": 196
},
{
"function": "sales",
"jobs": 136
},
{
"function": "data",
"jobs": 62
}
],
"topCountries": [
{
"country": "US",
"jobs": 347
},
{
"country": "IE",
"jobs": 68
},
{
"country": "SG",
"jobs": 48
}
],
"topSkills": [
{
"skill": "sql",
"jobs": 151
},
{
"skill": "python",
"jobs": 93
},
{
"skill": "data science",
"jobs": 82
},
{
"skill": "java",
"jobs": 67
}
],
"qualityFlags": [],
"snapshotId": "20261016-0005q",
"dataAsOf": "2026-10-16T00:05:57Z",
"dataStale": false
}

Key fields: qualityFlags (empty for normal boards, see Data quality), id (platform:board:jobId, stable across days), jobUrl and applyUrl (the employer's own page), postedAt (UTC), firstSeen (first day our crawler saw the job), salaryUsdYearMin/Max (with salaryApproxFx: true when converted from another currency at approximate fixed rates), descriptionStatus (ok, unavailable or withheld_ai_opt_out).

How much does it cost?

Pay per event. You only pay for what you get, and the max cost per run setting is respected exactly.

EventPrice
Actor start$0.005 per run
Job record (jobs mode)$0.006 per job ($6 per 1,000)
Full job description (add-on)+$0.002 per job that has a description
Change record (changes mode)$0.004 per record ($4 per 1,000)
Company hiring signal (companies mode)$0.02 per company ($20 per 1,000)

Example: 5,000 remote Germany jobs with truncated descriptions cost 5,000 × $0.006 + $0.005 = $30.01. A daily changes run returning 800 changes costs about $3.20.

Data sources, coverage and freshness

  • The index is rebuilt once a day from the public job-board APIs that Greenhouse, Lever, Ashby, Recruitee, Personio and SmartRecruiters publish so companies can show their jobs on their own sites. No logins, no paywalls, no candidate data.
  • Coverage today: 12,000+ career sites and 350,000+ open jobs. Workday, Workable and company-built career sites are not included. Boards we do not know about are not in the index, so use the sister Actor Greenhouse, Lever & Ashby Jobs Scraper when you need one specific company live.
  • SmartRecruiters and part of Personio expose descriptions only on request, so those jobs have descriptionStatus: "unavailable" and are never charged as full descriptions.
  • Derived fields (seniority, function, workplace, skills, country) come from transparent rules, not from an AI guess. They are accurate for the large majority of jobs but not perfect: use tagSources to see how a value was derived. Country is empty when the location text is ambiguous.

Data quality

Every board is scored at build time with simple, explainable rules, and the result is stored in qualityFlags on each job and company record:

  • spam_suspected: a big board (500+ jobs) where one title makes up 40% or more of all postings, or a board that we reviewed by hand and found to be mass-posted or unrelated content.
  • repetitive_postings: a big board (500+ jobs) with almost no distinct titles and templated descriptions, or 1,000+ jobs with at most 12% distinct titles. Typical examples are one posting per store or per region.
  • board_truncated: we could not read the whole board because the platform limits how many jobs it lists. These boards stay in the results, but their postedLast7d, postedLast30d, hiringTrend and new/closed counts are left empty (null) and openJobsIsLowerBound is true, because a partial sample says nothing reliable about hiring speed. New and closed jobs on truncated boards are not reported in changes mode.

Boards flagged spam_suspected or repetitive_postings are left out by default (about 8% of the index). Set includeLowQuality: true to get them back. Small employers are never flagged. If your company was flagged by mistake, open an issue on the Issues tab and we will review it.

Respecting employers

  • Job descriptions belong to the employers. This Actor returns the posting together with the employer's own jobUrl and applyUrl, truncates descriptions by default and removes e-mail addresses and phone numbers.
  • Greenhouse postings that carry an AI opt-out flag are excluded by default and their descriptions are never included.
  • Takedown requests: if you represent an employer and want your company or a posting removed, open an issue on the Issues tab with the career-site URL. Blocklisted boards and jobs disappear from results within 48 hours (usually much sooner).
  • This Actor is not affiliated with Greenhouse, Lever, Ashby, Recruitee, Personio or SmartRecruiters. All trademarks belong to their owners.

How to use the API (Python, JavaScript, cURL)

Every run is available through the Apify API. Get your API token in Apify Console → Settings → API & Integrations.

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("best_apis/ats-jobs-feed").call(run_input={"mode": "jobs", "searchKeywords": ["data engineer"], "locations": ["Germany"], "workplace": ["remote"], "maxItems": 100})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('best_apis/ats-jobs-feed').call({"mode": "jobs", "searchKeywords": ["data engineer"], "locations": ["Germany"], "workplace": ["remote"], "maxItems": 100});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

cURL (run and get jobs in one request)

curl -X POST "https://api.apify.com/v2/acts/best_apis~ats-jobs-feed/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode": "jobs", "searchKeywords": ["data engineer"], "locations": ["Germany"], "workplace": ["remote"], "maxItems": 100}'

Integrations

Connect results to Google Sheets, Slack, email, Zapier, Make, n8n, Airbyte, webhooks or AI agents through the Apify MCP server. Use Schedules in Apify Console to run it hourly, daily or weekly. Export any dataset as JSON, CSV, Excel, XML or HTML.

FAQ

Is it legal? This Actor only returns public job postings that employers publish through their ATS's public job-board feeds, with attribution links back to the employer. It contains no candidate or personal data. Laws differ by country and use case (for example copyright on full descriptions, and rules on commercial reuse), so check your own use and use descriptionMode: "truncated" or "none" if you only need the listings. Read more in Apify's guide to the legality of web scraping.

How fresh is the data? Refreshed once a day. Each record has dataAsOf. If a refresh is missed for more than 36 hours the records are flagged dataStale: true.

Why is a company I know missing? It may use Workday, Workable or its own careers site, or its board slug is not in our index yet. Open an issue with the career-site URL and we will check it.

What is the difference to the Greenhouse, Lever & Ashby Jobs Scraper? That Actor scrapes the boards you give it live. This one answers questions across 12,000+ boards at once, from a daily index, much faster and with change tracking.

Why are some big employers missing from the results? Boards that post the same few titles thousands of times (for example one posting per store) are treated as low quality and hidden by default. Set includeLowQuality: true to include them.

Why did my query return fewer jobs than expected? Jobs mode only looks at jobs posted in the last postedWithinDays days (30 by default). Increase it or set it to 0.

Can I get new jobs only? Yes: use mode: "changes" with changeTypes: ["new"] on a daily schedule.

Questions, bugs or feature requests? Open an issue on the Issues tab. We usually reply within 24 hours.