Job Postings Aggregator – Multi-ATS Jobs Feed
Pricing
Pay per event
Job Postings Aggregator – Multi-ATS Jobs Feed
One feed of new job postings across Greenhouse, Lever, Ashby, SmartRecruiters and Recruitee. Filter by title, location or remote; dedup means scheduled runs only return new roles. For recruiters, job boards and hiring-signal feeds.
Pricing
Pay per event
Rating
0.0
(0)
Developer
K O
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
One clean feed of new job postings across five major ATS platforms — Greenhouse, Lever, Ashby, SmartRecruiters and Recruitee — from a single company list. Filter by title, location, or remote, and let built-in deduplication mean a scheduled run only returns newly-posted roles. Every job comes back in the same normalized shape no matter which ATS it came from.
Who uses it
Recruiters and sourcers tracking a list of target companies, niche and aggregator job boards, sales teams watching accounts for hiring signals, and labor-market/HR-tech products that need one consistent jobs schema instead of five different APIs.
Why this is worth charging for
Each ATS has its own API, its own field names, its own quirks (Lever hands you epoch milliseconds, Recruitee a non-standard timestamp, SmartRecruiters pages by offset and nests every value behind {label}). Wiring up all five and diffing runs to find what's new is real work. This actor gives you one input, one output schema, one dedup layer — and only charges for jobs that pass your filters.
Input
| Field | Description |
|---|---|
sources | List of "<ats>:<company>" entries. Supported ats: greenhouse, lever, ashby, smartrecruiters, recruitee. The company is the slug from that ATS's careers URL. E.g. greenhouse:stripe, lever:ro, ashby:Ramp. |
titleIncludes | Keep only jobs whose title contains one of these keywords (case-insensitive). Empty = all. |
locationIncludes | Keep only jobs whose location contains one of these keywords. Empty = all. |
remoteOnly | Keep only remote-flagged roles (or locations mentioning remote). |
onlyNewSinceLastRun | Recommended for schedules — skips jobs already returned by a previous run. |
maxItems | Stop after this many normalized records. |
Filters are applied before billing, so you're never charged for jobs you filtered out.
Output
Each dataset item is one normalized job, identical shape across every ATS:
{"jobId": "03e2d4e1","ats": "ashby","company": "Ramp","title": "Solutions Consultant","location": "Remote (US)","department": "Sales","employmentType": "FullTime","remote": true,"postedAt": "2026-07-07T20:47:09.753+00:00","url": "https://jobs.ashbyhq.com/Ramp/03e2d4e1","applyUrl": "https://jobs.ashbyhq.com/Ramp/03e2d4e1/application","source": "Jobs Aggregator"}
Pricing (Pay-Per-Event)
query— charged once per run for the poll across your sources.job-record— charged per normalized job pushed (after filtering). This is the primary event.apify-actor-start(Apify-managed) — covers baseline compute per run.
A daily monitor of a target-account list with a title filter returns just the handful of relevant new roles for pennies.
Finding company slugs
| ATS | Slug is the part of the careers URL |
|---|---|
| Greenhouse | job-boards.greenhouse.io/<slug> |
| Lever | jobs.lever.co/<slug> |
| Ashby | jobs.ashbyhq.com/<slug> |
| SmartRecruiters | jobs.smartrecruiters.com/<slug> |
| Recruitee | <slug>.recruitee.com |
Source & reliability
All five sources are public ATS job-board APIs. No API keys, no proxies. Run npm test for the offline self-test covering the source parser and every ATS's field mapping.
SEO keywords: jobs aggregator, multi ATS scraper, Greenhouse Lever Ashby scraper, job postings API, new jobs feed, hiring signals, recruiting data, job board aggregator, ATS jobs feed