Job Scraper by Company — Greenhouse, Lever, Ashby ATS + Salary avatar

Job Scraper by Company — Greenhouse, Lever, Ashby ATS + Salary

Pricing

from $4.00 / 1,000 job scrapeds

Go to Apify Store
Job Scraper by Company — Greenhouse, Lever, Ashby ATS + Salary

Job Scraper by Company — Greenhouse, Lever, Ashby ATS + Salary

Every open role straight from a company's own ATS. Give it company domains — it finds the board itself. One schema across Greenhouse, Lever and Ashby: title, location, remote flag, department, employment type and published salary. No proxies, no anti-bot.

Pricing

from $4.00 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

Daniele Giovane

Daniele Giovane

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Job Scraper by Company — Greenhouse, Lever, Ashby

Give it a list of companies. Get back every open role they are advertising, in one schema, with salary where the employer published it.

{ "companies": ["stripe.com", "ramp.com", "vercel.com"] }

That is the whole input. You do not have to know which applicant tracking system each company uses, or what its board is called — which is the part that makes every other tool in this category unusable on a real list of companies.

Why this does not break

Most job data is scraped from job boards, which is a permanent fight against sites that do not want to be read: proxies, rotating fingerprints, and a product that quietly starts returning nothing the week the target changes its defences.

This reads the source instead — the endpoint the employer's own ATS publishes so that their careers page works. An employer pays Greenhouse precisely so that their openings are easy to fetch. There is no anti-bot to get past, no login, no proxy, and no incentive for any of that to appear.

What you get, per role

Identitycompany, company_domain, ATS, board, stable job_id, title, URL, apply URL
Classificationdepartment, team, employment_type normalised to full_time / part_time / contract / internship / temporary
Placethe board's original text and the individual places split out, country, is_remote, workplace_type (remote / hybrid / on_site)
Paysalary_min, salary_max, currency, period, and salary_source so you know whether the figure is a field the employer filled in or something read out of prose
Timeposted_at, updated_at
Textfull description, on request

job_id is the ATS's own identifier and is stable between runs, so it is the right key for an incremental sync.

One schema, ten dialects

Every system says the same things differently, and the differences are exactly where a job dataset goes wrong:

  • Lever publishes dates as epoch milliseconds and everyone else uses ISO 8601. Left alone, one column is sometimes a number and sometimes a date, and you cannot filter on it.
  • Ashby puts equity and salary in the same list. Read the first element instead of the salary one and you publish an "equity percentage" as a wage.
  • Greenhouse serves descriptions as HTML that has itself been HTML-escaped. Strip the tags before decoding and you get a description full of visible markup.

All three are handled, and all three are pinned by tests against captured payloads so they stay handled.

Filters

title_keywords, locations, departments, remote_only, with_salary_only. Filtered-out roles are not charged — you pay for rows you receive.

remote_only keeps only roles the board actually marked remote. A role whose remoteness the employer never stated is excluded rather than guessed at: charging you for a maybe is how a filter becomes worthless.

Pricing

EventPrice
Job scraped$0.004 per role delivered
Actor start$0.005 per run, charged by the platform

Nothing is charged for a board that failed, a company whose board could not be found, or a row your own filters removed. Those are our costs.

A run over 50 companies pulling 20 roles each is 1,000 roles — $4.00.

Two things worth knowing before you run it

Descriptions are off by default. They make the payload about thirteen times larger: measured on a real 564-role board, 0.3 MB without them and 4.0 MB with. Turn include_description on only when you need the text.

max_jobs is shared fairly between boards. Ask for 100 roles across 10 companies and you get roughly 10 from each, not 100 from whichever board answered first. A board with three openings hands its unused share to the others.

Which systems

Greenhouse, Lever and Ashby today — the three that between them cover most startup and scale-up hiring, and the three whose public endpoints are stable enough to promise. Ashby and Lever publish structured salary; Greenhouse does not publish it at all, so with_salary_only removes every Greenhouse role.

Workday, SmartRecruiters, Personio, Teamtailor, Recruitee, Workable and BambooHR all expose usable public endpoints and are next. If you need one of them, say so in an issue and it moves up.

Limits

  • 500 companies and 500 boards per run; 50,000 roles per run.
  • Roles are what the board publishes. A company that lists nothing publishes nothing, and no amount of scraping invents a job.
  • This returns job postings, which are company data, not personal data.

The data is fetched from endpoints each ATS vendor publishes without authentication for the purpose of distributing their customers' job adverts. No login is used, no access control is circumvented, and no personal data is collected or resold.