9 ATS Adapters • One Typed SDK

ATS for TypeScript apps.

Fetch and normalize live job postings from Greenhouse, Ashby, Lever, Workday, and 5 more ATS providers behind one typed API with retries and AI agent tools.

$bun add ats-sdk
Read Docs
example.ts
import { createAtsClient } from "ats-sdk";
import { greenhouse } from "ats-sdk/greenhouse";
import { ashby } from "ats-sdk/ashby";
import { lever } from "ats-sdk/lever";

const ats = createAtsClient({
  sources: [
    greenhouse({ boardToken: "stripe" }),
    ashby({ boardToken: "openai" }),
    lever({ site: "palantir" }),
  ],
  concurrency: 5,
});

// Normalized StandardJob[] across all providers
const { jobs, total } = await ats.getJobs({
  query: "engineer",
  workplace: "Remote",
});
AnthropicAnthropic
OpenAIOpenAI
StripeStripe
VercelVercel
Figma
Linear
SupabaseSupabase
CloudflareCloudflare
DatadogDatadog
PostmanPostman
CanvaCanva
Scale AIScale AI
RetoolRetool
ZapierZapier
PalantirPalantir
Google
AnthropicAnthropic
OpenAIOpenAI
StripeStripe
VercelVercel
Figma
Linear
SupabaseSupabase
CloudflareCloudflare
DatadogDatadog
PostmanPostman
CanvaCanva
Scale AIScale AI
RetoolRetool
ZapierZapier
PalantirPalantir
Google

Ingest postings from 500+ top companies across Greenhouse, Ashby, Lever & more

Live ATS Inspection

Test any company board in real-time

Enter any company's ATS identifier or select a preset to test the live normalization pipeline directly against public endpoints.

Response & Normalized Output
Click "Inspect Board" or select a preset to preview normalized JSON data.

9 Modular Adapters

Each adapter is tree-shakeable and imports directly from its own subpath with zero external database dependencies.

Greenhouse
Public harvest boards endpoint with full rich HTML job content
Verified
ImportSingle page / content=true
ats-sdk/greenhouse
Ashby HQ
Full posting API with compensation tiers and plain/html descriptions
Verified
ImportFull board listing
ats-sdk/ashby
Lever
Lever Postings API with teams, commitment, and category mapping
Verified
ImportJSON list mode
ats-sdk/lever
Workday
Workday CXS job search & detail extraction for external career sites
Verified
ImportOffset-based (20/page)
ats-sdk/workday
BambooHR
BambooHR careers list API with detail enrichment support
Verified
ImportBatch streaming
ats-sdk/bamboohr
SmartRecruiters
SmartRecruiters public posting API with department & level refs
Verified
ImportOffset-based (100/page)
ats-sdk/smartrecruiters
Workable
Workable widget accounts API with multi-location & telecommuting
Verified
ImportFull widget list
ats-sdk/workable
Recruitee
Recruitee careers site API with structured salary and custom tags
Verified
ImportOffers endpoint
ats-sdk/recruitee
Breezy HR
Breezy HR portal JSON endpoint with JSON-LD schema parsing
Verified
ImportPortal array
ats-sdk/breezy

Why use ATS SDK

Stop reinventing brittle scraping code. Let ats-sdk handle the edge cases.

StandardJob Data Contract
Whether a job comes from Greenhouse, Workday, or Lever, your application receives an identical Zod-validated schema with structured workplace classifications, salary ranges, and cleaned HTML.
AI Agent & MCP Ready
Built-in createAtsAgentTools(client) returns typed tool definitions for Vercel AI SDK, LangChain, or Claude MCP, giving agents real-time job lookup capabilities.
Robust Retries & Rate-Limiting
Automatic exponential backoff, rate-limited queuing with PQueue, and non-retryable 4xx abort detection prevent IP bans and connection exhaustion.
Zero Database Lock-In
Pure TypeScript with zero DB bindings. Store your normalized jobs in Drizzle, Prisma, Supabase, Convex, or use them in-memory on Edge runtimes and Cloudflare Workers.