Career Site Jobs Scraper: Greenhouse, Lever & Ashby avatar

Career Site Jobs Scraper: Greenhouse, Lever & Ashby

Pricing

from $0.90 / 1,000 job results

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

Career Site Jobs Scraper: Greenhouse, Lever & Ashby

Search about 180,000 open jobs from 5,600 company career sites on Greenhouse, Ashby and Recruitee in one run, plus live Lever and Workable boards for companies you list. Fuzzy title match, salary, seniority and remote filters. $0.90 per 1,000 jobs; daily-feed repeats and closed jobs are free.

Pricing

from $0.90 / 1,000 job results

Rating

0.0

(0)

Developer

Plainsource

Plainsource

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Categories

Share

Search open jobs straight from company career sites hosted on Greenhouse, Lever, Ashby, Workable and Recruitee. Results come from each platform's public job-board API, the same feed the company's own careers page uses. That means no login, no proxies, and no third-party job board in the middle.

It's built for recruiters and sourcers tracking who is hiring, job-board and newsletter builders who need a clean daily feed, and anyone who wants a list of open roles at specific companies without visiting each careers page.

What you get

  • Two ways to search
    • All companies: leave Companies empty to search every board in the index (about 5,600 company boards on Greenhouse, Ashby and Recruitee, roughly 186,000 open jobs, as of October 2026).
    • Your list: paste career-site URLs or board ids, and those boards are fetched live during the run. This is the only way to search Lever and Workable boards (see Limits).
  • Title search that forgives word order. "senior data engineer" matches "Data Engineer, Senior" and "Sr. Data Engineer". Turn on exact matching if you want literal phrases.
  • Location filters by city or region text, remote, or two-letter country codes.
  • Seniority (intern, entry, mid, senior, lead, manager, director, executive) worked out from the job title.
  • Salary when the employer publishes it. Ashby and Lever often do; Greenhouse usually doesn't.
  • Duplicate merging. A role posted once per city becomes one row with every location listed.
  • Daily feed mode. Only new or changed jobs returns just what changed since your last run. You aren't charged again for jobs you already received, and closed jobs can be reported for free.

Ready-made searches

Copy one into the JSON input tab and adjust.

Remote data and analytics engineering jobs posted this week

{ "keywords": ["data engineer", "analytics engineer"], "workplaceTypes": ["remote"], "postedWithinDays": 7, "maxItems": 200 }

Jobs in Canada with published salaries

{ "keywords": ["software engineer", "product manager"], "locations": ["CA"], "hasSalary": true, "maxItems": 200 }

Daily feed of new roles at a fixed list of companies (schedule it once a day; repeat jobs are not charged)

{ "companies": ["greenhouse:airbnb", "lever:palantir", "ashby:ramp", "workable:huggingface"], "onlyNew": true, "reportClosed": true, "stateKey": "my-companies" }

Entry-level and intern roles only

{ "keywords": ["engineer", "analyst", "designer"], "seniorityLevels": ["intern", "entry"], "postedWithinDays": 14, "maxItems": 300 }

US machine learning jobs whose description mentions visa sponsorship

{ "keywords": ["machine learning engineer"], "locations": ["US"], "descriptionKeywords": ["visa sponsorship", "sponsor visas"], "postedWithinDays": 14, "maxItems": 100 }

Description filters refetch the matching boards live, so keep the title keywords specific.

Input example

{
"keywords": ["data engineer", "analytics engineer"],
"excludeKeywords": ["intern"],
"locations": ["Toronto", "remote"],
"postedWithinDays": 14,
"maxItems": 200
}

To check specific companies only:

{
"companies": ["https://boards.greenhouse.io/airbnb", "lever:palantir", "ashby:ramp", "workable:huggingface"],
"keywords": ["engineer"]
}

A company can be given as a board URL, as ats:id (greenhouse:stripe), or as a bare id (stripe). Bare ids are looked up in the index and then tried on every platform. If nothing is found, the run log and the SUMMARY record say so.

Output example

One row from a real run on 2026-10-21:

{
"id": "ashby:ramp:7cd46077-05fe-4cd7-816f-5528638342f1",
"ats": "ashby",
"companyId": "ramp",
"company": "Ramp",
"title": "Software Engineer, Frontend, Growth",
"department": "Engineering",
"team": "Engineering",
"employmentType": "FullTime",
"workplaceType": "hybrid",
"location": "New York, NY (HQ)",
"locations": [
"New York, NY (HQ)",
"San Francisco, CA"
],
"countryCode": "US",
"salary": {
"min": 200000,
"max": 310000,
"currency": "USD",
"period": "year",
"text": "$200K – $310K • Offers Equity"
},
"postedAt": "2026-09-21T22:38:37.920Z",
"updatedAt": null,
"url": "https://jobs.ashbyhq.com/ramp/7cd46077-05fe-4cd7-816f-5528638342f1",
"applyUrl": "https://jobs.ashbyhq.com/ramp/7cd46077-05fe-4cd7-816f-5528638342f1/application",
"seniority": "mid",
"duplicateGroupId": "fc1d3990fc21",
"changeStatus": null,
"scrapedAt": "2026-10-21T14:16:51.471Z"
}
FieldNotes
idStable id: ats:company:jobId. Use it to join runs.
company, companyIdCompany name and its board id on the ATS.
title, department, team, employmentTypeAs published. Some fields are empty on some platforms.
workplaceTyperemote, hybrid, onsite, or null when the employer didn't say.
location, locations, countryCodePrimary location, plus every location after duplicate merging.
salary{ min, max, currency, period, text } or null.
seniorityWorked out from the title. mid means no level word was found.
postedAt, updatedAtISO dates from the ATS. Lever and Workable don't publish update times.
url, applyUrl, otherUrlsJob page, application page, and the URLs of merged duplicates.
duplicateGroupIdThe same value for the same company and title.
changeStatusnew, updated or closed in daily feed mode, otherwise null.
descriptionPlain text, only when Include full description is on.

Pricing

You pay per job returned. The current price is shown on the Pricing tab.

  • Not charged: jobs you already received (daily feed mode), and closed-job rows.
  • Spending cap: the maximum cost you set for a run is respected. The run stops adding results when it is reached.

How fresh is the data?

  • Company list given: every board is fetched live during your run.
  • All companies: results come from a snapshot refreshed once a day, so a job posted this morning may show up tomorrow. If that matters, give a company list.
  • Descriptions: these are always fetched live. Snapshot rows don't carry them, so when you ask for descriptions or filter on description text, the matching boards are refetched live.

Limits

  • Five platforms only. Companies on Workday, iCIMS, SmartRecruiters, Taleo, SuccessFactors, or their own in-house systems are not covered.
  • Lever and Workable are company-list only. Their APIs are slow to sweep (Lever asks for one request per second; Workable takes several seconds per board), so they are not in the daily all-companies snapshot. List the companies you want and they are fetched live.
  • The index isn't every company. It is the set of boards discovered so far. If a company you need is missing, add it to Companies and it is fetched live.
  • Seniority is a guess from the title, so "Engineer II" style titles may land in mid.
  • Lever is fetched at one request per second, as its robots.txt asks, and Workable at a similar pace. A list of 100 Lever or Workable companies takes a couple of minutes.

Data and conduct

  • Published postings only. This Actor reads job postings that employers publish for wide distribution, through documented public endpoints. It doesn't log in, use proxies, or bypass anything.
  • Platforms skipped on purpose: SmartRecruiters, because its API host's robots.txt only allows LinkedIn's crawler.
  • Removal requests: if you are an employer and want your board removed from the index, open an issue on the Issues tab and it will be removed within 14 days.

Integrations

  • Schedules: the Actor works with Apify schedules, webhooks, the API, and the Apify MCP server.
  • A typical setup: a daily schedule with Only new or changed jobs turned on, sending the results to Google Sheets, Slack or a webhook.