Job Postings API · Live, All ATS · Greenhouse, Lever, Ashby +3 avatar

Job Postings API · Live, All ATS · Greenhouse, Lever, Ashby +3

Pricing

from $1.20 / 1,000 job results

Go to Apify Store
Job Postings API · Live, All ATS · Greenhouse, Lever, Ashby +3

Job Postings API · Live, All ATS · Greenhouse, Lever, Ashby +3

Live job postings from any company as clean JSON — fetched directly from the ATS, zero lag.

Pricing

from $1.20 / 1,000 job results

Rating

0.0

(0)

Developer

Samuel Elsner

Samuel Elsner

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Job Postings API — Greenhouse, Lever, Ashby, Workable & more

Get every job posting from any company as clean, unified JSON — live from the ATS, just paste the company's domain. The actor auto-detects which ATS (applicant tracking system) each company uses, pulls all open postings directly from the official public job-board API at run time — no stale database, zero lag — and returns them in one consistent schema. Turn on monitor mode and schedule it daily to receive only new postings — a live hiring-signal feed.

Why this actor

  • Live, not a database — every run fetches straight from the ATS API the moment you call it. Job databases refresh on a lag of hours; a posting that went up five minutes ago is already in your results here.
  • 🔎 Auto-detect — input stripe.com, a careers URL, a board slug, or a company name. No need to know whether they use Greenhouse or Lever.
  • 🧩 One schema for 6 ATS providers — Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters. Every job has the same fields; no per-provider parsing on your side.
  • 📡 Monitor mode — each scheduled run returns only postings never seen before. Perfect for sales triggers ("company X is hiring SDRs → they're scaling sales"), recruiting intel, and job boards.
  • 🛡️ No scraping brittleness — data comes from the vendors' official, public, documented job-board APIs. No headless browsers, no anti-bot cat-and-mouse, no broken runs after a site redesign.
  • 🎯 Filters — remote-only, title contains/excludes, location, department.

See it in action

Three domains in, 1,457 live jobs out — in 4 seconds:

Run succeeded: 1,457 jobs from 3 companies in 4 seconds

Just paste domains — auto-detect does the rest:

Input form: bare domains plus monitor mode and filters

One clean, unified schema across all ATS providers:

Dataset preview: unified job schema

Use cases

WhoHow
Sales / lead genHiring is buying intent. Monitor your target accounts daily; route new postings that match your trigger words to your CRM.
Recruiters & sourcingTrack competitor hiring, spot which teams are growing, feed your talent CRM.
Job boards & aggregatorsPull structured postings (title, location, remote, salary when published, apply URL) for hundreds of companies without maintaining scrapers.
Market researchHeadcount-growth signals by company, department, and geography over time.
AI agentsCall this actor via Apify's MCP server to give any agent live jobs data.

Input

{
"companies": ["stripe.com", "figma.com", "openai.com", "https://jobs.lever.co/plaid"],
"monitorMode": true,
"remoteOnly": false,
"titleIncludes": ["engineer", "developer"]
}

companies accepts domains, careers-page URLs, board slugs, company names, or explicit {"provider": "greenhouse", "slug": "stripe"} objects.

Output (unified schema — every field always present)

{
"id": "5364702004",
"key": "greenhouse:figma:5364702004",
"provider": "greenhouse",
"company": { "slug": "figma", "name": null, "domain": "figma.com" },
"title": "Account Executive, Emerging Enterprise",
"url": "https://boards.greenhouse.io/figma/jobs/5364702004",
"applyUrl": "https://boards.greenhouse.io/figma/jobs/5364702004",
"location": { "raw": "Berlin, Germany", "city": "Berlin", "country": "Germany", "remote": false },
"department": "Sales",
"team": null,
"employmentType": null,
"salary": { "min": null, "max": null, "currency": null, "interval": null, "raw": null },
"postedAt": "2024-11-01T10:05:10.000Z",
"updatedAt": "2026-06-20T12:00:00.000Z",
"descriptionText": "Figma is looking for…"
}

Salary is populated when the company publishes it (Lever structured ranges, Ashby compensation summaries). SmartRecruiters descriptions require one extra API call per posting — the actor does this automatically when includeDescription is on; turn it off for faster, cheaper runs.

Monitor mode

With monitorMode: true the actor remembers every job it has delivered (in its key-value store) and emits only new postings on each run. Schedule it daily against your account list and connect the dataset to Zapier/Make/webhooks — that's a hiring-signal pipeline in two clicks. First run delivers the full current board (your baseline); subsequent runs deliver only the delta.

Supported providers

ProviderDetectionSource
Greenhouse✅ autoofficial public boards API
Lever✅ autoofficial public postings API
Ashby✅ autoofficial public posting API
Workable✅ autoofficial public widget API
Recruitee✅ autoofficial public offers API
SmartRecruiters✅ autoofficial public postings API

More providers (Teamtailor, Personio, BambooHR) are on the roadmap — tell us which one you need in the Issues tab.

Pricing & fairness notes

Pay-per-event: a small per-run start fee plus a per-job-result fee. Use titleIncludes/remoteOnly filters and includeDescription: false to keep result counts (and your cost) down. If a company can't be resolved to any ATS, you are not charged for it.

FAQ

Is this legal? The actor reads the same public, unauthenticated job-board APIs each ATS vendor provides precisely so postings can be embedded and read. No logins, no personal data, no rate-limit evasion.

A company isn't detected. Some companies use an ATS we don't support yet, a custom careers site, or a non-standard board slug. Pass an explicit careers URL (e.g. https://boards.greenhouse.io/theirslug) — or open an issue and we'll add detection.

How fresh is the data? Live — every run hits the ATS APIs directly.