---
title: "ATS Job Aggregator: Greenhouse, Lever, Ashby, Workday in One API - JobsPipe"
description: "Every public ATS board in one normalized endpoint. Greenhouse, Lever, Ashby, Workday, SmartRecruiters and more, across 30+ sources, without knowing a single company slug in advance."
canonical: https://jobspipe.dev/ats-job-aggregator
---

# One API across every ATS.

Greenhouse, Lever, Ashby, Workday, SmartRecruiters and more, across 30+ sources, in one normalized endpoint. No board tokens to collect, no per-ATS parsers to maintain. The endpoint, its fields and its pricing are documented in full on [the jobs API page](https://jobspipe.dev/jobs-api).

[Get a free API key](https://jobspipe.dev/signup)[Browse every source](https://jobspipe.dev/sources)

![The JobsPipe dashboard listing open data engineer postings in the United States, with company, posted date, job title, function, seniority and skills columns](https://jobspipe.dev/app/job-search-live.png)

## How it works

![The JobsPipe dashboard listing open data engineer postings in the United States, with company, posted date, job title, function, seniority and skills columns](https://jobspipe.dev/app/job-search-live.png)

1.  01Every open role from 30+ sources, in one search
    
    Search by title, skill, company, place, salary, seniority or remote. Postings from job boards and ATS platforms come back in one schema, deduplicated across sources.
    
    [Get free API key](https://jobspipe.dev/signup?ref=steps)
    
2.  02The same search is one API call
    
    POST /v1/jobs/search returns the postings as JSON. Try it in the sandbox without a key, then count credits per job returned.
    
    [Read the docs](https://docs.jobspipe.dev)
    
3.  03Turn a search into a signal
    
    Save it as a Signal and new matches arrive by email, Slack or webhook, each one once. Signals cost no credits.
    
    [Set up a signal](https://jobspipe.dev/signup?ref=steps-signal)
    
4.  04Ask from your AI agent
    
    Connect the hosted MCP server and Claude, Codex or any MCP client searches live postings and cites each one.
    
    [Connect your agent](https://jobspipe.dev/mcp-server)
    

## Why teams build on JobsPipe

![](https://jobspipe.dev/icon.png)

> Every team I spoke to that wanted to build with job data ended up building scrapers instead. So I decided we would do that work once.

[Read why we built it](https://jobspipe.dev/about)

![Dvir Atias, founder of JobsPipe](https://jobspipe.dev/authors/dvir-atias.jpg)

Dvir AtiasFounder, JobsPipe

Job boards and ATS platforms in one schema

30+

![](https://jobspipe.dev/favicons/greenhouse.png)![](https://jobspipe.dev/favicons/lever.png)![](https://jobspipe.dev/favicons/workday.png)![](https://jobspipe.dev/favicons/linkedin.png)![](https://jobspipe.dev/favicons/indeed.png)![](https://jobspipe.dev/favicons/ashby.png)

Of posting history

12 mo

On every plan

Free credits to start, no card

1,000

Credits charged for a signal

0

Ways in: API, MCP server and dashboard

3

## Why ATS jobs are hard to aggregate

Every major ATS publishes job postings per tenant, not in aggregate. There is no endpoint at Greenhouse or Lever that returns all jobs across all customers.

That means the hard part of an ATS aggregator is not reading the API. It is discovering which companies exist on each ATS in the first place.

Greenhouse's public board endpoint is boards-api.greenhouse.io/v1/boards/<company>/jobs. You have to already know the board token for every company you want.

Workday has no public job-postings API at all. Its Staffing REST API needs OAuth credentials granted by each tenant individually, which works only if you are that company.

A job aggregator therefore has to maintain a directory of tenants per ATS, and keep it current as companies join and leave.

## Three ways to get ATS postings

| Approach | Auth | Coverage per call | Tenant discovery | Schema |
| --- | --- | --- | --- | --- |
| Raw ATS endpoints | None for public boards, OAuth for Workday | One company | You maintain the tenant list yourself | Different per ATS |
| Apify actors | Apify token | One run, per configured set | You supply the companies or the actor's own list | Per actor, varies |
| JobsPipe | One API key | Every tenant on every source at once | Maintained for you across 39 sources | One schema for all of them |

## One request, three ATS platforms

```
curl -s -X POST https://api.jobspipe.dev/v1/sandbox/jobs/search \
  -H 'content-type: application/json' \
  -d '{
    "source_or": ["greenhouse", "lever", "ashby"],
    "posted_at_max_age_days": 7,
    "limit": 25
  }'
```

`source_or` takes any combination of sources. Drop it and the query spans all of them. No key is needed for the sandbox, which returns sample records so you can check the shape before signing up.

## Coverage on the four biggest

| ATS | Coverage | Refresh | Detail |
| --- | --- | --- | --- |
| Greenhouse | 3,000+ public boards | 24h refresh | Greenhouse source page |
| Lever | Every public Lever customer | 24h refresh | Lever source page |
| Ashby | Every public Ashby customer, 2,000+ | 24h refresh, 6h on high volume | Ashby source page |
| Workday | 45,000+ live postings from verified public tenants | 24h refresh | Workday source page |

## Every source, one per page

Each source has its own page covering what it publishes, how its public endpoints behave and where the awkward parts are.

[![](https://jobspipe.dev/favicons/workday.png)Workday](https://jobspipe.dev/sources/workday)[![](https://jobspipe.dev/favicons/paycom.png)Paycom](https://jobspipe.dev/sources/paycom)[![](https://jobspipe.dev/favicons/indeed.png)Indeed](https://jobspipe.dev/sources/indeed)[![](https://jobspipe.dev/favicons/glassdoor.png)Glassdoor](https://jobspipe.dev/sources/glassdoor)[![](https://jobspipe.dev/favicons/ashby.png)Ashby](https://jobspipe.dev/sources/ashby)[![](https://jobspipe.dev/favicons/workable.png)Workable](https://jobspipe.dev/sources/workable)[![](https://jobspipe.dev/favicons/lever.png)Lever](https://jobspipe.dev/sources/lever)[![](https://jobspipe.dev/favicons/smartrecruiters.png)SmartRecruiters](https://jobspipe.dev/sources/smartrecruiters)[![](https://jobspipe.dev/favicons/icims.png)iCIMS](https://jobspipe.dev/sources/icims)[![](https://jobspipe.dev/favicons/pinpoint.png)Pinpoint](https://jobspipe.dev/sources/pinpoint)[![](https://jobspipe.dev/favicons/jazzhr.png)JazzHR](https://jobspipe.dev/sources/jazzhr)[![](https://jobspipe.dev/favicons/manatal.png)Manatal](https://jobspipe.dev/sources/manatal)[![](https://jobspipe.dev/favicons/breezy.png)Breezy HR](https://jobspipe.dev/sources/breezy)[![](https://jobspipe.dev/favicons/greenhouse.png)Greenhouse](https://jobspipe.dev/sources/greenhouse)[![](https://jobspipe.dev/favicons/bamboohr.png)BambooHR](https://jobspipe.dev/sources/bamboohr)[![](https://jobspipe.dev/favicons/paylocity.png)Paylocity](https://jobspipe.dev/sources/paylocity)[![](https://jobspipe.dev/favicons/linkedin.png)LinkedIn](https://jobspipe.dev/sources/linkedin)[![](https://jobspipe.dev/favicons/ziprecruiter.png)ZipRecruiter](https://jobspipe.dev/sources/ziprecruiter)[![](https://jobspipe.dev/favicons/successfactors.png)SAP SuccessFactors](https://jobspipe.dev/sources/successfactors)[![](https://jobspipe.dev/favicons/zoho-recruit.png)Zoho Recruit](https://jobspipe.dev/sources/zoho-recruit)[![](https://jobspipe.dev/favicons/jobvite.png)Jobvite](https://jobspipe.dev/sources/jobvite)[![](https://jobspipe.dev/favicons/taleo.png)Taleo](https://jobspipe.dev/sources/taleo)[![](https://jobspipe.dev/favicons/teamtailor.png)Teamtailor](https://jobspipe.dev/sources/teamtailor)[![](https://jobspipe.dev/favicons/personio.png)Personio](https://jobspipe.dev/sources/personio)[![](https://jobspipe.dev/favicons/usajobs.png)USAJOBS](https://jobspipe.dev/sources/usajobs)[![](https://jobspipe.dev/favicons/recooty.png)Recooty](https://jobspipe.dev/sources/recooty)[![](https://jobspipe.dev/favicons/trakstar.png)Trakstar Hire](https://jobspipe.dev/sources/trakstar)[![](https://jobspipe.dev/favicons/polymer.png)Polymer](https://jobspipe.dev/sources/polymer)[![](https://jobspipe.dev/favicons/comeet.png)Comeet](https://jobspipe.dev/sources/comeet)[![](https://jobspipe.dev/favicons/rippling.png)Rippling](https://jobspipe.dev/sources/rippling)[![](https://jobspipe.dev/favicons/dayforce.png)Dayforce](https://jobspipe.dev/sources/dayforce)[![](https://jobspipe.dev/favicons/bullhorn.png)Bullhorn](https://jobspipe.dev/sources/bullhorn)[![](https://jobspipe.dev/favicons/oracle-recruiting-cloud.png)Oracle Recruiting Cloud](https://jobspipe.dev/sources/oracle-recruiting-cloud)[![](https://jobspipe.dev/favicons/cornerstone.png)Cornerstone](https://jobspipe.dev/sources/cornerstone)[![](https://jobspipe.dev/favicons/hibob.png)HiBob](https://jobspipe.dev/sources/hibob)[![](https://jobspipe.dev/favicons/trinet.png)TriNet](https://jobspipe.dev/sources/trinet)[![](https://jobspipe.dev/favicons/jobadder.png)JobAdder](https://jobspipe.dev/sources/jobadder)[![](https://jobspipe.dev/favicons/recruiterflow.png)Recruiterflow](https://jobspipe.dev/sources/recruiterflow)[![](https://jobspipe.dev/favicons/pcrecruiter.png)PCRecruiter](https://jobspipe.dev/sources/pcrecruiter)[![](https://jobspipe.dev/favicons/paycor.png)Paycor](https://jobspipe.dev/sources/paycor)[![](https://jobspipe.dev/favicons/gem.png)Gem](https://jobspipe.dev/sources/gem)[![](https://jobspipe.dev/favicons/ultipro.png)UltiPro (UKG Pro)](https://jobspipe.dev/sources/ultipro)[![](https://jobspipe.dev/favicons/naukri.png)Naukri](https://jobspipe.dev/sources/naukri)[![](https://jobspipe.dev/favicons/dover.png)Dover](https://jobspipe.dev/sources/dover)

## FAQ

What is an ATS job aggregator?

A service that reads job postings from many applicant tracking systems and returns them through one interface with one schema. The aggregation is the point: each ATS publishes per company, so without an aggregator you are querying Greenhouse for one employer at a time, then doing it again differently for Lever, then again for Workday.

Can I just call the Greenhouse and Lever APIs directly?

Yes, and for a small fixed list of employers that is the right call. Greenhouse's job board endpoint and Lever's postings endpoint are public and need no key. The limit is discovery, not access: both are addressed per company, so you need every company's board token or account name in advance. Direct integration is cheapest when you know exactly whose jobs you want and that list rarely changes.

Why is Workday harder than the others?

Workday publishes no public job-postings API. Its Staffing REST API is OAuth-scoped per tenant, granted by the customer, so it serves the employer rather than anyone reading the market. Every Workday customer instead hosts a careers site on a myworkdayjobs.com subdomain, and the tenant list is the thing you have to construct.

How is this different from building my own aggregator?

Mostly it is the same work, done once. The engineering is not the per-source parsing, it is keeping a tenant directory current across every ATS as companies adopt, migrate and churn. If you want to build it anyway, there is a full write-up of what that involves.

Which ATS platforms are covered?

39 sources, including Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, BambooHR, iCIMS, Paylocity and SuccessFactors, alongside job boards like Indeed and Glassdoor. Every posting carries the source that produced it, so you can filter to one ATS or exclude one entirely.

Can I try it without an API key?

Yes. The sandbox endpoint takes the same filters and needs no authentication, so you can confirm the request and response shape first. It returns sample records rather than live postings; swap in /v1/jobs/search with a key for the real index.

Building one yourself instead? [How to build a job aggregator](https://jobspipe.dev/guides/how-to-build-a-job-aggregator) covers the tenant-discovery problem in full.


## Further reading

- [ATS API: one integration across applicant tracking systems](https://jobspipe.dev/blog/ats-api-integration)
- [Which ATS APIs are actually public? The 2026 job-data reference](https://jobspipe.dev/blog/public-vs-gated-ats-apis)
- [Fantastic.jobs vs JobsPipe: ATS job feeds compared](https://jobspipe.dev/blog/fantastic-jobs-alternative)
- [Taleo API: pulling job postings from Oracle's legacy ATS](https://jobspipe.dev/blog/taleo-api-jobs)
- [Jobvite API: what you can pull, and the feed most customers never enable](https://jobspipe.dev/blog/jobvite-api-jobs)

---
Try it with no key: `curl -d '{"limit":3}' https://api.jobspipe.dev/v1/sandbox/jobs/search`. AI agents: the full machine-readable index of this site is https://jobspipe.dev/llms.txt?src=md-twin - API quickstart, MCP server, pricing. Free key (1,000 jobs to start): https://jobspipe.dev/signup