If you're building a job board, doing compensation benchmarking, or running labor-market research, Ashby-powered career pages are a goldmine — because, unlike most applicant tracking systems, Ashby boards frequently publish salary ranges right on the posting. This guide shows how to pull every open role from any Ashby board into clean JSON, compensation included, without writing a scraper from scratch.
Why Ashby is worth scraping
Ashby (ashbyhq.com) is the ATS behind the careers pages of a lot of well-funded startups. Two things make it unusually friendly to extract:
- An official, public, documented Job Posting API. No login, no scraping of rendered HTML, no fragile CSS selectors. One request returns a company's entire board.
-
Compensation data. Where a company chooses to publish it, each posting carries a compensation summary like
€76K – €185K • Offers Equity. That single field is what makes Ashby data valuable for salary benchmarking.
What you'll get per job
One JSON record per posting, for example:
{
"type": "job",
"board": "Ashby",
"title": "Engineering Manager, EU",
"department": "Engineering",
"team": "EMEA Engineering",
"employmentType": "FullTime",
"location": "Remote - European Union",
"isRemote": true,
"workplaceType": "Remote",
"publishedAt": "2024-03-04T14:29:08.532+00:00",
"compensation": "€76K – €185K • Offers Equity • Offers Bonus",
"descriptionText": "About the role...",
"jobUrl": "https://jobs.ashbyhq.com/Ashby/7458d4e9-...",
"applyUrl": "https://jobs.ashbyhq.com/Ashby/7458d4e9-.../application"
}
compensation is null when the company doesn't publish a range — so you can filter for only the postings that carry salary data.
Step 1 — Find the board name
Open any company's Ashby careers page. If the URL looks like jobs.ashbyhq.com/CompanyName, then CompanyName is the board name (case-sensitive). That's the only input you need. You can also paste the full URL.
Step 2 — Run the scraper
The fastest path is the Ashby Jobs Scraper on Apify. It wraps the official Ashby API, handles pagination, and normalizes every field. Provide one or more board names:
{
"boards": ["Ramp", "Notion"],
"includeCompensation": true,
"maxJobsPerBoard": 500
}
Hit Start, and it returns one record per job across every board in the run. Pricing is pay-per-result — you're billed only for jobs written to the dataset, never for unknown boards or failed fetches.
Step 3 — Export or pipe the data
Every run's dataset can be downloaded as JSON, CSV, or Excel, or pulled via the Apify API into your own pipeline. For compensation analysis, filter to records where compensation is not null and parse the range out of the summary string.
Here's a small Python snippet that turns the raw compensation string into structured min/max numbers you can average or chart:
import re
def parse_comp(summary: str | None):
"""'€76K – €185K • Offers Equity' -> {'min': 76000, 'max': 185000, 'currency': '€'}"""
if not summary:
return None
m = re.search(r'([€$£])\s*([\d.]+)K?\s*[–-]\s*[€$£]?\s*([\d.]+)K', summary)
if not m:
return None
cur, lo, hi = m.group(1), float(m.group(2)), float(m.group(3))
return {"min": int(lo * 1000), "max": int(hi * 1000), "currency": cur}
# jobs = your exported dataset
comped = [j for j in jobs if parse_comp(j["compensation"])]
avg_max = sum(parse_comp(j["compensation"])["max"] for j in comped) / len(comped)
print(f"{len(comped)} roles with pay, avg top of band: {avg_max:,.0f}")
Recipe: a "who's hiring" lead feed
One high-value use case: a recurring feed of new job postings across a set of target companies — useful for sales prospecting ("they just opened 5 sales roles") or recruiting intelligence.
- Put your target companies in
boards. - Schedule the Actor to run daily on Apify.
- Between runs, dedupe on
jobId— anything you haven't seen before is a new posting. Filter ondepartmentorpublishedAtto narrow it.
{
"boards": ["Ramp", "Linear", "Vanta", "Deel"],
"includeCompensation": true,
"maxJobsPerBoard": 1000
}
That turns a static scrape into a change feed you can pipe into a Slack alert, a CRM, or a spreadsheet.
Frequently asked questions
Do I need an Ashby API key or account? No. The scraper uses Ashby's public, documented Job Posting API — the same endpoint that powers the public careers page.
Can I scrape many companies at once? Yes — pass multiple board names in boards and they're all scraped in a single run.
Is this legal? The scraper accesses only public job postings — company data, not personal candidate data — via an official API. You're responsible for complying with each company's Terms and your local laws.
Scraping a different ATS?
Ashby is one of several ATS platforms. If the companies you track use others, the same pay-per-result, no-login approach applies:
Ready to try it? Run the Ashby Jobs Scraper on Apify — free to start, pay only for the jobs you extract.
Top comments (0)