ATS Jobs Scraper - Greenhouse, Lever, Ashby
Pricing
from $3.00 / 1,000 job postings
ATS Jobs Scraper - Greenhouse, Lever, Ashby
Job postings from Greenhouse, Lever and Ashby company boards in one format, with filters and a built-in board directory.
Pricing
from $3.00 / 1,000 job postings
Rating
0.0
(0)
Developer
TaeSung Lee
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
Get job postings from company career pages built on Greenhouse, Lever and Ashby, in one clean format. The Actor reads the public job-board JSON APIs these platforms provide, so it needs no browser, no proxy and no login.
Use it to:
- watch the hiring of specific companies (sales signals, competitor research, recruiting),
- search ~3,500 company boards at once for a job title, location or remote work,
- feed a job site, spreadsheet, CRM or AI agent with fresh postings every day.
What you get
- One output format for all three platforms: title, location, remote flag, department, team, employment type, salary (when the company publishes it), posting date, job URL, apply URL, and the full description as HTML and plain text.
- Filters: title keywords (include and exclude), location keywords, remote only, posted within the last N days.
- Company list mode: paste career page URLs or
greenhouse:stripe-style values. - Directory mode: leave
companiesempty, set at least one filter, and the Actor scans a built-in directory of about 3,500 Greenhouse and Ashby boards. - Run summary: the
RUN_SUMMARYkey in the key-value store lists how many boards were scanned, how many failed and why the run stopped.
How to use it
1. Jobs from specific companies
{"companies": ["https://job-boards.greenhouse.io/stripe","lever:spotify","ashby:ramp"],"titleKeywords": ["engineer"],"locationKeywords": ["New York", "Remote"],"maxItems": 200}
Accepted company formats: greenhouse:<slug>, lever:<slug>, ashby:<slug>, or a career page URL such as https://job-boards.greenhouse.io/stripe, https://boards.greenhouse.io/stripe, https://jobs.lever.co/spotify, https://jobs.ashbyhq.com/ramp. The slug is the last part of the career page address.
2. Search the built-in directory
{"titleKeywords": ["data engineer", "machine learning"],"remoteOnly": true,"maxItems": 500}
With no companies, the Actor scans every board in the directory (Greenhouse and Ashby) and keeps the postings that match your filters. A full scan takes a few minutes.
3. Daily new postings
Create an Apify Schedule that runs once a day with postedWithinDays: 1, and connect the dataset to a webhook, Zapier, Make, n8n or Google Sheets.
{"companies": ["greenhouse:stripe", "ashby:ramp"],"postedWithinDays": 1}
Input
| Field | Type | Default | Description |
|---|---|---|---|
companies | string[] | [] | Career page URLs or ats:slug values. Empty = search the built-in directory (needs at least one filter). |
titleKeywords | string[] | [] | Keep jobs whose title contains any of these words (case-insensitive, partial match: engineer also matches Engineering). |
excludeTitleKeywords | string[] | [] | Drop jobs whose title contains any of these words. |
locationKeywords | string[] | [] | Keep jobs whose location (or any additional location) contains any of these words. |
remoteOnly | boolean | false | Keep only jobs marked or labelled as remote. |
postedWithinDays | integer | - | Keep only jobs posted in the last N days. Jobs without a posting date are dropped. |
includeDescription | boolean | true | Include the description. Turn off for smaller, faster runs. |
maxItems | integer | 100 | Maximum number of jobs saved in the run (1 to 50,000). |
At least one of companies or a filter is required.
Output
Each job is one dataset item. Missing values are null. A shortened example (see sample-output.json for full items):
{"id": "95f450a1-0d38-4d58-9aac-9d7e655adc36","ats": "ashby","companySlug": "ramp","companyName": null,"title": "Security Engineer, Privacy","location": "New York, NY (HQ)","allLocations": ["New York, NY (HQ)", "San Francisco, CA", "Remote (US)"],"workplaceType": "Hybrid","isRemote": true,"department": "Engineering","team": "Backend","employmentType": "FullTime","salaryText": "$184.8K – $374.9K • Offers Equity","salaryMin": 184800,"salaryMax": 374900,"salaryCurrency": "USD","salaryInterval": "1 YEAR","postedAt": "2026-01-20T21:47:19.654+00:00","updatedAt": null,"jobUrl": "https://jobs.ashbyhq.com/ramp/95f450a1-0d38-4d58-9aac-9d7e655adc36","applyUrl": "https://jobs.ashbyhq.com/ramp/95f450a1-0d38-4d58-9aac-9d7e655adc36/application","descriptionHtml": "<h2>About Ramp</h2>...","descriptionText": "About Ramp\n...","scrapedAt": "2026-10-30T20:02:12.252Z"}
Field notes
- Values are kept as the platform returns them (titles, locations, dates,
employmentType,workplaceType). isRemoteistruewhen the platform marks the job as remote, or when the location text contains the word "remote". Leveronsiteandhybridjobs arefalse. In every other case it isnull, which means "unknown", not "on-site". AshbyHybridjobs can betruewhen the platform flags them as remote-friendly.- For Greenhouse, the location filter and
isRemoteuse the job's main location only. - Salary fields are filled only when the company publishes a salary on the posting (Ashby). Greenhouse and Lever do not expose structured salary, so they are
null. If an Ashby company chose not to display compensation, all salary fields arenull. salaryIntervalis the platform's own value, e.g.1 YEARor1 HOUR.companyNameis only provided by Greenhouse; usecompanySlugfor Lever and Ashby.- Lever descriptions include the "lists" and "additional" sections, not just the intro text.
includeDescription: falseleaves both description fieldsnull. For Greenhouse it also leavesdepartmentandallLocationsempty.- Ashby postings that the company has set to unlisted are skipped.
Pricing
This Actor uses pay-per-event pricing: a small charge for every job saved to the dataset, plus a one-time charge when a directory search starts. Company-list runs have no directory charge. See the pricing section on this page for the current amounts. The directory search charge is taken once, as soon as the first board has been read successfully, so a run that is blocked or cannot reach the job boards is not charged for the search; it is not refunded if the run later stops early. If you set a maximum cost per run, the Actor stops saving jobs when it is reached and finishes normally.
Limits and tips
- Only Greenhouse, Lever and Ashby are supported.
- The directory contains Greenhouse and Ashby boards only (about 3,500). It is a fixed list that is refreshed with new releases of the Actor; a company that started using these platforms recently may be missing. Lever companies must be given in
companies. - Boards are read in a fixed order and the first boards to finish fill
maxItems. With a smallmaxItemsyou will always see the same companies first. RaisemaxItemsto get all matching jobs. - Lever requests are sent one per second, so large Lever lists take longer.
- If a company does not exist, it is reported in the run log and the
RUN_SUMMARY, and the run continues. The run fails only when every board fails. - This Actor reads public job postings only. It does not log in, submit applications or collect candidate data. Job descriptions may mention names or contact details that the company chose to publish; handle them according to the rules that apply to you.
FAQ
Is it legal to scrape job postings from Greenhouse, Lever and Ashby?
The Actor reads only the job postings that companies publish through the public job-board APIs of these platforms, without logging in:
- Greenhouse documents its Job Board API
GETendpoints as public data that needs no authentication. - Lever's postings API documentation states that these jobs may be scraped by third parties. The Actor sends Lever requests one per second, as Lever's robots.txt asks.
- Ashby documents its public job posting API for showing jobs on a company's own career page and does not explicitly mention third-party use.
The Actor does not extract recruiter or candidate contact details as separate fields. Job descriptions are the companies' own text and may mention people; you are responsible for using the data in line with the platforms' and companies' terms and the laws that apply to you, such as data protection rules. This is not legal advice. This Actor is independent and is not affiliated with or endorsed by Greenhouse, Lever or Ashby.
How do I find a company's slug?
Open the company's career page. The slug is the last part of its address: https://jobs.lever.co/spotify is lever:spotify, https://jobs.ashbyhq.com/ramp is ashby:ramp. You can also paste the career page URL itself into companies.
Can I get only new postings every day?
Yes. Schedule the Actor once a day with postedWithinDays: 1 (see Daily new postings). Jobs without a posting date are dropped by this filter.
Support
Open an issue on the Actor page for missing fields or a company that does not return jobs.