Company Jobs Scraper (Greenhouse, Lever, Ashby + more) avatar

Company Jobs Scraper (Greenhouse, Lever, Ashby + more)

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Company Jobs Scraper (Greenhouse, Lever, Ashby + more)

Company Jobs Scraper (Greenhouse, Lever, Ashby + more)

Open jobs from company career boards on Greenhouse, Lever, Ashby, SmartRecruiters and Workable in one run, read through each vendor's public job-board API. Paste board URLs; the ATS is detected automatically. Salary where published, filters, bounded retries; failed companies are never charged.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

signal clear

signal clear

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Company Jobs Scraper (Greenhouse, Lever, Ashby, SmartRecruiters, Workable)

Collect the open jobs of any company whose careers page runs on Greenhouse, Lever, Ashby, SmartRecruiters or Workable, in one run and one output format. Paste the companies' board URLs; the vendor is detected automatically.

The Actor reads each vendor's own public job-board API: the unauthenticated JSON endpoints the vendors publish so companies can show their openings on their own sites. No HTML scraping, no browser, no login, so runs are fast and cheap.

Why this one

  • One input list across five ATS vendors. Mix Greenhouse, Lever, Ashby, SmartRecruiters and Workable boards in the same run and get one schema back.
  • Documented public endpoints, not page scraping, so it does not break when a careers page is redesigned.
  • Salary where the employer publishes it: Ashby compensation, Greenhouse pay ranges (optional), Lever and SmartRecruiters salary fields when present.
  • Bounded runs. Every request has a timeout, every company a fixed attempt budget.
  • Failed companies are never charged. A company's jobs are saved only after the whole company succeeded. A company that fails is listed in the FAILED_COMPANIES record and contributes nothing to the dataset.

Supported boards and URL shapes

VendorBoard URLs acceptedAPI used
Greenhouseboards.greenhouse.io/<token>, job-boards.greenhouse.io/<token>, boards.greenhouse.io/embed/job_board?for=<token>boards-api.greenhouse.io/v1/boards/<token>/jobs?content=true
Leverjobs.lever.co/<company>, jobs.eu.lever.co/<company>api.lever.co/v0/postings/<company> (EU: api.eu.lever.co)
Ashbyjobs.ashbyhq.com/<org>api.ashbyhq.com/posting-api/job-board/<org>?includeCompensation=true
SmartRecruiterscareers.smartrecruiters.com/<company>, jobs.smartrecruiters.com/<company>api.smartrecruiters.com/v1/companies/<company>/postings
Workableapply.workable.com/<account>, <account>.workable.comapply.workable.com/api/v3/accounts/<account>/jobs

A link to a single job on any of these boards also works; the company part is used. You can also write ats:slug (for example lever:spotify) or an object {"ats": "greenhouse", "slug": "airbnb"}.

How to find the slug: open the company's careers page and click any job. If the job link goes to one of the hosts above, the first path segment after the host is the slug. Companies that embed the board in their own domain usually still link to the vendor's host on the job or apply page.

Input

{
"companies": [
"https://boards.greenhouse.io/airbnb",
"https://jobs.lever.co/spotify",
"https://jobs.ashbyhq.com/ramp",
"https://careers.smartrecruiters.com/BoschGroup",
{ "ats": "workable", "slug": "huggingface" }
],
"keywords": ["engineer", "developer"],
"location": "",
"remoteOnly": false,
"department": "",
"postedSince": "30 days",
"maxJobsPerCompany": 200,
"includeDescription": "text"
}
FieldMeaning
companiesBoard URLs, ats:slug strings or {ats, slug} objects. Required.
keywordsKeep jobs whose title contains any of these (case-insensitive).
locationKeep jobs where any location contains this text.
remoteOnlyKeep remote jobs only (see "Remote" below).
departmentKeep jobs whose department or team contains this text.
postedSinceA date (2026-10-01) or an age (7 days, 24 hours, 2 weeks). Jobs without a date are dropped when set.
maxJobsPerCompanyMatching jobs to keep per company (default 200).
maxItemsStop the run after this many jobs in total.
includeDescriptiontext (default), html, both or none.
includeGreenhouseSalaryFetch Greenhouse pay ranges (one extra request per Greenhouse job).
maxConcurrencyCompanies in parallel (default 5).
maxAttemptsAttempts per company, 1 to 5 (default 3).
requestTimeoutSecsPer-request timeout (default 30).
proxyConfigurationDefaults to the Apify datacenter proxy.

Output

One dataset item per job:

{
"ats": "ashby",
"company": "example-co",
"companySlug": "example-co",
"jobId": "6c1c3192-2508-4805-9dbb-08a4f581b44d",
"title": "Sales Development Representative",
"departments": ["Sales"],
"team": "SDR",
"location": "New York, NY (HQ)",
"locations": ["New York, NY (HQ)", "San Francisco, CA", "Washington, D.C."],
"remote": true,
"workplaceType": "hybrid",
"employmentType": "Full-time",
"salary": { "min": 110000, "max": 130000, "currency": "USD", "period": "year" },
"postedAt": "2026-10-27T20:09:06Z",
"updatedAt": null,
"applyUrl": "https://jobs.ashbyhq.com/example-co/6c1c3192-2508-4805-9dbb-08a4f581b44d/application",
"jobUrl": "https://jobs.ashbyhq.com/example-co/6c1c3192-2508-4805-9dbb-08a4f581b44d",
"descriptionText": "ABOUT US
We are building the smart infrastructure for finance teams...",
"input": "https://jobs.ashbyhq.com/example-co",
"scrapedAt": "2026-10-28T17:38:27Z"
}

descriptionHtml is added when includeDescription is html or both. All timestamps are ISO 8601 in UTC. Fields a vendor does not publish are null:

FieldGreenhouseLeverAshbySmartRecruitersWorkable
company (display name)yesslugslugyesyes
departments / teamdepartmentsbothbothdepartment or functiondepartment
remotefrom location textworkplace typeflagflagflag
employmentTypenocommitmentyesyesyes
salaryoptional, pay rangeswhen the employer sets ityeswhen presentno
postedAtfirst publishedcreatedpublishedreleasedpublished
updatedAtyesnowhen presentnono

Remote: Greenhouse has no remote flag, so a Greenhouse job counts as remote when its location or an office name contains "remote". The other vendors' own flags are used.

Order: Greenhouse and Ashby jobs are returned newest first; the others in board order.

Run records

  • FAILED_COMPANIES (key-value store): one entry per company that failed, with company, ats, input, error and attempts. These companies are not charged.
  • The run exits with an error only when every company failed. Otherwise it succeeds with a status like "N jobs from M companies saved, K companies failed (not charged)".

Limits and behaviour

  • An unknown board (HTTP 404) fails at once, without retries.
  • SmartRecruiters answers an unknown company id with an empty list, not a 404, so a SmartRecruiters company with no postings is reported in FAILED_COMPANIES as "wrong id or no open jobs" (and not charged).
  • Rate limits, timeouts and server errors are retried with backoff on a fresh proxy session, up to maxAttempts; progress is kept between attempts. None of the five APIs sent rate-limit headers during testing; a Retry-After header is honoured if one appears.
  • SmartRecruiters and Workable need one extra request per job for the description. Set includeDescription to none for large boards when you only need titles and links.
  • At most 10,000 SmartRecruiters postings and 100 Workable result pages are scanned per company.
  • Typical item size: about 7 to 17 KB with the plain-text description, about 0.7 KB with includeDescription: none.

Pricing

Pay per result: you are charged only for jobs saved to the dataset. Companies that fail are not charged, and the run stops at maxItems or at your maximum charge.

The Actor reads public job postings through the vendors' public job-board APIs, which the vendors provide so that job listings can be displayed and distributed. It does not log in or bypass any access control. Postings may contain the names of recruiters or hiring managers only where the employer chose to publish them; the Actor does not add or look up personal data. You are responsible for how you use the data, including any terms of the individual vendors and employers and the data protection law that applies to you.