Company Jobs Scraper - Greenhouse, Lever, Ashby & 7 more
Pricing
from $1.30 / 1,000 results
Company Jobs Scraper - Greenhouse, Lever, Ashby & 7 more
Pull every live job from the exact companies you choose, across 10 ATS (Greenhouse, Lever, Ashby, Workable, Personio & more), normalized into one dataset with structured salary. Export to JSON, CSV, or Excel, schedule runs, monitor new postings.
Pricing
from $1.30 / 1,000 results
Rating
0.0
(0)
Developer
ZMEI Automations
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Give it a list of companies and it pulls every job they currently have open, straight from the hiring software each company runs on. It reads ten applicant tracking systems (ATS): Greenhouse, Lever, Ashby, Recruitee, SmartRecruiters, Workable, Personio, Teamtailor, BambooHR, and Breezy, and returns them as one clean dataset.
Everything comes from each platform's public job-board API. No API keys or logins, and nothing that breaks when a careers page gets restyled. Around 2,750 company boards are built in and kept current, or you can point a run at your own list.
What does Company Jobs Scraper do?
It calls each platform's job-board API, flattens all ten formats into a single schema, and writes rows you can download as JSON, CSV, Excel, or HTML. The difference from a keyword job-search API is that this one is company-first: you give it companies, not search terms, and get back all of their open roles, fetched live the moment the run starts. Where a platform publishes pay, it captures structured salary too (min, max, currency): Greenhouse pay-transparency roles, plus Lever, Ashby, Recruitee, and Breezy.
Why use Company Jobs Scraper?
Most job APIs are keyword search engines: you type "data scientist, Berlin" and get a firehose of everything that matches. This is the opposite. You pick the companies, and you get every role they have open right now. That makes it useful for tracking specific employers, sourcing candidates, or watching who your target accounts are hiring.
Because the data is fetched at run time, there's no stale database sitting behind it and no model guessing at fields. You get the real posting or you get nothing. Salary, where the employer actually publishes it, arrives as numbers you can sort and filter on rather than a string you have to parse.
Switch on "Only new jobs", put it on a schedule, and it becomes a monitor: each run returns only what's been posted since the last one. People run it for candidate sourcing, competitor hiring intelligence, building job boards, and labor-market research.
Which ATS and job boards does it scrape?
One run covers all ten. It works as a Greenhouse scraper, a Lever scraper, an Ashby scraper, a Workable scraper, and six more. To target a company, copy its token out of the careers-page URL:
| ATS | Careers-page URL pattern | Structured salary? |
|---|---|---|
| Greenhouse | boards.greenhouse.io/{token} | ✅ on pay-transparency roles |
| Lever | jobs.lever.co/{client} | ✅ where the employer posts it |
| Ashby | jobs.ashbyhq.com/{client} | ✅ where the employer posts it |
| Recruitee | {company}.recruitee.com | ✅ where the employer posts it |
| Breezy | {company}.breezy.hr | ✅ where the employer posts it |
| SmartRecruiters | jobs.smartrecruiters.com/{Company} | — (not in the public API) |
| Workable | apply.workable.com/{account} | — (not in the public API) |
| Personio | {company}.jobs.personio.com | — (not in the public feed) |
| Teamtailor | {company}.teamtailor.com | — (not in the public feed) |
| BambooHR | {company}.bamboohr.com | — (no salary or posting date) |
How to use Company Jobs Scraper
- Hit Start (or Try for free).
- Keep the prefilled example companies, paste your own tokens into the relevant ATS lists, or tick Scan ALL boards to sweep everything built in.
- Optionally narrow the results with filters (keyword, location, employment type, remote, posted-after) and a Max total results cap.
- Run it, then export the dataset as JSON, CSV, or Excel from the Output tab.
Input
The input form is grouped into sections: Companies & boards, Filters, Output & limits, and Advanced.
| Field | What it does |
|---|---|
| Scan ALL boards | Sweep all ~2,750 built-in boards (the whole market, not a list). Can return 100,000+ jobs and is not capped — scope it with filters or Max total results. |
| Greenhouse / Lever / Ashby / Recruitee / SmartRecruiters / Workable / Personio / Breezy / Teamtailor / BambooHR | One list per ATS. Paste the company tokens you want (see Find a board token below). Fill any list to scope the run to exactly those companies. |
| Keyword | Keep only jobs whose title or department contains this text. |
| Location | Keep only jobs whose location contains this text (e.g. London). |
| Employment type | Keep only jobs whose type contains this text (e.g. Full, Intern). |
| Posted after | Keep only jobs posted/updated on or after this date. |
| Remote only | Keep only jobs that look remote. |
| With salary only | Keep only jobs that have a structured salary (handy for comp analysis). |
| Only new jobs | Output only jobs not seen on previous runs. Turns the Actor into a monitoring tool. |
| Include full description | Add a descriptionText field with the full job description (off by default; increases dataset size, not the per-result price). |
| Max jobs per company | Cap per board (0 = no limit). |
| Max total results | Stop after this many total results (0 = no limit). Recommended when Scan ALL boards is on. |
| Concurrency | How many boards to fetch in parallel (default 12). |
Fill any board list and the run is scoped to exactly those boards. Leave them all empty for a small curated sample, or turn on Scan ALL boards for the whole market.
Output

One row per job, normalized across all ten platforms. Here's a row with structured salary (Ashby) and one without (Personio, which doesn't expose salary in its public feed):
[{"source": "ashby","company": "ramp","companyName": "Ramp","title": "Director, Performance Marketing","location": "New York, NY (HQ)","department": "Marketing","employmentType": "FullTime","remote": false,"salary": "$191K – $291K • Offers Equity","salaryMin": 191000,"salaryMax": 291000,"salaryCurrency": "USD","salaryInterval": "year","url": "https://jobs.ashbyhq.com/ramp/…","postedAt": "2026-06-20T12:00:00.000Z"},{"source": "personio","company": "k15t","companyName": "K15t","title": "Senior Backend Engineer (m/f/d)","location": "Stuttgart, Germany","department": "Engineering","employmentType": "Full-time / Permanent","remote": false,"salary": "","salaryMin": null,"salaryMax": null,"salaryCurrency": "","salaryInterval": "","url": "https://k15t.jobs.personio.com/job/…","postedAt": "2026-06-18T09:30:00.000Z"}]
Export it as JSON, CSV, Excel, or HTML.
Every result is a complete row
You don't pick fields one at a time, because there's no reason to. One fetch returns the whole record (company, title, location, salary, dates, links), and you're billed per result, not per field. A row where you only read one column costs exactly what a row where you read all of them costs. The only field that's off by default is the full job description, and that's not a pricing thing (every row is the same price); it just makes the dataset much heavier, so it sits behind a toggle (includeDescription).
Data fields
| Field | Description |
|---|---|
| source | greenhouse/lever/ashby/recruitee/smartrecruiters/workable/personio/breezy/teamtailor/bamboohr |
| company | board token (stable join key) |
| companyName | human-readable company name |
| title | job title |
| location | location text |
| department | department / team |
| employmentType | full-time, contract, intern… (where the platform exposes it) |
| remote | boolean |
| salary | raw salary text as shown on the board |
| salaryMin / salaryMax | structured numbers (Greenhouse, Lever, Ashby, Recruitee, Breezy, where posted) |
| salaryCurrency / salaryInterval | e.g. USD, year |
| url | direct link to the job |
| postedAt | ISO date (BambooHR listings don't include a date) |
| descriptionText | full job description (only with includeDescription) |
How much does it cost?
You pay per result: one flat price per job returned, never per field. Apify adds a tiny start fee of about $0.00005 per run, which you can ignore. Billing goes through Apify, so there's nothing to wire up.
| What you pay | Price |
|---|---|
| To start a run | ~$0.00005 (Apify default, negligible) |
| Per job returned | $0.0013 = $1.30 per 1,000 results |
What that works out to:
| Jobs returned | Approx. total |
|---|---|
| 100 | ~$0.13 |
| 1,000 | ~$1.30 |
| 10,000 | ~$13.00 |
How big is a run? A single company is usually tens to a few hundred jobs. The curated sample (an empty run) is a few thousand. Scan ALL boards sweeps the whole market and can pull 100,000+ jobs — it's not capped, so set Max total results (or a max cost-per-run in Apify) if you want to bound the spend.
You only pay for the rows you keep, so the filters, maxItems, and scoping to specific boards are your cost controls.
Tips & advanced options
- Finding a board token. Open a company's careers page and take the token out of the URL:
boards.greenhouse.io/{token},jobs.lever.co/{client},jobs.ashbyhq.com/{client},{company}.recruitee.com,jobs.smartrecruiters.com/{Company},apply.workable.com/{account},{company}.jobs.personio.com,{company}.breezy.hr,{company}.teamtailor.com, or{company}.bamboohr.com. SmartRecruiters IDs are case-sensitive, and Teamtailor tokens sometimes carry a region part likeunspun.na. - Salary coverage. Structured salary comes from Greenhouse (pay-transparency roles), Lever, Ashby, Recruitee, and Breezy. The other five (SmartRecruiters, Workable, Personio, Teamtailor, BambooHR) don't expose pay in their public APIs, so those rows leave the salary fields empty; they're there for coverage. BambooHR listings also don't carry a posting date.
- Monitoring. Turn on
onlyNewJobsand schedule the Actor. Each run returns only newly posted jobs, so you can watch your target companies without paying again for jobs you've already seen. - Compensation analysis. Combine
salaryOnlywith the Salary view on the Output tab for a clean comp table. - Freshness. The built-in board set is refreshed regularly, so dead boards drop off and new ones get added.
FAQ, disclaimers & support
- Is this legal? The Actor only reads each platform's official, public job-board API, the same data shown on a company's public careers page. It doesn't log in, bypass protections, or collect personal data. You're responsible for following the platforms' terms and applicable law in how you use the data.
- Not affiliated with Greenhouse, Lever, Ashby, Recruitee, SmartRecruiters, Workable, Personio, Teamtailor, BambooHR, or Breezy.
- Coverage. This is the broadest multi-ATS coverage we can verify, not every company on earth. None of these platforms publish a master directory, so the board set is discovered, verified, and refreshed over time.
- Missing a company, or hit a bug? Use the Issues tab. Requests for specific boards are welcome.