ATS Jobs API: Greenhouse, Lever & Ashby job boards
Pricing
from $3.00 / 1,000 job listing returneds
ATS Jobs API: Greenhouse, Lever & Ashby job boards
Normalized job listings from the official public job board APIs of Greenhouse, Lever and Ashby. No scraping, no proxies.
Pricing
from $3.00 / 1,000 job listing returneds
Rating
0.0
(0)
Developer
asaf meizner
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 days ago
Last modified
Categories
Security
Limited permissionsShare
Get public job listings from company boards in one normalized format, straight from the official public job board APIs of Greenhouse, Lever and Ashby. It uses public API endpoints without HTML scraping, proxies or login. Availability depends on each vendor and company board.
What you get
One dataset item per job: ats, company, companySlug, id, title, location, remote, department,
employmentType, postedAt, updatedAt, url, applyUrl, description (plain text) and, for Ashby boards that
publish it, compensation.
Input
| Field | Meaning |
|---|---|
companies | Board slugs or URLs: greenhouse:stripe, lever:palantir, ashby:ramp, https://jobs.lever.co/palantir. A bare slug (stripe) is tried on all three systems. |
keywords | Keep jobs whose title contains any of these words. |
locationContains | Keep jobs whose location text contains this string. |
remoteOnly | Keep only remote jobs. |
includeDescription | Include the full description (default true). |
maxJobsPerCompany | Cap per company (0 = unlimited). |
Defaults: no keyword or location filter, remoteOnly: false, includeDescription: true, and maxJobsPerCompany: 0 (unlimited). companies is required; the example boards shown in the input form are suggestions, not automatic company discovery.
Small first-run example (at most five returned jobs, $0.015 in job-listing events):
{"companies": ["greenhouse:stripe"],"includeDescription": false,"maxJobsPerCompany": 5}
Example output
One item from a verified cloud run (fields vary by vendor):
{"ats": "greenhouse","company": "Stripe","companySlug": "stripe","id": "8172508","title": "Abuse Investigator","location": "Dublin","remote": false,"department": "8611 Security Analytics","employmentType": null,"url": "https://stripe.com/jobs/search?gh_jid=8172508","applyUrl": "https://stripe.com/jobs/search?gh_jid=8172508"}
This example uses includeDescription: false. Dates and optional fields depend on the source. Export dataset results as JSON, CSV or Excel using Apify.
Use cases
- Monitor hiring at target companies (schedule the actor, compare runs).
- Build a niche job board or newsletter.
- Feed hiring signals into sales / market research.
Start small and interpret results
For a first run, use one explicit board such as greenhouse:stripe and set maxJobsPerCompany to 5. A bare slug is tried on all three systems; matching boards can belong to different companies. Explicit vendor prefixes avoid that ambiguity.
Keyword matching is case-insensitive and searches job titles only. A job needs to match any one keyword. locationContains searches the location text, and all enabled filters must pass. The cap is applied after filtering, separately to each matching board; it does not select the newest jobs.
remote follows the vendor's remote flag where supported, or a mention of “remote” in the location. It does not establish worldwide eligibility, time-zone coverage or permission to work from your country. Check the original job before applying.
Scheduled monitoring and repeat charges
Each run takes a fresh snapshot. It does not remember earlier results or return only new vacancies. For comparisons, identify a job with the combination of ats, companySlug and id, then compare your saved snapshots. Jobs returned again trigger the job-listing event again.
At $0.003 per returned job, 100 returned jobs cost $0.30 in job-listing events. Returning those same 100 jobs every day for 30 days costs $9 in those events, plus any other charges shown in the Store pricing panel. Start with a small cap before enabling a schedule.
Empty or incomplete results
Zero results can mean no matching jobs, an incorrect slug, an empty board or a source request that kept failing. Review the run log for skipped entries and missing-board warnings. A successful run can contain results from some boards while another board failed; an empty snapshot alone is not proof that a company stopped hiring.
Greenhouse's postedAt falls back to the source update time when a first-publication date is unavailable. Missing dates and other optional fields should be treated as unknown.
Pricing (pay per event)
The job-listing event is $0.003 per job returned. Filtered-out jobs and missing boards do not trigger that event. Apify may also charge actor-start and dataset-item events shown in the Store pricing panel; review the current pricing there before running.
Notes and limits
- Only public postings are read, via the endpoints the ATS vendors publish for job boards. Requests are paced (0.5 s) and retried on 429/5xx.
- A company must use one of the three systems and its board must be public. The slug is the part of the board URL after the host.
- Postings can contain recruiter names written by the employer; the actor does not look up personal data.