Ashby Jobs Scraper & API - Open Roles, Any Company avatar

Ashby Jobs Scraper & API - Open Roles, Any Company

Pricing

from $1.20 / 1,000 jobs

Go to Apify Store
Ashby Jobs Scraper & API - Open Roles, Any Company

Ashby Jobs Scraper & API - Open Roles, Any Company

Track hiring across up to 200 Ashby boards in one run, in one row shape you can diff daily. Zero open roles, a board that does not exist and a failed fetch are three different rows - never a silently empty result. Unofficial, not affiliated with Ashby.

Pricing

from $1.20 / 1,000 jobs

Rating

0.0

(0)

Developer

NeverEmpty

NeverEmpty

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

9 hours ago

Last modified

Share

Pull every open job from any company's Ashby job board, read straight from Ashby's own public board API. No HTML scraping, no proxies, no API keys, nothing that breaks when a careers page is redesigned.

Unofficial. This Actor is not affiliated with, endorsed by, or sponsored by Ashby. All product names are trademarks of their respective owners.

Don't know a company's board name? ATS Job Board Finder turns a domain into the board name this Actor takes.


It never returns an empty result to mean two different things

Most job-board Actors return an empty dataset when something goes wrong, and an empty dataset when there is genuinely nothing to report. Those are not the same answer, and if you are monitoring hiring activity the difference is the whole point.

Every board you ask for produces at least one row, tagged in the rowType column:

rowTypeokWhat it meansCharged?
jobtrueA real open jobYes
no-open-rolestrueThe board is live and has no open jobs (or none matching your filters)No
board-not-foundfalseNo board with that name exists on AshbyNo
unavailablefalseAshby could not be reached, or the entry could not be read as a board; reason says whyNo
budget-reachedfalseThe run hit the Max total charge you set. Names every board that was cut short and every board not fetched because of itNo

You are charged only for job rows.


What Ashby actually publishes - measured, not estimated

Run on 2026-09-01 with the shipped build and the default input: 275 job rows across 3 boards.

ramp (137)vanta (110)linear (28)
title, jobUrl, postedAt, department100%100%100%
employmentType100%100%100%
workplaceType100%89%100%
isRemote91%89%100%
salaryMin / salaryMax96%60%0%

Salary is a property of the employer, not of Ashby. Measured on the three default boards it was 96%, 60% and 0%. Ashby is the only one of the five ATSs that carries structured compensation at all, but whether a given company fills it in is that company's choice. Figures come only from those structured fields - nothing is parsed out of description prose, and a missing figure stays null, never 0. Unlisted postings are excluded, so you do not get jobs that are not actually public.


Input

FieldTypeDefaultWhat it does
boardsarrayashby:ramp, ashby:linear, ashby:vantaOne entry per company board, up to 200
titleContainsstring(empty)Keep only jobs whose title contains this text (case-insensitive)
departmentContainsstring(empty)Keep only jobs whose department or team contains this text
locationContainsstring(empty)Matches the primary location and every secondary location
remoteOnlybooleanfalseKeep only jobs Ashby itself flags as remote - never a guess
postedWithinDaysinteger0 (off)Keep only jobs first published within N days. Unknown dates are excluded rather than assumed recent
maxJobsPerBoardinteger0 (no limit)Cap of job rows per board, applied after filtering
includeDescriptionbooleanfalseAdd the full description as plain text in descriptionText
maxRetriesinteger3Total attempts per board for temporary errors (HTTP 429 / 5xx). A 404 is a permanent answer and is not retried

Naming a board: ashby:ramp, or paste https://jobs.ashbyhq.com/ramp, or just ramp


Output columns

rowType, ok, reason, ats, companySlug, companyName, jobId, title, department, team, employmentType, locationRaw, locationsAll, country, city, workplaceType, isRemote, remoteHint, salaryMin, salaryMax, salaryCurrency, salaryInterval, salaryText, postedAt, updatedAt, jobUrl, applyUrl, descriptionText, source

All 29 columns are present on every row, in the same order - including the marker rows. The Greenhouse, Lever, Ashby, Workable and Workday Actors all return these same 29 columns, so adding another ATS never means rewriting your parser.

Two things it refuses to invent

  • isRemote is set only when Ashby itself says so. A guess based on the location text lives in a separate column called remoteHint, so you always know which is which. A job located in "Remote, Oregon" is not a remote job.
  • salaryMin / salaryMax come only from structured compensation fields. Nothing is parsed out of prose, and a missing figure stays null - never 0.

How it is checked

  • 148 automated checks across 3 files, run before every publish
  • 50 deliberate defects injected into the source; all 50 were caught by those checks (re-run and verified 2026-09-03)
  • Only public job boards are read. Nothing needs a login, and no private ATS data is accessed
  • Every request has a 45-second timeout, so a silent server cannot hang the run
  • Up to 200 boards per run

The rest of the family

Same 29 columns, same row rules, one ATS each:

Support

Found a board that behaves oddly? Open an issue on the Issues tab and include the board name - it will be reproduced against the live API before anything is changed.