Ashby Job Board API
Free ATS job board API with no key: Ashby-hosted roles with structured secondary locations, departments, teams and employment type. Tested example included.
Endpoint tested and returned HTTP 200 on 21 Aug 2026
What is the Ashby Job Board API?
Ashby's posting API returns a company's public job board as JSON with no key. Each role gives its title, department, team, employment type and primary location, plus a structured list of secondary locations with proper postal address components.
Ashby is the newer entrant among applicant tracking systems, and it shows in the data model. Where older boards hand you a single free-text location string, Ashby returns `secondaryLocations` as an array of objects, each with a `postalAddress` containing separate country, region and locality fields — actual structured geography rather than a string you have to guess at.
That matters most for the increasingly common role advertised as "Remote - European Union" with a specific list of countries the company can actually employ in. The primary `location` gives you the headline, and `secondaryLocations` gives you the real answer, which is exactly the distinction a job seeker cares about. Departments and teams also arrive as separate fields rather than one concatenated string, so faceting works without parsing. Some address components come back as empty strings rather than null, so test for emptiness rather than existence.
Quick facts
- Base URL
https://api.ashbyhq.com/posting-api/job-board- Authentication
- No API key for the public job board. Ashby's full hiring API, covering candidates and interviews, requires an API key.
- Rate limit
- No published limit for the public board. Cache per company.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the Ashby Job Board API
Every request below was executed against the live API on 21 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Fetch a company's Ashby job board
GET https://api.ashbyhq.com/posting-api/job-board/ashby
curl 'https://api.ashbyhq.com/posting-api/job-board/ashby'const res = await fetch("https://api.ashbyhq.com/posting-api/job-board/ashby");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.ashbyhq.com/posting-api/job-board/ashby", timeout=20)
res.raise_for_status()
print(res.json()){
"jobs": [
{
"id": "7458d4e9-da2e-47bd-98cb-adfda43d42b2",
"title": "Engineering Manager - EU",
"department": "Engineering",
"team": "EMEA Engineering",
"employmentType": "FullTime",
"location": "Remote - European Union",
"secondaryLocations": [
{
"location": "Spain",
"address": {
"postalAddress": {
"addressRegion": "Spain",
"addressCountry": "Spain",
"addressLocality": "Spain"
}
}
},
{
"location": "Italy",
"address": {
"postalAddress": {
"addressRegion": "",
"addressCountry": "Italy",
"addressLocality": ""
}
}
},
{
"location": "Germany",
"address": {
"postalAddress": {
"addressCountry": "Germany",
"addressLocality": ""
}
}
},
{
"location": "Switzerland",
"address": {
"postalAddress": {
"addressRegion": "",
"addressCountry": "Switzerland",
"addressLocality": ""
}
}
},
{
"location": "Denmark",
"address": {
"postalAddress": {
"addressRegion": "",
"addressCountry": "Denmark",
"addressLocality": ""
}
}
},
{
"location": "Norway",
"address": {
"postalAddresParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
(job board name) | path | Required | The company's Ashby board name, taken from its careers URL. ashby |
includeCompensation | query | Optional | Set true to include compensation ranges where the employer publishes them. true |
Response fields
jobsarray- Published roles on the board.
jobs[].idstring- Posting UUID.
jobs[].titlestring- Job title as published.
jobs[].department / teamstring- Organisational placement as two separate fields — `Engineering` and `EMEA Engineering` in the captured example.
jobs[].employmentTypestring- `FullTime`, `PartTime`, `Intern`, `Contract` or `Temporary`.
jobs[].locationstring- Primary location as a display string, for example `Remote - European Union`.
jobs[].secondaryLocationsarray- Additional eligible locations, each with a `location` label and an `address.postalAddress` holding separate `addressCountry`, `addressRegion` and `addressLocality` fields.
jobs[].jobUrl / applyUrlstring- Public posting page and the direct application link.
jobs[].isRemoteboolean- Whether the role is remote, where the employer has flagged it.
jobs[].publishedAtstring- ISO 8601 publication timestamp.
jobs[].descriptionHtml / descriptionPlainstring- Full job description in both markup and plain text.
What you can build with the Ashby Job Board API
- Build a careers page that shows every country a remote role covers
- Filter roles by employment type and department without string parsing
- Aggregate postings across companies using Ashby
- Map hiring locations from structured address components
Common errors and how to fix them
404
The board name is wrong or the board is not published.
Fix: Take it from the company's Ashby careers URL. Unpublished boards are not exposed.
Empty strings in address fields
Ashby serialises unset components as `""` rather than null.
Fix: Test for empty strings as well as null before rendering an address line.
No compensation data
Ranges are opt-in per employer and off by default.
Fix: Add `includeCompensation=true`, and accept that many employers publish nothing.
Location contradicts secondaryLocations
The primary location is a marketing label; the secondary list is the operational reality.
Fix: Show the primary string as the headline but use `secondaryLocations` for any eligibility filtering.
Ashby Job Board API — frequently asked questions
Is the Ashby job board API free?
Yes, public with no key. Ashby's full hiring API, which covers candidates and interviews, requires an API key and is a separate product.
How do I find a company's Ashby board name?
It is the segment after `jobs.ashbyhq.com/` in their careers URL, and that segment is what this endpoint takes.
What are secondaryLocations for?
They list every additional place a role can be filled, each with structured country, region and locality fields. For remote roles scoped to particular countries, this is the field that actually answers the question.
Can I get salary ranges?
Sometimes. Pass `includeCompensation=true` and you will get ranges for employers who publish them, which many do not.
Tools that pair with this API
JobPosting Schema Generator
Generate JobPosting JSON-LD structured data for Google Jobs with salary, location, remote options and employment type. Free, with required-field warnings.
Salary to Hourly Calculator
Convert an annual salary to an hourly wage or an hourly rate back to a yearly salary, with monthly, weekly and daily pay equivalents. Free and private.
Strip HTML Tags
Remove all HTML tags and convert markup to clean plain text. Decode HTML entities and keep line breaks for block elements like paragraphs and headings.
Alternatives to Ashby Job Board API
If Ashby Job Board does not fit, these business & commerce apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| Arbeitnow Job Board | Free job board API with no key: developer and tech jobs across Europe with company, location, remote flag, salary tags and full descriptions. Tested example. | No key | Yes | 21 Aug 2026 |
| Remotive | Free remote jobs API with no key: curated remote positions across software, design, marketing and support with salary, category and company data. Tested example. | No key | Yes | 19 Aug 2026 |
| The Muse Jobs | Free job search API with no key for basic use: listings from vetted employers with company profiles, experience level and location filters. Tested curl example. | No key | Yes | 19 Aug 2026 |
| OpenHolidays | Free European holidays API with no key: public and school holidays for 25+ countries including regional variations, in multiple languages. Tested example. | No key | No | 19 Aug 2026 |
| Clearbit Autocomplete | Free company autocomplete API with no key: type a company name and get matching companies with domains and logo URLs. CORS enabled. Tested curl example. | No key | Yes | 19 Aug 2026 |
| Greenhouse Job Board | Free ATS job board API with no key: any company's open Greenhouse roles as JSON, with locations, requisition ids, custom metadata and GDPR flags. Tested example included. | No key | Yes | 21 Aug 2026 |
Ashby Job Board is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 21 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.