Multi-ATS Jobs Scraper - Workday, Greenhouse, Lever & More avatar

Multi-ATS Jobs Scraper - Workday, Greenhouse, Lever & More

Pricing

from $3.90 / 1,000 results

Go to Apify Store
Multi-ATS Jobs Scraper - Workday, Greenhouse, Lever & More

Multi-ATS Jobs Scraper - Workday, Greenhouse, Lever & More

Scrape job postings from company career boards across 8 applicant tracking systems - Workday, Greenhouse, Lever, SmartRecruiters, Workable, Ashby, Recruitee and BambooHR - with one unified output schema.

Pricing

from $3.90 / 1,000 results

Rating

0.0

(0)

Developer

Thirdwatch

Thirdwatch

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 hours ago

Last modified

Share

Multi-ATS Jobs Scraper — Workday, Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee & BambooHR

Collect current employer-posted jobs from eight major career-board systems in one consistent dataset.

What you get

Scrape job postings directly from company career boards across eight applicant tracking systems (ATS) and get them back in one flat, unified schema.

Most job scrapers point at an aggregator (Indeed, LinkedIn, Google Jobs) and give you a second-hand copy of a listing, often days stale and missing the real apply link. This actor goes the other way: it reads the company's own career board — the same board the company publishes to — so you get the posting as the employer wrote it, with the canonical apply URL, the internal requisition ID, and the real posting date.

Paste any career board URL. The actor recognises which ATS is behind it, reads the board, normalises every posting, and pushes it to your dataset.


Supported applicant tracking systems

ATSExample board URLNotes
Workdayhttps://nvidia.wd5.myworkdayjobs.com/NVIDIAExternalCareerSiteKeyword search runs on the board itself
Greenhousehttps://job-boards.greenhouse.io/stripeFull descriptions and pay ranges where published
Leverhttps://jobs.lever.co/spotifyFull descriptions, commitment type, salary band where published
SmartRecruitershttps://jobs.smartrecruiters.com/VisaDescriptions and canonical apply URLs
Workablehttps://apply.workable.com/blueground/Keyword search runs on the board itself
Ashbyhttps://jobs.ashbyhq.com/linearRichest board: team, compensation band, remote flag
Recruiteehttps://bunq.recruitee.comFull descriptions, hours, city/region/country
BambooHRhttps://kiln.bamboohr.com/careersDescriptions and posting dates

You can also use a short form instead of a URL:

greenhouse:stripe
lever:spotify
ashby:linear
recruitee:bunq
bamboohr:kiln
smartrecruiters:Visa
workable:blueground
workday:nvidia/wd5/NVIDIAExternalCareerSite

Workday boards need three parts (tenant, shard, site name) because that is how Workday addresses a board — all three are read automatically out of a pasted board URL, so pasting the URL is always the easier option.


Input parameters

FieldTypeDefaultDescription
boardUrlsarray of stringsRequired. Career board URLs or platform:slug short forms.
searchTextstring""Keyword matched against the job title, department, team, and description fields available on each board.
locationFilterstring""Case-insensitive substring matched against location, city, region, country and country code.
remoteOnlybooleanfalseKeep only postings the board explicitly flags as remote.
includeDescriptionbooleantrueFetch full description text. Free on most boards; costs one extra request per posting on Workday, SmartRecruiters and BambooHR.
maxResultsinteger5Total postings to return across all boards.
maxResultsPerBoardinteger0Per-board cap so one huge board cannot use the whole budget. 0 = no per-board limit.
proxyConfigurationobjectdisabledOptional connection settings. The default works for most public boards.

Input example

{
"boardUrls": [
"https://job-boards.greenhouse.io/stripe",
"https://jobs.lever.co/spotify",
"https://jobs.ashbyhq.com/linear",
"workday:nvidia/wd5/NVIDIAExternalCareerSite"
],
"searchText": "engineer",
"maxResults": 200,
"maxResultsPerBoard": 50,
"includeDescription": true
}

Output fields

Every posting from every ATS comes back with the same 28 keys, so you can concatenate boards from different systems without any post-processing.

FieldTypeDescription
platformstringWhich ATS the posting came from (workday, greenhouse, lever, smartrecruiters, workable, ashby, recruitee, bamboohr).
companystringCompany name as the board reports it.
company_slugstringBoard identifier used on that ATS.
job_idstringStable posting ID on the source board.
titlestringJob title.
departmentstringDepartment / job family.
teamstringTeam, function or seniority band, where the board publishes one.
employment_typestringFull-time, part-time, contract, permanent, etc.
workplace_typestringremote, hybrid or onsite where published.
is_remotebooleanExplicit remote flag from the board (null when the board publishes none).
locationstringFull location string as displayed on the board.
citystringCity, when published separately.
regionstringState / province / region grouping.
countrystringCountry name.
country_codestringISO-3166 alpha-2 country code, uppercased.
posted_atstringISO-8601 publication date/time.
updated_atstringISO-8601 last-updated date/time, where published.
salary_minnumberLower bound of the published pay range.
salary_maxnumberUpper bound of the published pay range.
salary_currencystringISO currency code for the pay range (e.g. USD).
salary_periodstringPay period the range refers to (year, hour, …).
requisition_idstringEmployer's internal requisition / reference number.
job_urlstringAbsolute URL of the posting.
apply_urlstringAbsolute URL of the application form.
descriptionstringFull job description as plain text (when includeDescription is on).
board_urlstringAbsolute URL of the career board the posting came from.
source_querystringThe exact input entry that produced this row.
scraped_atstringISO-8601 UTC timestamp of extraction.

Example output

{
"platform": "ashby",
"company": "ramp",
"company_slug": "ramp",
"job_id": "34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"title": "Security Engineer, Cloud",
"department": "Engineering",
"team": "Backend",
"employment_type": "FullTime",
"workplace_type": "hybrid",
"is_remote": true,
"location": "New York, NY (HQ), Remote (Canada), Remote (US)",
"city": "New York City",
"region": "NY",
"country": "USA",
"country_code": "",
"posted_at": "2026-04-07T17:12:35.753000Z",
"updated_at": "",
"salary_min": 211400,
"salary_max": 290600,
"salary_currency": "USD",
"salary_period": "year",
"requisition_id": "",
"job_url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"apply_url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application",
"description": "",
"board_url": "https://jobs.ashbyhq.com/ramp",
"source_query": "ashby:ramp",
"scraped_at": "2026-07-27T22:56:42.869947Z"
}

Use cases

  • Recruiting and sourcing intelligence — track exactly what a list of target companies is hiring for, week over week, with the employer's own wording.
  • Job boards and aggregators — build a niche board sourced from company career pages instead of re-scraping another aggregator.
  • Competitive and market research — headcount signals, which teams are expanding, which offices are opening, published pay bands by role.
  • Sales prospecting — hiring for a role that implies a tooling need is a strong buying signal.
  • Compensation benchmarking — collect published pay ranges by title and location.

Limitations

Please read these before you build on the output — they are properties of the source boards, not bugs.

  • Eight systems, not every system. Two ATS platforms were tested and deliberately left out: Personio career sites sit behind a bot challenge that blocks automated reads, and iCIMS has decommissioned its shared tenant hosting, so its customers' boards no longer share a predictable address. Neither is supported.
  • Field coverage varies by ATS, a lot. Every board publishes a title, location, ID and apply URL. Beyond that it is entirely up to the employer's configuration. Across a mixed eight-board test run, department was populated on 88% of rows, description on 88%, posted date on 100%, city on 48% and salary on 0% — because none of those particular employers published pay ranges. Ashby and Lever boards are the most likely to carry compensation; Workday and BambooHR essentially never do.
  • Salary is only present when the employer publishes it. There is no inference or estimation. If the field is empty, the board did not state a number.
  • Workday reports a display-capped total. Very large Workday boards report a ceiling (commonly 2000) rather than the true count, and paging past the reported total silently restarts at page one. The actor stops at the reported total, so a very large Workday board can return fewer postings than the employer actually has open.
  • A wrong company slug can be indistinguishable from an empty board. SmartRecruiters returns a normal, successful, empty response for an unknown company rather than a "not found", so a typo in a SmartRecruiters slug looks exactly like a company with no open roles. The run log says which it might be; it cannot tell you for certain.
  • Private boards return nothing. Some BambooHR career boards are access-restricted; those are logged and skipped.
  • Descriptions make large runs slower on some systems. Turn includeDescription off for listing-only runs.
  • Keyword coverage differs by system. Results can vary because each board publishes and searches different fields.
  • Zero results is a normal outcome. An empty board, a keyword nothing matches, or filters that are too narrow all finish the run cleanly with a warning and zero rows — not an error.
  • Boards are read as published. The actor does not log in, does not see internal-only postings, and does not deduplicate the same role posted by two different companies.

Compared to alternatives

  • vs. fantastic-jobs single-ATS actors: One input and one schema cover eight career-board systems, which is useful for mixed company lists.
  • vs. job aggregators: Results come from employer career boards and retain the canonical posting and apply URLs.

FAQ

Can I mix different ATS platforms in one run? Yes. Add any supported board URLs or short forms to boardUrls.

Are salary fields always populated? No. They are returned only when the employer publishes a pay range.

Can I collect only remote jobs? Yes. Enable remoteOnly; boards without an explicit remote signal will not contribute rows.

Last verified: 2026-07

More job-data actors at thirdwatch.dev.