Ashby Jobs Scraper - Every Opening From Any Ashby Board avatar

Ashby Jobs Scraper - Every Opening From Any Ashby Board

Pricing

from $1.00 / 1,000 job openings

Go to Apify Store
Ashby Jobs Scraper - Every Opening From Any Ashby Board

Ashby Jobs Scraper - Every Opening From Any Ashby Board

Salary data actually shows up here. Ashby boards publish compensation far more often than other ATS platforms - pull every opening with its range, team, location and apply link via the official public API. Paste domains.

Pricing

from $1.00 / 1,000 job openings

Rating

0.0

(0)

Developer

Scrappeer

Scrappeer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Share

A company that is hiring is a company that is spending. Pull every live opening from any Ashby board via the official public API, published salary ranges included. Paste a company domain - no board slug to look up.


What it does

Give it a list of Ashby board tokens. It calls the official public Ashby board API for each one and returns every live opening in a flat, spreadsheet-ready schema.

This reads the API Ashby already publishes for its customers' own careers pages. That means no proxy, no headless browser, no anti-bot arms race — and nothing that silently breaks when a page layout changes.

Ashby is the richest of the platforms: department, team, employment type, workplace type and published salary ranges all come through.


Input

{
"boards": ["ramp.com", "https://jobs.ashbyhq.com/1x"],
"titleKeywords": ["engineer"],
"locations": ["Remote"],
"postedWithinDays": 7
}

The board token is the company slug in jobs.ashbyhq.com/ — but you rarely need to look it up. Paste the company domain (acme.com, www.acme.com) or the full careers URL and the Actor pulls the company name out for you.

FieldDefaultNotes
boardsRequired. Tokens or full careers URLs.
titleKeywordsKeep only titles containing any of these.
excludeKeywordsDrop titles or departments matching any of these.
locationsKeep only matching locations.
departmentsMatches department or team.
remoteOnlyfalseRemote positions only.
postedWithinDays00 = no limit. Set 1 for a daily new-jobs feed.
includeDescriptionfalseAdds full description text. Much larger results.
onlyNewSinceLastRunfalseReturn only what opened or closed since the last run.
maxJobsPerBoard00 = no limit. The console starts at 10 so a first trial run stays cheap.
concurrency5Boards fetched in parallel.

Output

One row per opening:

FieldDescription
companyName, boardToken, atsWho, and where it was read from
jobIdStable ID on Ashby
titleJob title
department, teamOrg placement
employmentTypeFull-time, contract, intern…
location, isRemote, workplaceTypeWhere the work happens
salaryCompensation range, when published
publishedAt, updatedAtISO 8601 timestamps
jobUrl, applyUrlPublic posting and application links
globalId{ats}:{token}:{jobId} — stable key for joining and deduping
descriptionFull text, only when requested

Export as Excel, CSV, JSON or XML, or pull it through the API.

A board that cannot be found returns one row with an error and a hint, so a bad token never silently vanishes from your results.


Monitoring: only what changed

Set onlyNewSinceLastRun: true and schedule it. The first run records a baseline and returns everything. Every run after that returns only:

  • jobs that opened since your last run — isNew: true
  • jobs that have since closedisClosed: true

A morning with no hiring activity returns nothing at all and costs only the start fee. You are never billed for re-reading a job you already saw.

Two things worth knowing:

  • Changing the boards or filters starts a fresh baseline. Otherwise every job you stopped asking about would be reported as newly closed, which is a wrong answer rather than a noisy one.
  • A closed row carries what was recorded when the job was last seen — company, title and link. Once a posting is gone there is nothing left to re-read, so the remaining fields are omitted rather than shown stale.

Without monitoring

postedWithinDays: 1 also gives you a daily feed, based on each board's own posted date. It is simpler, but it cannot tell you when a role closed, and it depends on the company having set a date at all. Use onlyNewSinceLastRun if you care about either.


Quality notes

  • Timestamps are normalised to ISO 8601, so date filters behave predictably.
  • Postings that cannot be read are skipped and reported in the log rather than quietly dropped — and you are not billed for them.
  • One malformed posting never takes down the rest of the board.

Limits

  • Ashby boards only. For a company on a different platform, see the multi-platform version of this Actor.
  • Boards set to private or password-protected are not accessible.
  • department and team are only as good as what the company fills in.

The endpoint this reads

https://api.ashbyhq.com/posting-api/job-board/<company>

That is Ashby's own public board API - the one that fills its customers' careers pages. It needs no key, no login and no proxy, which is why this Actor does not use any.


FAQ

Does Ashby have a public jobs API? Yes, for job boards. The endpoint above returns the live postings for one company as JSON. It is public because the careers page itself is public.

Do I need an API key, a login, or a proxy? No. None of the three.

Where do I find the board token? You do not have to. Paste the company's domain, the URL of any job posting, or the identifier itself - ramp.com is a working example - and this Actor resolves it. If you already know the token - the company slug in jobs.ashbyhq.com/

Why would I use this instead of calling the endpoint myself? For one company, you probably should not - it is one HTTP request, and this README just told you the URL. This Actor earns its keep at the point where that stops being true: dozens of companies at once, tokens you would otherwise have to look up by hand, a flat schema shared across six ATS platforms, a globalId you can join on, and a mode that returns only what changed since the last run instead of the whole board every morning.

Can I get only the jobs that opened or closed since last time? Yes. Set onlyNewSinceLastRun to true and each run returns the new postings, plus a row for every posting that disappeared. See the monitoring section above.

What does a run cost? You pay per row returned - about a tenth of a cent each - plus a fraction of a cent to start the run. A company with 40 openings lands around five cents. With onlyNewSinceLastRun on, a scheduled daily run usually returns a handful of rows rather than the whole board.

A company is not found. Why? Either it is not on Ashby - most large enterprises use Workday, Taleo, iCIMS or SuccessFactors - or its board is private. The run tells you which, per company, in a row you can read rather than a silent gap.


Support

A board that will not resolve? Open an issue on the Issues tab with the careers URL.