Career Site Jobs Scraper: Greenhouse, Lever, Ashby & more avatar

Career Site Jobs Scraper: Greenhouse, Lever, Ashby & more

Pricing

Pay per event

Go to Apify Store
Career Site Jobs Scraper: Greenhouse, Lever, Ashby & more

Career Site Jobs Scraper: Greenhouse, Lever, Ashby & more

Extract every open job from company career pages. Auto-detects the ATS (Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters, Teamtailor, Breezy HR, BambooHR, Workday) and pulls clean, structured job postings via public JSON APIs. No browser, no proxies: fast and cheap.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Forja Walker

Forja Walker

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Share

Career Site Jobs Scraper

Extract every open job from company career pages in seconds. Paste the career-page URLs of the companies you care about and get clean, structured job postings: title, location, department, remote flag, employment type, posting date, salary (when published), full description and the direct apply link.

The Actor auto-detects the applicant tracking system (ATS) behind each career page and reads the jobs through the ATS's public JSON feed - no browser rendering, no proxies, no CAPTCHAs. That makes it fast (hundreds of jobs per second) and very cheap to run.

Supported ATS platforms

ATSExample URL
Greenhousehttps://boards.greenhouse.io/stripe, https://job-boards.greenhouse.io/acme
Leverhttps://jobs.lever.co/spotify
Ashbyhttps://jobs.ashbyhq.com/openai
Workablehttps://apply.workable.com/acme
Recruiteehttps://acme.recruitee.com
SmartRecruitershttps://careers.smartrecruiters.com/Acme
Teamtailorhttps://acme.teamtailor.com
Breezy HRhttps://acme.breezy.hr
BambooHRhttps://acme.bamboohr.com/careers
Workdayhttps://acme.wd5.myworkdayjobs.com/External

You can also paste a company's own careers page (e.g. https://company.com/careers); the Actor looks for an embedded ATS board and follows it.

Why use this instead of a generic job-board scraper?

  • Fresh: jobs come straight from the company's ATS, not from an aggregator that lags days behind.
  • Complete: every posting on the board, including the ones never syndicated to LinkedIn or Indeed.
  • Structured: consistent schema across all ATS vendors, so you can merge 500 companies into one table.
  • Cheap: pure API calls. A run over 100 companies typically finishes in under a minute.

Use cases

  • Recruiting & sourcing: monitor competitors' hiring, spot which teams are growing.
  • Sales & lead generation: companies hiring for a role are buying tools for that role. Trigger outreach when a target account opens a position.
  • Job boards & aggregators: build a niche job board (remote-only, a specific city, a specific stack) from the primary source.
  • Market research & investing: hiring velocity by company, department and location as a leading indicator.
  • Job seekers: track your dream companies and get new openings before anyone else.

Input

FieldTypeDescription
startUrlsarrayCareer-page URLs (see table above).
companiesarrayAdvanced: ats:slug entries like greenhouse:stripe, lever:spotify, workday:nvidia.wd5.
includeDescriptionbooleanInclude descriptionHtml / descriptionText (default true).
titleKeywordsarrayKeep only jobs whose title contains any of these keywords.
locationKeywordsarrayKeep only jobs whose location contains any of these keywords.
remoteOnlybooleanKeep only remote jobs.
maxJobsPerCompanyintegerCap per company (0 = unlimited).
maxJobsintegerCap for the whole run (0 = unlimited).
concurrencyintegerCompanies fetched in parallel (1-10).

Example:

{
"startUrls": [
{ "url": "https://boards.greenhouse.io/stripe" },
{ "url": "https://jobs.lever.co/spotify" },
{ "url": "https://jobs.ashbyhq.com/openai" }
],
"titleKeywords": ["engineer", "developer"],
"remoteOnly": true
}

Output

One dataset item per job:

{
"ats": "greenhouse",
"company": "stripe",
"id": "6123456",
"title": "Backend Engineer, Payments",
"url": "https://boards.greenhouse.io/stripe/jobs/6123456",
"location": "Remote, US",
"department": "Engineering",
"team": null,
"remote": true,
"employmentType": "Full-time",
"postedAt": "2026-10-10T14:02:11+00:00",
"updatedAt": "2026-10-15T09:30:00+00:00",
"salary": null,
"descriptionHtml": "<p>...</p>",
"descriptionText": "...",
"scrapedAt": "2026-10-17T07:00:00+00:00"
}

A STATS record in the key-value store summarises the run (sources processed, failures, jobs found/pushed).

Pricing

Pay-per-event: you are charged a small fee per job returned (job-scraped). Set Maximum cost per run to cap spending; the Actor stops cleanly when the cap is reached. Platform usage is minimal because no browser is involved.

Tips

  • Combine with Apify schedules to run daily and diff the dataset to detect new postings.
  • Use maxJobsPerCompany: 1 with includeDescription: false to cheaply check whether a company is hiring.
  • Need a platform that's not listed? Open an issue on the Actor page and it will be added.

Changelog

  • 1.0 - Initial release: Greenhouse, Lever, Ashby, Workable, Recruitee, SmartRecruiters, Teamtailor, Breezy HR, BambooHR, Workday.