Company Jobs Scraper - Greenhouse, Lever, Ashby & 7 more avatar

Company Jobs Scraper - Greenhouse, Lever, Ashby & 7 more

Pricing

from $1.30 / 1,000 results

Go to Apify Store
Company Jobs Scraper - Greenhouse, Lever, Ashby & 7 more

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

ZMEI Automations

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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:

ATSCareers-page URL patternStructured salary?
Greenhouseboards.greenhouse.io/{token}✅ on pay-transparency roles
Leverjobs.lever.co/{client}✅ where the employer posts it
Ashbyjobs.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
SmartRecruitersjobs.smartrecruiters.com/{Company}— (not in the public API)
Workableapply.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

  1. Hit Start (or Try for free).
  2. Keep the prefilled example companies, paste your own tokens into the relevant ATS lists, or tick Scan ALL boards to sweep everything built in.
  3. Optionally narrow the results with filters (keyword, location, employment type, remote, posted-after) and a Max total results cap.
  4. 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.

FieldWhat it does
Scan ALL boardsSweep 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 / BambooHROne 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.
KeywordKeep only jobs whose title or department contains this text.
LocationKeep only jobs whose location contains this text (e.g. London).
Employment typeKeep only jobs whose type contains this text (e.g. Full, Intern).
Posted afterKeep only jobs posted/updated on or after this date.
Remote onlyKeep only jobs that look remote.
With salary onlyKeep only jobs that have a structured salary (handy for comp analysis).
Only new jobsOutput only jobs not seen on previous runs. Turns the Actor into a monitoring tool.
Include full descriptionAdd a descriptionText field with the full job description (off by default; increases dataset size, not the per-result price).
Max jobs per companyCap per board (0 = no limit).
Max total resultsStop after this many total results (0 = no limit). Recommended when Scan ALL boards is on.
ConcurrencyHow 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

Company Jobs Scraper output — the Apify Console Output tab showing live jobs scraped across multiple ATS, with structured salary on the rows that expose it

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

FieldDescription
sourcegreenhouse/lever/ashby/recruitee/smartrecruiters/workable/personio/breezy/teamtailor/bamboohr
companyboard token (stable join key)
companyNamehuman-readable company name
titlejob title
locationlocation text
departmentdepartment / team
employmentTypefull-time, contract, intern… (where the platform exposes it)
remoteboolean
salaryraw salary text as shown on the board
salaryMin / salaryMaxstructured numbers (Greenhouse, Lever, Ashby, Recruitee, Breezy, where posted)
salaryCurrency / salaryIntervale.g. USD, year
urldirect link to the job
postedAtISO date (BambooHR listings don't include a date)
descriptionTextfull 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 payPrice
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 returnedApprox. 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 like unspun.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 onlyNewJobs and 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 salaryOnly with 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.