ATS Career-Site Jobs (Greenhouse, Lever, Ashby) avatar

ATS Career-Site Jobs (Greenhouse, Lever, Ashby)

Pricing

$7.88 / 1,000 job extracteds

Go to Apify Store
ATS Career-Site Jobs (Greenhouse, Lever, Ashby)

ATS Career-Site Jobs (Greenhouse, Lever, Ashby)

Get open jobs from company career sites hosted on Greenhouse, Lever or Ashby as one normalized JSON schema: title, department, location, remote flag, posted date, apply URL. Uses the public job-board APIs. No login, no browser, no proxy.

Pricing

$7.88 / 1,000 job extracteds

Rating

0.0

(0)

Developer

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Company career-site slugs in, open jobs out, in one JSON schema no matter which ATS hosts the board.

Which jobs Actor should I use?

Use this one when you already know which companies you care about and they host their career site on Greenhouse, Lever or Ashby. It reads those boards' public job-board APIs and normalizes every posting into the same fields. It does not cover other ATS vendors (Workday, iCIMS, SmartRecruiters, etc.) or job aggregators. For keyword search across LinkedIn, use LinkedIn Jobs.

Inputcompanies[] (board slugs or board URLs), optional title/location/remote/date filters
Output per jobid, title, company, companySlug, sourceAts, department, team, location, remote, workplaceType, employmentType, postedAt, updatedAt, url, applyUrl, status
Pricing$0.00788 per job returned ($7.88 / 1,000). Failed boards are not billed.
AccessPublic job-board APIs (boards-api.greenhouse.io, api.lever.co, api.ashbyhq.com). No login, no browser, no proxy.
Call itREST skilled_glee~ats-career-site-jobs · MCP https://mcp.apify.com/?tools=skilled_glee/ats-career-site-jobs

Pipeline role (n8n / agents): Jobs → Discover + Fetch. Next step for hiring leads: pass company sites to Contact Details Extractor. Full catalog of steps: EchoEmpire Machine Foundry llms.txt.

Input

{
"companies": ["greenhouse:stripe", "https://jobs.lever.co/palantir", "ashby:ramp"],
"titleKeywords": ["engineer"],
"maxJobsPerCompany": 3
}
  • companies (required, 1–100): greenhouse:SLUG, lever:SLUG, ashby:SLUG, or a board URL (boards.greenhouse.io/SLUG, job-boards.greenhouse.io/SLUG, jobs.lever.co/SLUG, jobs.ashbyhq.com/SLUG). The slug is the company part of the board URL.
  • ats (default auto): used for bare slugs. auto tries Greenhouse, then Lever, then Ashby and uses the first board that exists. The same slug can belong to different companies on different systems, so prefix the slug when in doubt.
  • titleKeywords, locationKeywords (optional): keep jobs whose title / location contains any of the words (case-insensitive).
  • remoteOnly (default false), postedWithinDays (default 0 = off).
  • maxJobsPerCompany (1–2000, default 200): limit after filters.
  • includeDescription (default false): adds descriptionText (plain text).

Output

One dataset row per job. Rows from a real run (2026-10-29):

{"id": "8172503", "title": "Abuse Research Engineer", "company": "Stripe", "companySlug": "stripe", "sourceAts": "greenhouse", "department": "8611 Security Analytics", "team": null, "location": "Remote from the US", "remote": true, "workplaceType": null, "employmentType": null, "postedAt": "2026-09-09T14:52:09Z", "updatedAt": "2026-10-29T14:42:09Z", "url": "https://stripe.com/jobs/search?gh_jid=8172503", "applyUrl": "https://stripe.com/jobs/search?gh_jid=8172503", "input": "greenhouse:stripe", "status": "ok"}

Field notes:

  • postedAt: Greenhouse first_published, Lever createdAt, Ashby publishedAt, as UTC ISO 8601. updatedAt is only available on Greenhouse.
  • remote: true when the ATS marks the job remote (Ashby isRemote, Lever workplaceType: remote) or the location text contains "remote"; false only when Lever says on-site; otherwise null (unknown). It is not a guess.
  • team, workplaceType, employmentType come from Lever/Ashby; Greenhouse's public API does not expose them, so they are null there.
  • company is the company name from Greenhouse; for Lever and Ashby (whose APIs do not return a name) it is the slug.

A company that fails (unknown slug, not one of the three ATS, HTTP error) produces one row {"input": "...", "status": "error", "error": "..."} and is not billed. A run summary (per-company counts, jobs charged, whether a spending limit stopped the run) is saved as SUMMARY in the default key-value store.

Pricing (pay per event)

EventWhenPrice
job-extractedOnce per job row with status: "ok" saved to the dataset$0.00788

No start fee. Error rows are free. Example: 3 companies × 50 jobs = 150 × $0.00788 = $1.18. If you set a maximum charge per run, the Actor stops saving jobs when the limit is reached.

Limits

  • Greenhouse, Lever and Ashby public boards only; boards a company hides or keeps internal are not visible.
  • Only currently open postings (these APIs do not return closed jobs).
  • No salary/compensation fields.