Ashby Jobs API: Open Jobs + Compensation from Any Ashby Board
Pricing
from $1.00 / 1,000 job results
Ashby Jobs API: Open Jobs + Compensation from Any Ashby Board
Every open job from any Ashby board (jobs.ashbyhq.com) via the official public Job Postings API, with full compensation tiers (salary, equity, bonus), department, team, workplace type and all locations. Filters, only-new mode. $1 per 1,000 jobs.
Pricing
from $1.00 / 1,000 job results
Rating
0.0
(0)
Developer
Andrew Shamah
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Ashby Jobs API: all open jobs from any Ashby board
Get every open job from any company that hires through Ashby (Ramp, Notion, Linear and a fast-growing share of AI and venture-backed startups) with compensation, in clean JSON, CSV or Excel. It reads Ashby's official, public Job Postings API with compensation enabled: no login, no browser, no proxies.
What makes it more than a generic job scraper:
- 💰 Full compensation tiers. Ashby publishes structured compensation, often for most jobs on a board. You get the salary range (min, max, currency, interval) plus every component in every tier: salary, equity, bonus and commission, and the flags
offersEquity/offersBonus. - 🌍 All locations: the primary location with city, region and country, plus every secondary location ("Remote (US)", "Miami, FL"…), and Ashby's own
isRemoteflag and workplace type (Remote / Hybrid / OnSite). - 🏷️ Department and team, both filterable, plus each board's department breakdown in the run SUMMARY.
- 🔒 Only listed jobs: unlisted or hidden postings are never returned.
- 🔁 Only-new mode for daily alerts and monitoring.
Price: $1 per 1,000 jobs ($0.001 per job returned), plus a tiny start fee. Boards that fail are listed as free error rows, and you never pay for jobs your filters drop.
Who uses it
- Job boards and aggregators: keep listings for hundreds of Ashby companies fresh with a daily schedule and
onlyNew. - Recruiters and sales teams: see who is hiring for which roles (hiring signals for outbound).
- Job seekers: get alerts for new roles at your target companies, filtered by title, location, remote and salary.
- Researchers and analysts: track hiring velocity, department mix and salary bands over time.
How to use it
- Add one or more Ashby boards: a URL like
https://jobs.ashbyhq.com/ramp, or just the slug. - Optionally set filters (title keywords, location, department, remote, salary…).
- Run it, then download the dataset as JSON, CSV, Excel or HTML, or read it through the Apify API.
Finding the board slug
The slug is the part after the domain: jobs.ashbyhq.com/ramp. Ashby slugs are case-sensitive for some companies, so copy the slug from the URL.
Not sure which ATS a company uses, or it uses Workable, SmartRecruiters, Recruitee, Personio, Teamtailor, BambooHR or Breezy? Use our multi-ATS Company Jobs API, which detects the ATS for you.
Input
| Input | What it does |
|---|---|
companies | Board URLs or slugs, one per line |
keywords / excludeKeywords | Title must contain any / none of these |
locations | Location, secondary locations or country contains any of these |
departments, teams | Department / team contains any of these |
employmentTypes, workplaceTypes, remoteOnly | Job type and remote/hybrid/on-site |
postedWithinDays | Posted or updated in the last N days |
onlyWithSalary, minAnnualSalary | Only jobs with a published salary, and/or a minimum annualized top of range |
onlyNew | Return only jobs not seen in your previous runs (for schedules and alerts) |
includeDescription, redactContacts | Full description text/HTML; emails and phones redacted by default |
maxJobsPerCompany, maxJobsTotal | Hard caps (also cap your cost) |
Example:
{ "companies": ["https://jobs.ashbyhq.com/ramp"], "keywords": ["engineer"], "remoteOnly": false, "onlyNew": true }
Output
One dataset item per job. Every item has the common fields ats, companySlug, company, jobId, title, location, locations, isRemote, postedAt, url, applyUrl, descriptionText, descriptionHtml, input, scrapedAt and error, plus these Ashby-specific fields:
| Field | Description |
|---|---|
salaryMin, salaryMax, salaryCurrency, salaryPeriod, salaryText | Salary component of the compensation summary |
compensationSummary | e.g. "$211.4K – $290.6K • Offers Equity" |
compensationTiers | [{title, summary, components: [{type, interval, currency, min, max, summary}]}] |
offersEquity, offersBonus | From the compensation components (null if the company publishes no compensation) |
department, team, employmentType | Ashby fields (FullTime, PartTime, Intern, Contract, Temporary) |
workplaceType, isRemote | Remote / Hybrid / OnSite |
location, city, region, country, secondaryLocations, locations | All locations |
postedAt, url, applyUrl | Published date, posting and application links |
Example item (shortened; values are illustrative):
{"ats": "ashby", "companySlug": "ramp", "company": "ramp", "jobId": "34413f8d-…","title": "Security Engineer, Cloud", "department": "Engineering", "team": "Backend", "employmentType": "FullTime","workplaceType": "Hybrid", "isRemote": true, "location": "New York, NY (HQ)", "city": "New York City", "region": "NY", "country": "USA","secondaryLocations": ["Remote (Canada)", "Remote (US)", "Miami, FL"],"salaryMin": 211400, "salaryMax": 290600, "salaryCurrency": "USD", "salaryPeriod": "YEAR","compensationSummary": "$211.4K – $290.6K • Offers Equity", "offersEquity": true, "offersBonus": false,"compensationTiers": [{ "summary": "$211.4K – $290.6K • Offers Equity", "components": [{ "type": "EquityPercentage", "interval": null, "currency": null, "min": null, "max": null, "summary": "Offers Equity" },{ "type": "Salary", "interval": "YEAR", "currency": "USD", "min": 211400, "max": 290600, "summary": "$211.4K – $290.6K" }]}],"postedAt": "2026-04-07T17:12:35.753Z", "url": "https://jobs.ashbyhq.com/ramp/34413f8d-…", "...": "..."}
The default key-value store also has a SUMMARY record with, for each board, the company name, open-job count, how many jobs were output, and a department breakdown.
Monitoring: only new jobs
Turn on onlyNew and schedule the Actor (for example daily). Job IDs are remembered in a named key-value store in your own account, keyed by your list of boards, so each run returns (and charges for) only postings you have not seen before. Connect a webhook, Slack, email or Zapier/Make integration to get alerts.
Speed and cost
One API call per board: a board with 200 jobs takes 1–2 seconds. It runs on 512 MB by default; 256 MB is enough for most boards. Example: 10 companies × 150 jobs = 1,500 jobs ≈ $1.50.
FAQ
Is this allowed? Yes. It only reads the official public job-board API that Ashby provides so companies' job listings can be shown on other sites. It doesn't log in or scrape candidate data. Contact details in descriptions are redacted by default.
Why did a board return 0 jobs? The board exists but has no open jobs right now (see SUMMARY), or your filters removed everything. A wrong slug returns a free error row explaining what was wrong.
Can I get jobs from many companies at once? Yes. Add as many boards as you like; they are processed one after another.
Is the salary converted to one currency? No. Salaries are returned exactly as published, with their currency and period. minAnnualSalary compares annualized amounts without converting currency.