Greenhouse, Lever, Ashby & Workday Jobs Scraper avatar

Greenhouse, Lever, Ashby & Workday Jobs Scraper

Pricing

from $1.20 / 1,000 job results

Go to Apify Store
Greenhouse, Lever, Ashby & Workday Jobs Scraper

Greenhouse, Lever, Ashby & Workday Jobs Scraper

Scrape open jobs from company job boards on Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Personio and BambooHR in one clean format, or get only new and closed jobs since your last run. Enter a board link, a website or a company name.

Pricing

from $1.20 / 1,000 job results

Rating

0.0

(0)

Developer

Novasphere

Novasphere

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Share

Get the open jobs from any company's job board on Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Personio or BambooHR, all in one format. Run it once for the full list, or on a schedule to get only the jobs that were posted or taken down since the last run.

It reads each platform's public job-board API, so there's no login, no browser and no proxy. Most boards take a second or two.

Use it to

  • Watch hiring at a list of companies: competitors, customers, prospects, a fund's portfolio
  • Send new roles to Slack, email, a spreadsheet or your own job board
  • Give an AI agent a tool for "who is hiring for X at these companies"
  • Build hiring-signal data for sales or research

Input

Add one company per line, in any of these forms:

You enterExample
A job board linkhttps://job-boards.greenhouse.io/stripe, https://jobs.lever.co/palantir, https://jobs.ashbyhq.com/linear, https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite, https://jobs.smartrecruiters.com/BoschGroup, https://apply.workable.com/starling-bank, https://televic.recruitee.com, https://stark.jobs.personio.de, https://flexspring.bamboohr.com/careers
platform:namegreenhouse:stripe, lever:palantir, ashby:linear, smartrecruiters:BoschGroup, workable:starling-bank, recruitee:televic, personio:stark, bamboohr:flexspring
The company's websitestripe.com or https://www.nvidia.com/en-us/about-nvidia/careers/
The company's nameStripe, Palantir Technologies

With a website, the Actor reads the site's careers pages and follows the link to its job board. With a name, it looks for a board with that name on every platform, then for the company's Workday careers site, then tries the name as a website (name.com). A board link is always the most exact; the run summary says when a board was found by name.

Then pick what to output:

  • All open jobs: everything currently on each board that passes your filters.
  • Only changes since the last run: jobs that are new since the previous run, plus jobs that have been taken down. Runs with the same Feed name share their memory, so use one feed name per watchlist. The first run counts every job as new, unless you tick Skip existing jobs on the first run.

Optional filters: words in the job title (include or exclude), seniority, job function, location, department or team, remote / hybrid / on-site, and posted within the last N days.

{
"companies": ["https://job-boards.greenhouse.io/stripe", "lever:palantir", "linear"],
"mode": "changes",
"feedName": "competitors",
"titleKeywords": ["engineer", "product"],
"workplaceTypes": ["remote", "hybrid"]
}

Output

One item per job:

{
"change": "new",
"company": "Linear",
"title": "Senior / Staff Fullstack Engineer",
"location": "Europe",
"workplaceType": "remote",
"employmentType": "full-time",
"seniority": "lead",
"jobFunction": "engineering",
"department": "Product",
"team": "Engineering",
"salary": {"min": 120000, "max": 180000, "currency": "EUR", "interval": "year"},
"salaryText": "€120K - €180K",
"postedAt": "2021-04-27T20:13:45Z",
"url": "https://jobs.ashbyhq.com/linear/d3bc1ced-3ce4-4086-a050-555055dbb1ff",
"applyUrl": "https://jobs.ashbyhq.com/linear/d3bc1ced-3ce4-4086-a050-555055dbb1ff/application",
"platform": "ashby",
"board": "linear",
"jobId": "d3bc1ced-3ce4-4086-a050-555055dbb1ff",
"allLocations": ["Europe", "North America"],
"country": "European Union",
"updatedAt": null,
"firstSeenAt": "2026-10-20T08:00:14Z",
"closedAt": null,
"checkedAt": "2026-10-20T08:00:14Z"
}
FieldWhat it is
changenew or closed in changes mode; empty when listing all open jobs
company, title, location, allLocations, countryAs the employer lists them. Where a job list has no company name, it's read from the company's own job board page
workplaceTyperemote, hybrid or onsite when the board says (or the location says remote/hybrid)
employmentTypefull-time, part-time, contract, temporary or internship when available
seniorityintern, entry, senior, lead, manager, director or executive, read from the job title. When the title doesn't say, the employer's own experience level where the board has one and it clearly matches
jobFunctionArea of work (engineering, sales, data, design, people, ...), read from the job title, then the department or team
department, teamAs listed (Workday doesn't have them)
salary, salaryTextPay range: from the board where it gives one (Lever, Ashby, SmartRecruiters, Recruitee, Personio, BambooHR), otherwise from the job description when the employer states a range there
postedAt, updatedAtISO 8601, UTC
url, applyUrlJob page and application page
platform, board, jobIdWhere the job came from. jobId is unique within a board
firstSeenAt, closedAtChanges mode: when this feed first saw the job, and when it noticed it was gone
checkedAtWhen the board was read
descriptionPlain-text job description, only if you tick Include the job description

Each run also saves a summary to its key-value store under OUTPUT: boards checked, boards not found or unreadable (with the reason), and job counts.

Running it as a change feed

  1. Set What to output to Only changes and give the feed a name.
  2. Add a schedule, for example daily.
  3. Connect an integration (webhook, Slack, email, Google Sheets, Zapier, Make) to receive each run's new and closed jobs.

Using it from an AI agent or code

Every input is plain JSON, so it works through the Apify API, the Python and JavaScript clients, and Apify's MCP server (https://mcp.apify.com) for Claude, ChatGPT and other agents. The input also accepts a comma-separated string for companies and the keyword fields.

Good to know

  • Not affiliated with or endorsed by Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable, Recruitee, Personio or BambooHR. Their names only say which job boards this reads.
  • Only public job-board data is read. There's no candidate or employee data.
  • Job descriptions are the employer's text. Respect each employer's terms if you republish them.
  • With a bare name, the Actor uses the first platform where a board with jobs exists. Use a link or platform:name to be exact.
  • Workday shows 20 jobs per page and keeps each job's locations, country, job type and description on a separate page, which the Actor reads only for the jobs it outputs. A full list of a big Workday site takes a few minutes; the title filter and Max jobs per board keep it short. Workday shows at most 2,000 jobs per search, so bigger sites are read in parts (by job category, for example). SmartRecruiters and BambooHR also keep descriptions (and BambooHR its dates) on each job's own page, read the same way.
  • Only need one platform? See the Greenhouse, Lever, Ashby, Workday, SmartRecruiters, Workable or Recruitee Jobs Scraper. To search new jobs across thousands of companies at once, try Career Site Job Search.
  • In changes mode every job on a board is tracked, and filters only decide what's output, so changing a filter later won't resend old jobs.
  • In changes mode, if a run stops at your maximum charge, the changes it couldn't output are kept and come out on the next run.
  • The feed's memory is kept in your account in a key-value store named ats-jobs-feed-<feed name>. Delete it to start the feed fresh.
  • Boards that can't be found or read are listed in the run summary; the rest of the run carries on.