Job Feed & Tracker: Greenhouse, Lever, Ashby & 6 more ATS avatar

Job Feed & Tracker: Greenhouse, Lever, Ashby & 6 more ATS

Pricing

from $3.00 / 1,000 job records

Go to Apify Store
Job Feed & Tracker: Greenhouse, Lever, Ashby & 6 more ATS

Job Feed & Tracker: Greenhouse, Lever, Ashby & 6 more ATS

Search fresh jobs across about 9,700 company job boards on 9 ATS platforms, or track your own company list for new and removed jobs. Every result links to the original posting. Pay per result.

Pricing

from $3.00 / 1,000 job records

Rating

0.0

(0)

Developer

BottyProjects Data Tools

BottyProjects Data Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Search fresh jobs on 9 ATS job-board sources, or track any company list.

Find fresh jobs straight from company career boards, in one run, with no setup. Type a role ("data engineer") and a place ("United States", "Remote"). The Actor scans thousands of public company job boards on Greenhouse, Lever, Ashby, Workable, Recruitee, Personio, Teamtailor, Breezy HR and Pinpoint, and returns one clean record per matching job with a link to the original posting.

Already have a list of companies? Switch to Track mode. It remembers the last run and marks every job new, still open or removed, so a daily run delivers only the changes.

  • ✅ Search mode: keywords + location + "posted in the last N days", across a bundled list of about 9,660 live company boards, plus any boards you add
  • ✅ Track mode: change tracking for your own company list, with only-changes output (unchanged from v1)
  • ✅ 9 sources searched by default: Greenhouse, Lever (US + EU), Ashby, Workable, Recruitee, Personio, Teamtailor, Breezy HR and Pinpoint. Rippling (and BambooHR, if you turn it on) is fetched only for boards you enter yourself.
  • ✅ One schema for every source: title, company, department, location, country, remote flag, workplace and employment type, posted date, salary when published, link, short snippet
  • ✅ No personal data by default: recruiter fields and avatars dropped, emails and phone numbers redacted
  • ✅ Polite by design: public logged-off endpoints only, robots.txt honored, per-host rate limits, stops on blocks
  • ✅ Fast and cheap: you pay only for matching jobs delivered; one bad board never fails the run

Who it is for

  • Recruiters and agencies: fresh roles to pitch candidates into, by title and region, daily.
  • Sales teams: hiring is buying intent. Find companies opening "Head of RevOps" or "Data Engineer" roles this week.
  • Investors and competitor watchers: track hiring at portfolio or rival companies and see openings, removals and freezes.
  • Job-board and newsletter builders: a clean, deduplicated feed of new postings with links back to the source.
  • Job seekers: see new roles the day they go up, straight from the employer's own board.

Quick start (Search mode)

The form is prefilled. Press Start and you get up to 50 software and data engineer jobs in the United States, posted in the last 14 days, at most 10 per company.

{
"mode": "search",
"searchKeywords": ["software engineer", "data engineer"],
"searchLocations": ["United States"],
"postedWithinDays": 14,
"maxResults": 50
}

More examples:

GoalInput
Remote product designers, last 7 days{"mode":"search","searchKeywords":["product designer"],"remoteOnly":true,"postedWithinDays":7}
Account executives in the UK or Germany{"mode":"search","searchKeywords":["account executive"],"searchLocations":["UK","Germany"]}
Only boards I choose, no bundled list{"mode":"search","searchKeywords":["nurse"],"companies":["teamtailor:acme","https://acme.breezy.hr"],"useSeedList":false}

How search works:

  1. Boards you enter in Companies are scanned first.
  2. Then boards your earlier runs learned about (see "Board registry" below).
  3. Then the bundled seed list, largest boards first, mixed across sources.
  4. It stops at Max results, Max boards to scan or Max run time (default 240 s), whichever comes first. RUN_SUMMARY shows how many boards were scanned and why it stopped, and suggests what to change if nothing matched.

Search options:

  • Keywords: whole words or phrases in the job title. Any one keyword is enough. excludeTitleKeywords removes titles.
  • Locations: any one match is enough. Countries and common aliases work ("United States", "US", "UK", "Germany", "Europe", "Remote"). US state codes ("CA", "NY") match the "City, ST" part of a location.
  • Max results per company: default 10, so one big employer can't fill the whole result set (boards you enter yourself are not capped).
  • Posted within (days): jobs with no published date (for example Pinpoint and some Workable boards) are left out unless you turn on Include undated jobs.
  • Sources to search: limit the scan to some of the 9 searchable sources.

Track mode (change tracking)

Put one company per line in Companies and set Mode to Track. Any of these work:

FormatExample
Board URLhttps://job-boards.greenhouse.io/airbnb, https://jobs.lever.co/palantir, https://jobs.ashbyhq.com/ramp, https://apply.workable.com/huggingface/
More board URLshttps://<slug>.recruitee.com, https://<slug>.jobs.personio.de, https://<slug>.teamtailor.com, https://<slug>.breezy.hr, https://<slug>.pinpointhq.com, https://ats.rippling.com/<slug>/jobs
Shorthandgreenhouse:stripe, lever:spotify, lever-eu:<slug>, ashby:notion, workable:<slug>, recruitee:<slug>, personio:<slug>, teamtailor:<slug>, breezy:<slug>, pinpoint:<slug>, rippling:<slug>
A company careers pagehttps://www.example.com/careers: scanned for an embedded board (if robots.txt allows)
Custom nameadd | Name, e.g. lever:spotify | Spotify
{
"mode": "track",
"companies": ["greenhouse:airbnb", "https://jobs.lever.co/palantir", "ashby:notion | Notion"],
"trackerId": "my-prospects",
"onlyChanges": true
}

Existing users: if your input has no mode, the Actor runs in Track mode exactly as before. Same output fields, same events, same prices.

Tracking options: Tracker ID (the name of this watchlist's memory), Output all jobs on a company's first run, Title must / must not contain, Location contains, Remote only, Max jobs per company.

How change tracking works

The Actor keeps a small memory in a named key-value store, job-board-tracker-state, in your account. It holds one record per tracker ID and company. Each run compares the live board with that memory:

  1. A job that wasn't there last time is new.
  2. A job that's still listed is open. If its title, location, department or type changed, changedFields lists what changed.
  3. A remembered job that's no longer listed is removed (output once, then forgotten).

The memory is only updated after a company was fetched successfully, so a temporary outage never shows up as "everything removed". If your max cost per run cuts off a company's output, that company's memory isn't updated, so you get those changes on the next run. Use a different Tracker ID for each list you track.

Tip: schedule a daily run with Only output changes on. Add a webhook or the Slack/email integration to get the changes delivered.

Output

One dataset item per job. Search-mode example (shape of a real record):

{
"recordType": "job",
"mode": "search",
"changeStatus": null,
"company": "Ramp",
"ats": "ashby",
"companySlug": "ramp",
"jobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"title": "Data Engineer",
"department": "Engineering",
"location": "New York, NY (HQ) | Remote (US)",
"country": null,
"remote": true,
"workplaceType": "hybrid",
"employmentType": "full_time",
"postedAt": "2026-10-27T17:12:35.753Z",
"postedAtSource": "ats",
"url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"salary": null,
"salaryText": null,
"descriptionSnippet": "ABOUT THE ROLE …",
"matchedKeywords": ["data engineer"],
"scrapedAt": "2026-10-31T19:52:42.508Z"
}
FieldMeaning
changeStatusnew (first time seen), open (seen before, still listed) or removed (gone since last run)
changedFieldsfor open jobs: which of title, location, department, employmentType, workplaceType changed
isBaselinetrue on the first run for that company (everything is "new")
remotetrue if the ATS marks it remote or a location says remote
workplaceTyperemote, hybrid, onsite or null if the ATS doesn't say
employmentTypefull_time, part_time, contract, internship, temporary, other or null
postedAt / updatedAtISO dates as given by the ATS (null if the ATS doesn't publish it)
firstSeenAt / lastSeenAt / removedAtwhen this Actor first saw, last saw, and noticed removal of the job

| mode | search for search results; absent on Track-mode records (unchanged v1 format) | | matchedKeywords | which of your keywords matched the title | | country | ISO country code when the source publishes one |

Error rows (wrong slug, removed board, blocked, opt-out) are never charged. The dataset has views for Search results, Overview, Changes, Full details and Errors. RUN_SUMMARY in the run's key-value store has the counts.

Board registry (shared within your account, no personal data)

Search runs keep a small list in a named key-value store, job-feed-board-registry, in your Apify account. It holds only board identifiers (like greenhouse:acme), a status (ok, empty, dead, blocked, error) and a date. Your later runs use it to skip dead boards for 30 days, blocked boards for 90 days and empty boards for 5 days, and to include boards you entered before. No job data and no personal data are stored there. Delete the store at any time to reset it.

Sources and limits

SourceUsed in searchHow it is read
Greenhouseyespublic Job Board API
Lever (US and EU)yespublic Postings API, 1 request/second (its robots.txt crawl delay)
Ashbyyespublic Job Posting API
Workableyespublic jobs widget feed
Recruiteeyespublic Careers Site API (Recruitee plans to require a token from 10 Feb 2027)
Personioyespublic XML job feed
Teamtailoryespublic jobs.json feed on each career site
Breezy HRyespublic JSON feed on each career portal
Pinpointyespublic postings.json endpoint (no posted dates)
Ripplingno, boards you enter onlypublic board feed, about 1 request/second
BambooHRno, off by default (enableBambooHR), boards you enter onlypublic careers list, about 1 request/second
SmartRecruitersNot supportedIts API policy covers a customer's own career site only, and its robots.txt disallows other crawlers.
Workday, iCIMS, Taleo, LinkedIn, Indeednot supported—

Limits:

  • The bundled seed list was built once from public web-crawl index files and checked against each board's public endpoint. It is a sample of company boards, not every company. Add your own boards in Companies to cover a specific employer.
  • Each board is fetched live in your run, so results are as fresh as the employer's board. A search run scans up to Max boards to scan (default 1,500) within Max run time (default 240 s).
  • On HTTP 401 or 403, a robots.txt disallow, or a bot-challenge page, the Actor stops for that board and reports an error row. On HTTP 429 it stops at once for Rippling and BambooHR, and after one polite retry for other sources. It never retries through proxies or other workarounds.
  • Requests to each host are sent one at a time, with a fixed pause between them (0.3–1.5 s, depending on the source, or longer if the site's robots.txt asks for it). No more than 10 boards are processed in parallel.
  • We suggest keeping output datasets for no more than 90 days. RUN_SUMMARY (counts, board identifiers and error text, no personal data) sits in the run's default key-value store, which Apify deletes automatically after your account's data-retention period. Keep it no longer than 90 days either (Billing → Limits → data retention). The named stores job-board-tracker-state and job-feed-board-registry are kept until you delete them, so delete them when you stop tracking.

Privacy

By default the output contains no personal data: recruiter and hiring-manager fields and avatars are dropped, and emails and phone numbers in descriptions are replaced with [email removed] / [phone removed]. If you turn on includePersonalData, you must also tick personalDataLawfulBasisConfirmed. Then only names shown on the public posting are kept, nothing is enriched, and no personal data is cached between runs or shared between users.

Pricing

Pay per event. You only pay for what's delivered:

EventPrice
Job record delivered (both modes)$0.003 ($3 per 1,000)
Company checked (Track mode only: one company's board fetched and compared)$0.002

Search mode charges only for matching jobs delivered, never for the boards it scans. The Apify platform also charges its standard tiny Actor-start fee. Error rows and skipped unchanged jobs are free.

Examples:

  • Search: 50 results = $0.15. 500 results = $1.50. Max results caps the cost of a run.
  • Track, full snapshot: 8 companies with 1,642 jobs cost about $4.94.
  • Track, daily changes: the same 8 companies with only changes on cost about $0.03 a day. 100 companies with about 30 changes a day cost about $0.29 a day.

Set Max cost per run to cap any run. The Actor stops cleanly when the cap is reached.

Legal & fair-use notice. This Actor collects publicly available job postings from public, logged-off career pages and job-board endpoints of applicant tracking systems (ATS). It is not affiliated with, endorsed by, or sponsored by Workday, BambooHR, Rippling, SmartRecruiters, Greenhouse, Lever or any other ATS vendor or employer; product names are used only to describe compatible sources. The Actor never logs in, never bypasses bot protection, honors robots.txt, rate-limits itself, and stops on blocks (HTTP 401/403/429 or challenges). Each result links to the original posting, which remains the authoritative source.

You are responsible for making sure your use of this Actor and its output complies with the terms of the sites you target and with applicable law, including the GDPR, UK GDPR and CCPA/CPRA. By default, the Actor does not output personal data. If you enable includePersonalData, you act as the data controller and must have a lawful basis. Don't use the output for unsolicited marketing, profiling, or building contact databases.

Opt-out / removal: Employers, ATS vendors or individuals can ask for a company, tenant or person to be excluded by opening an issue on this Actor's Apify page. We act on requests within 30 days, and within 24 hours for site-owner access objections.

This notice is not legal advice.

FAQ

Can I use the output to train AI models? No. Some job-board hosts publish a content signal that they don't want their content used for AI training (ai-train=no). This Actor is built for job search, monitoring, recruiting and research, not for training datasets.

Why did my search return few results? Narrow keywords plus a short date window can match few jobs among the boards scanned. RUN_SUMMARY → search.whyNoResults says what to loosen: broader keywords, more locations, a longer postedWithinDays, includeUndated, or a higher Max boards to scan.

How do I add a company that isn't found? Paste its board link or careers page into Companies. It is scanned first, and later runs in your account remember it.

How fast is it? For common searches, fast: in our test, the prefilled search ("software engineer" / "data engineer", United States, last 14 days) returned 50 results in about 30 seconds after checking about 52,000 open jobs on 114 boards. Rare or very narrow searches can run until the time limit (default 240 s) and return fewer results; the run summary then tells you which limit stopped it. Most of the time is polite waiting between requests to each job-board host.

Something broke, or you want a board removed? Open an issue on the Actor's Issues tab with the board link. RUN_SUMMARY shows the HTTP status and error per board.