ATS Job Postings: Workday, Greenhouse, Lever & Ashby avatar

ATS Job Postings: Workday, Greenhouse, Lever & Ashby

Pricing

from $1.50 / 1,000 jobs

Go to Apify Store
ATS Job Postings: Workday, Greenhouse, Lever & Ashby

ATS Job Postings: Workday, Greenhouse, Lever & Ashby

Get every open job from company career pages on Workday, Greenhouse, Lever and Ashby in one clean format: title, department, location, remote status, salary, description and apply link. Paste careers page URLs or company names. Can return only postings that are new since the last run.

Pricing

from $1.50 / 1,000 jobs

Rating

0.0

(0)

Developer

Enis Bodlli

Enis Bodlli

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Get every open job from company career pages that run on Workday, Greenhouse, Lever or Ashby, in one clean format. Paste careers page URLs or company names and receive titles, departments, locations, remote status, salary ranges, full descriptions and apply links.

The Actor reads the public job-board endpoints of Greenhouse, Lever and Ashby, and the same public endpoint a Workday careers site uses to list its own jobs. It does not use a browser or proxies, so runs are fast and stable.

What you can do with it

  • Monitor companies for new openings. Turn on Only jobs that are new since the last run, add a schedule, and each run returns just the postings that appeared since the previous one.
  • Build a job board or a newsletter for a niche, for example remote engineering jobs at a list of companies you choose.
  • Track hiring as a signal. See which teams a company is growing, for sales prospecting, investing or competitor research.
  • Feed an AI agent or a spreadsheet with structured, current job data.

How to use it

  1. Add one entry per company under Companies. Any of these work:
    • a job board URL: https://boards.greenhouse.io/stripe, https://jobs.lever.co/palantir, https://jobs.ashbyhq.com/openai, https://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSite
    • a company careers page that embeds one of these boards: https://www.figma.com/careers/
    • just the board name: stripe (Greenhouse, Lever and Ashby only; Workday needs the URL)
  2. Optionally narrow the results: title and location keywords, remote only, employment type, seniority, posted within the last N days, or only jobs that state a salary.
  3. Run the Actor and export the results as JSON, CSV or Excel, or read them through the API.

For a plain board name the Actor tries Greenhouse, then Lever, then Ashby, and uses the first one with open jobs. Two companies can share a name on different systems, so use the URL when you need to be certain.

Pricing

You pay per job returned: $2.50 per 1,000 jobs ($0.0025 each) on the Free and Starter (Bronze) plans, $2.00 on Scale (Silver) and $1.50 on Business (Gold) and above, plus $0.00005 per run start. Platform usage is included, so there is nothing else to pay.

  • 20 companies with 40 open jobs each: 800 jobs, $2.00.
  • Daily monitoring with Only jobs that are new since the last run: you pay only for new postings. 15 new jobs a day is about $0.04 a day.
  • A run that finds nothing new costs $0.00005.

You can set a maximum charge per run. The Actor stops when it is reached, and the jobs it held back are returned by a later run.

Input

FieldWhat it does
CompaniesCareers page URLs, job board URLs or board names. Required.
Job board system for plain namesWhich system to use for entries that are a name, not a URL. Default: auto-detect.
Title keywordsKeep jobs whose title contains any of these. Not case sensitive.
Location keywordsKeep jobs whose location contains any of these. Not case sensitive.
Remote jobs onlyKeep only jobs marked as remote.
Exclude title keywordsDrop jobs whose title contains any of these.
Department keywordsKeep jobs whose department or team contains any of these.
Employment typesKeep full-time, part-time, contract, temporary or internship jobs. Jobs whose type the job system does not state are kept.
Seniority levelsKeep jobs whose title states one of the chosen ranks, such as senior, staff or director.
Posted within daysKeep jobs published in the last N days.
Only jobs with a salaryKeep jobs that state pay.
Include job descriptionAdd the description as plain text and HTML. Default: on.
Only jobs that are new since the last runReturn only postings that appeared since the previous run.
Monitor nameA name for this search's memory of seen jobs, so two searches on the same company do not share it.
Maximum jobs per companyStop after this many jobs for each company. 0 means no limit.

Example:

{
"companies": ["https://boards.greenhouse.io/stripe", "https://jobs.ashbyhq.com/openai", "palantir"],
"titleKeywords": ["engineer"],
"locationKeywords": ["london", "remote"],
"onlyNewSinceLastRun": true
}

Output

One item per job posting. Every source is mapped to the same fields:

{
"company": "openai",
"companyName": null,
"ats": "ashby",
"jobId": "8fb1615c-34bf-47c4-a1d1-b7b2f836bbd3",
"title": "Technical Program Manager, Compute Infrastructure",
"seniority": null,
"department": "Technical Program Management",
"team": "Technical Program Management",
"location": "San Francisco",
"locations": [
"San Francisco"
],
"isRemote": null,
"workplaceType": null,
"employmentType": "full_time",
"employmentTypeText": "FullTime",
"salaryMin": 257000,
"salaryMax": 335000,
"salaryCurrency": "USD",
"salaryInterval": "year",
"salaryText": "$257K - $335K",
"salarySource": "ats",
"publishedAt": "2026-03-12T16:38:15.322Z",
"updatedAt": null,
"jobUrl": "https://jobs.ashbyhq.com/openai/8fb1615c-34bf-47c4-a1d1-b7b2f836bbd3",
"applyUrl": "https://jobs.ashbyhq.com/openai/8fb1615c-34bf-47c4-a1d1-b7b2f836bbd3/application",
"descriptionText": "ABOUT THE TEAM ...",
"descriptionHtml": "<h2>About the team</h2> ...",
"scrapedAt": "2026-10-04T10:13:30.354Z"
}

A field is null when the source does not provide it. What each system provides:

FieldGreenhouseLeverAshbyWorkday
Company display nameyesnonono
Departmentyesyesyesno
Teamnoyesyesno
Workplace type (remote, hybrid, onsite)from the location text onlyyeswhen the company sets itwhen the company sets it, else from the location text
Employment typeonly when the title states ityesyesyes, with descriptions on
Salary rangeread from the description when written therewhen the company publishes it, else from the descriptionwhen the company publishes it, else from the descriptionread from the description when written there
Published dateyesyesyesexact with descriptions on; otherwise from "posted 3 days ago"
Updated dateyesnonono

How "only new jobs" works

The Actor keeps the IDs of the jobs that were open on the previous run in a key-value store named ats-job-postings-state in your account. On the next run it returns only postings whose ID is not in that list. The first run returns everything. Delete that store to start over.

Postings held back by Maximum jobs per company, or by the maximum charge you set for a run, are not marked as seen, so a later run returns them.

Each board has its own record, saved as soon as its jobs are stored, so a run that is stopped halfway does not report the same jobs as new the next time. Runs started from different saved tasks keep separate memories; set Monitor name to keep several searches apart within one task or through the API. If a board that had postings suddenly returns none, the list is kept as it was.

Limits

  • Only Workday, Greenhouse, Lever and Ashby are supported. Companies on SmartRecruiters or other systems are reported as not found.

  • Workday lists at most 2,000 postings per careers site. Its listing holds only title, location and a rough date; the description, all locations and the exact date need one extra request per job, so Workday runs take longer with Include job description on. A run with location keywords fetches those details for jobs listed as "2 Locations".

  • A careers page on the company's own domain works when its HTML references one of the supported boards. Pages that load the board only through JavaScript may not be detected; use the job board URL in that case.

  • Greenhouse does not publish salary, employment type or a remote flag through its job-board endpoint. Pay is read from the description when it is written there, which needs Include job description on.

  • No AI-written fields. Skills, benefits, visa sponsorship and requirement summaries are not returned; seniority, employment type and pay are read by fixed rules from what the posting states.

  • No company profile from LinkedIn or Crunchbase (size, industry, funding) and no hiring-manager name or email. The Actor returns what the company publishes on its own job board, and no personal data.

  • Seniority comes from words in the title (senior, staff, lead, director and so on). A title that states no rank has no seniority, and level numbers such as II or L4 are not interpreted, because they mean different ranks at different companies.

  • When the job system publishes no pay figures, the Actor reads a pay range from the description if one is written there, and sets salarySource to description. Bonuses, budgets and single figures are not read as pay.

  • Changing a filter does not bring back postings an earlier run already marked as seen. Use a new Monitor name for a new search.

FAQ

A company was "not found". Why? The name did not match a board on any supported system, or the company uses a different system. Open the company's careers page, click a job, and check the address: greenhouse.io, lever.co, ashbyhq.com or myworkdayjobs.com means it is supported, and you can paste that URL.

Is this legal? The Actor reads public job postings: through the endpoints Greenhouse, Lever and Ashby offer for displaying jobs on other sites, and through the public endpoint a Workday careers site uses itself. It collects no personal data. You are responsible for how you use the results.

Something broke or a field is missing. Open an issue on the Issues tab with the company you ran. Fixes usually ship within two days.

What happens if a run is interrupted? Progress is saved after every batch of jobs. If Apify moves or restarts the run, it continues where it stopped, and no job is stored or charged twice. Every run also writes a RUN_SUMMARY record to its key-value store with the result for each company: saved, not found or failed, and why. You pay for the jobs a run stored, whether or not it finished; a company that failed or was not reached costs nothing.

More Actors from this developer

Jobs:

Company registers:

Contacts and lists: