Greenhouse, Lever, Ashby, Workable, Recruitee & Personio Jobs avatar

Greenhouse, Lever, Ashby, Workable, Recruitee & Personio Jobs

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Greenhouse, Lever, Ashby, Workable, Recruitee & Personio Jobs

Greenhouse, Lever, Ashby, Workable, Recruitee & Personio Jobs

One API for Greenhouse, Lever, Ashby, Workable, Recruitee and Personio job boards. Pass a company domain, get every open role in a single schema. Duplicates are removed before billing, empty runs cost nothing, and posting dates come from the platform, never today's date.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

CleanAPI

CleanAPI

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Job postings from Greenhouse, Lever, Ashby, Workable, Recruitee & Personio

Give it a company domain or a careers page URL. Get every open role that company has published, whatever applicant tracking system it runs, in one schema.

What you are guaranteed

  • No duplicates charged. Deduplication happens on a stable key, before billing. Not after.
  • No empty results charged. Billing follows delivery, never the other way around.
  • Real posting dates. postedAt is never filled with today's date. postedAtSource always tells you where the date came from: platform_field for a genuine publication date, platform_created_at when the platform only exposes a creation date, unavailable when it gives nothing. The field is then null rather than guessed.
  • A country filter that works on all six platforms. Recruitee and Workable supply an ISO code directly. The other four publish only a free-text location, so the country is derived from it and flagged as derived_from_location, never passed off as reported data. A posting whose location cannot be resolved is dropped with reason country_unknown, never counted as a match. On a real sample of 635 postings, 93% resolved; the rest carried labels like "N/A".
  • Never an empty output without a reason. Every company gets a status in the coverage report: ok, no_open_positions, platform_not_detected or fetch_failed, with the detail.
  • No runaway runs. maxResults and maxRuntimeSecs are hard limits.

Platforms

PlatformSource
Greenhouseboards-api.greenhouse.io, documented public API
Leverapi.lever.co, documented public API
Ashbyapi.ashbyhq.com, documented public API
Recruitee{account}.recruitee.com, documented public API
Workableapply.workable.com, undocumented endpoint, monitored daily
Personio{account}.jobs.personio.de/xml, public XML feed

Known limits, stated upfront

  • Personio has no publication date. It only exposes a creation date, so postedAtSource reads platform_created_at. A role created in 2017 and still open will carry that date.
  • Personio descriptions are often empty. Around 19% of Personio postings carry a description, because many companies leave that block blank in their feed. Nothing can be done about it from the outside.
  • Lever descriptions. About 92% of Lever postings have one. The rest have neither a plain-text nor an HTML description on the platform itself.
  • Four platforms expose no country code. Greenhouse, Lever, Ashby and Personio publish a location label only. The country is derived from it, which works for about 93% of postings in practice. countrySource always tells you which postings were derived.
  • Greenhouse does not expose remote or employment type. When the location says "Remote", the remote field is set to true and remoteSource reads derived_from_location, so you always know it was inferred and not reported.

Spend limit per run

Apify defaults to a maximum cost of $4.99 per run, which is roughly 415 postings at $0.012 each. A larger request stops cleanly with charge_limit_reached, a warning in the log, and the detail in the coverage report. Raise Maximum cost per run in the run options to go further.

Input

{
"companies": ["stripe.com", "https://jobs.lever.co/spotify"],
"platforms": ["greenhouse", "lever"],
"postedAfter": "2026-06-01",
"country": "NL",
"excludeCompanies": [],
"excludeKeywords": ["intern"],
"maxResults": 1000,
"maxRuntimeSecs": 900
}

A bare domain triggers automatic platform detection. A careers page URL is faster and always reliable, so prefer it when you have it.

Output

One posting per dataset item.

{
"jobId": "greenhouse:stripe:8172508",
"title": "Abuse Investigator",
"company": "Stripe",
"department": "Security Analytics",
"location": "Dublin",
"country": "IE",
"countries": ["IE"],
"countrySource": "derived_from_location",
"remote": null,
"remoteSource": "unavailable",
"employmentType": null,
"description": "<h2>Who we are</h2>...",
"applyUrl": "https://stripe.com/jobs/search?gh_jid=8172508",
"postedAt": "2026-09-03T17:32:53.000Z",
"postedAtSource": "platform_field",
"collectedAt": "2026-09-12T10:46:59.837Z",
"sourcePlatform": "greenhouse",
"sourceUrl": "https://boards-api.greenhouse.io/v1/boards/stripe/jobs?content=true",
"salary": null
}

A coverage report is written to the COVERAGE_REPORT key of the key-value store, listing every company, the platform it resolved to, how many postings were found, how many were delivered, and why any were dropped.

Keywords

greenhouse api, lever api, ashby api, workable api, recruitee api, personio xml, ats jobs, job board api, career site jobs, hiring signals, job postings feed, applicant tracking system, boards-api.greenhouse.io, jobs.lever.co, api.ashbyhq.com