---
title: "ATS API: one integration across applicant tracking systems"
description: "Workday, Greenhouse, Lever, Ashby, BambooHR, SmartRecruiters, iCIMS, Workable - each has a different API shape. Here's how a unified ATS API replaces 30 integrations with one."
canonical: https://jobspipe.dev/blog/ats-api-integration
date_published: 2026-02-15
date_modified: 2026-02-15
author: Dvir Atias
---

# ATS API: one integration across applicant tracking systems

Workday, Greenhouse, Lever, Ashby, BambooHR, SmartRecruiters, iCIMS, Workable - each has a different API shape. Here's how a unified ATS API replaces 30 integrations with one.

“**ATS API**” is one of the highest-intent developer search terms in HR tech ($29 CPC), and it’s asked by two completely different audiences: builders who want to _read_ jobs _out_ of every ATS (job boards, sourcing tools, AI recruiters) and builders who want to _write_ applications _into_ every ATS (apply-on-behalf-of-candidate workflows).

This post is about the first kind. If you want to read jobs from Workday, Greenhouse, Lever, Ashby, BambooHR, SmartRecruiters, iCIMS, and 20+ more without writing 27 separate integrations, here’s how it works in 2026.

## The 30-ATS integration problem

Each ATS has its own auth model, its own JSON shape, its own field naming, and its own freshness guarantees. Pulling jobs from all of them is genuinely 30 separate integrations:

-   **Workday** - JSON feed per tenant, Akamai bot management, 10k result cap per query.
-   **Greenhouse** - free public REST API per board, but you need the board\_token.
-   **Lever** - public postings endpoint at `api.lever.co/v0/postings/{company}`; no auth, simple JSON.
-   **Ashby** - public jobs JSON at `jobs.ashbyhq.com/{company}`.
-   **BambooHR, SmartRecruiters, iCIMS, Workable** - each has its own endpoint shape, its own auth requirements (some require partner keys), and its own field IDs.

Try it without a key

```
curl -d '{"limit":3}' https://api.jobspipe.dev/v1/sandbox/jobs/search
```

Only `/v1/sandbox/*` needs no key.

## JobsPipe’s unified shape

Every job from every source returns the same fields:

```
{
  "id": "jp_8KQv2nT0pX",
  "title": "Senior Backend Engineer",
  "company": "Northwind Labs",
  "source": "greenhouse",
  "sources": [
    { "provider": "greenhouse", "url": "https://boards.greenhouse.io/northwindlabs/jobs/8KQv2nT0pX" },
    { "provider": "indeed", "url": "https://www.indeed.com/viewjob?jk=3741290021" }
  ],
  "location": {
    "city": "Berlin", "country": "DE",
    "lat": 52.52, "lng": 13.40, "remote": true
  },
  "compensation": {
    "min": 95000, "max": 135000, "currency": "EUR"
  },
  "posted_at": "2026-05-16T08:14:00Z",
  "apply_url": "https://boards.greenhouse.io/...",
  "description_md": "..."
}
```

## What you save

A team building this from scratch typically commits 2 engineers for ~6 months, then ongoing maintenance forever as ATSs change. Most JobsPipe customers replace 3-8 in-house scrapers with one integration in an afternoon.

## Frequently Asked Questions

### What is an ATS API?

An ATS API lets you read data out of, or write data into, applicant tracking systems programmatically. The term covers two different audiences: builders who want to read jobs out of every ATS for job boards, sourcing tools, and AI recruiters, and builders who want to write applications into every ATS for apply-on-behalf-of-candidate workflows. Those are separate problems and generally need separate integrations.

### How many integrations does it take to pull jobs from every ATS?

Pulling jobs from all the major systems is genuinely 30 separate integrations, because each ATS has its own auth model, JSON shape, field naming, and freshness guarantees. Workday uses a JSON feed per tenant with Akamai bot management and a 10k result cap. Greenhouse has a free public REST API per board but needs the board\_token. Lever and Ashby are open, while BambooHR, SmartRecruiters, iCIMS, and Workable differ again.

### Is it cheaper to build ATS integrations in-house or use a unified API?

Building from scratch typically commits 2 engineers for around 6 months, plus ongoing maintenance forever as ATSs change. A unified ATS API replaces that with one integration where every job returns the same fields: id, title, company, source, sources, normalized location with coordinates and a remote flag, compensation, posted\_at, apply\_url, and description\_md. Most JobsPipe customers replace 3 to 8 in-house scrapers with one integration in an afternoon.

Related

## Keep reading

-   [Comparison · Jul 16, 2026Which ATS APIs are actually public? The 2026 job-data reference](https://jobspipe.dev/blog/public-vs-gated-ats-apis)
-   [Guide · Jul 16, 2026Taleo API: pulling job postings from Oracle's legacy ATS](https://jobspipe.dev/blog/taleo-api-jobs)
-   [Guide · Sep 30, 2026Greenhouse API for many companies: reading thousands of job boards](https://jobspipe.dev/blog/greenhouse-api-for-many-companies)
-   [Guide · Sep 9, 2026Does Glassdoor Have an API?](https://jobspipe.dev/blog/does-glassdoor-have-an-api)
-   [Guide · Jul 13, 2026What is a SERP API? How they work and when to use one](https://jobspipe.dev/blog/what-is-a-serp-api)


## Further reading

- [Unified API](https://jobspipe.dev/glossary/unified-api)
- [ATS API](https://jobspipe.dev/glossary/ats-api)
- [Unified API platforms: the two kinds, and which one job data needs](https://jobspipe.dev/blog/unified-api-job-data)
- [Ashby API](https://jobspipe.dev/sources/ashby)
- [Workday API: public job postings from every tenant in 2026](https://jobspipe.dev/blog/workday-api-guide)

---
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