Greenhouse, Lever & Ashby Job Board API – Jobs Scraper
Pricing
$0.50 / 1,000 job founds
Greenhouse, Lever & Ashby Job Board API – Jobs Scraper
Every published job from any company's Greenhouse, Lever or Ashby job board via the official job board APIs (including the Lever Postings API): title, department, location, remote, salary, description, apply link and publish date. Filter by keyword, location, remote and posted-after date.
Pricing
$0.50 / 1,000 job founds
Rating
0.0
(0)
Developer
Giordano Horacio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
Share
Greenhouse, Lever & Ashby Job Board API – Jobs Scraper with Date Filter
Pull every published job from any company that runs its careers page on Greenhouse, Lever or Ashby, straight from the official job board APIs: the Greenhouse Job Board API, the Lever Postings API and the Ashby job board API. One request per company, no browser, no proxies, no login. Filter by keyword, location, remote and posted-after date and get clean JSON/CSV with title, department, location, workplace type, salary (when the company publishes it), full description and apply link.
Built for recruiters, sourcers, job aggregators, sales teams tracking hiring signals and labor-market researchers who need the same boards checked every day without failed runs.
Why this one
- Reliability first. The three ATS vendors publish these job-board APIs for exactly this purpose (Lever's docs state that published postings "may be scraped by third parties"). No HTML parsing that breaks when a careers page is redesigned. Each board is one JSON request with retries; an unknown slug produces an explanatory error row and the run continues with the other companies.
- Date filter that works.
postedAfteruses the ATS's own publish timestamp (Greenhousefirst_published, LevercreatedAt, AshbypublishedAt), so a daily schedule with "yesterday" returns only new openings. - One schema for three ATS. Same field names whether the job comes from Greenhouse, Lever or Ashby.
atstells you the source. - Salary when it exists. Ashby compensation ranges and Lever salary ranges are normalized into
salaryMin,salaryMax,salaryCurrency,salaryInterval. - Health-checked daily against three live boards, so breaks are caught before you notice.
Pricing
Pay per job returned, no subscription: $0.50 per 1,000 jobs (event job). Error rows, empty runs and run starts are never charged. Cap your spend with maxItems and the run's Maximum total charge. Apify's free plan ($5 monthly credit) covers about 10,000 jobs per month.
Input
| Field | Type | Default | Description |
|---|---|---|---|
companies | array | required | Board URLs (https://boards.greenhouse.io/stripe, https://jobs.lever.co/palantir, https://jobs.ashbyhq.com/linear) or ats:slug (greenhouse:stripe, lever:palantir, ashby:linear). The slug is the last part of the company's careers page URL. |
keyword | string | Case-insensitive substring of the title, e.g. engineer. | |
keywordInDescription | boolean | false | Also match the keyword in the description. |
location | string | Substring of any job location or country, e.g. London, United States, Remote. | |
remoteOnly | boolean | false | Keep only remote jobs. |
postedAfter | string | YYYY-MM-DD. Only jobs first published on or after this date. | |
includeHtml | boolean | false | Add descriptionHtml next to descriptionText. |
maxItems | integer | 1000 | Stop after this many jobs. |
minResults | integer | Monitoring only: fail the run if fewer jobs are returned. |
Daily hiring-signal monitor for a watchlist:
{"companies": ["greenhouse:stripe", "greenhouse:cloudflare", "lever:palantir", "ashby:ramp", "ashby:linear"],"postedAfter": "2026-10-25","maxItems": 5000}
Remote engineering roles only:
{"companies": ["https://boards.greenhouse.io/cloudflare", "https://jobs.lever.co/veeva"],"keyword": "engineer","remoteOnly": true}
Output
One row per job:
{"ats": "ashby","company": "ramp","companyName": null,"jobId": "d1183b00-6590-4fe4-a585-28d84e578fe3","title": "Software Engineer, Security","department": "Engineering","team": "Backend","location": "New York, NY (HQ)","locations": ["New York, NY (HQ)", "San Francisco, CA", "Remote (US)"],"country": "USA","workplaceType": "remote","employmentType": "FullTime","publishedAt": "2026-05-13T20:28:09.574+00:00","updatedAt": null,"url": "https://jobs.ashbyhq.com/ramp/d1183b00-6590-4fe4-a585-28d84e578fe3","applyUrl": "https://jobs.ashbyhq.com/ramp/d1183b00-6590-4fe4-a585-28d84e578fe3/application","salaryMin": 189000,"salaryMax": 330000,"salaryCurrency": "USD","salaryInterval": "1 YEAR","salarySummary": "$189K - $330K","descriptionText": "Ramp is a financial operations platform...","scrapedAt": "2026-10-26T13:42:19.902Z"}
workplaceType is remote, hybrid, onsite or null when the ATS does not say. updatedAt exists for Greenhouse only. companyName is filled when the ATS provides it (Greenhouse). Fields that an ATS does not expose are null, never invented.
A board that cannot be found produces one row like { "error": true, "errorType": "BOARD_NOT_FOUND", "message": "...", "company": "greenhouse:typo" } and is not charged. A run with no matching jobs produces one NO_RESULTS row.
Use it from code
curl -X POST "https://api.apify.com/v2/acts/opentenders~ats-jobs-scraper/run-sync-get-dataset-items?format=json" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"companies":["greenhouse:stripe","ashby:linear"],"keyword":"engineer","postedAfter":"2026-10-01"}'
Works with the Apify API, clients, MCP server, Make, Zapier, n8n and Google Sheets integrations.
Limitations
- Only companies on Greenhouse, Lever or Ashby. Workday, iCIMS, SmartRecruiters and company-built career sites are not covered.
- Lever and Ashby do not expose an "updated at" timestamp;
postedAfteruses first publication. - Greenhouse descriptions arrive as HTML; the plain-text version is derived from it. Ashby and Lever provide plain text natively.
- Ashby boards can be large (10+ MB); the default 512 MB memory handles them.
FAQ
How do I find a company's slug? Open its careers page. boards.greenhouse.io/<slug>, jobs.lever.co/<slug> or jobs.ashbyhq.com/<slug>. Paste the URL or ats:slug.
Can I monitor hundreds of companies? Yes, one request per board, four in parallel. 300 boards take a couple of minutes.
Does it include recruiter names or e-mails? No. Only the job posting data the company publishes.
Something broke? Open an issue with the run ID. The three APIs rarely change, and the actor fails loudly with the ATS name and the unexpected response instead of returning wrong data.