ashbyhq.com APIwww.ashbyhq.com ↗
Search and retrieve job postings from any Ashby-powered job board. Filter by title, department, and experience level. 3 endpoints, structured JSON output.
curl -X GET 'https://api.parse.bot/scraper/b2f8b925-5ff9-47c8-8771-18f96c070747/search_jobs?location=Canada&department=Engineering&organization=ashby&title_keywords=Engineer%2CManager%2CDesigner' \ -H 'X-API-Key: $PARSE_API_KEY'
Search job postings with optional filters for title keywords, department, and experience range. Extracts experience requirements from job descriptions. Returns all jobs when no filters are specified. Returns stale_input with kind 'input_not_found' if the organization slug does not exist.
| Param | Type | Description |
|---|---|---|
| department | string | Department name to filter by (partial match, case-insensitive) |
| organization | string | Organization slug on Ashby job board (e.g. 'ashby', 'openai') |
| max_experience | integer | Maximum years of experience to filter by (jobs without stated experience are included) |
| min_experience | integer | Minimum years of experience to filter by (jobs without stated experience are included) |
| title_keywords | string | Comma-separated title keywords to filter by (e.g. 'BizOps,Strategy,Deployment') |
{
"type": "object",
"fields": {
"jobs": "array of job objects with id, title, department, team, employment_type, location, secondary_locations, is_remote, workplace_type, published_at, job_url, apply_url, experience_requirements, years_of_experience, consulting_experience_mentioned, description_plain",
"matching_jobs": "integer number of jobs matching the applied filters",
"total_jobs_on_board": "integer total number of jobs on the board"
},
"sample": {
"data": {
"jobs": [
{
"id": "57ecd675-e7ad-4fad-8b4a-29c62d07e645",
"team": "Finance & Operations",
"title": "FP&A Manager",
"job_url": "https://jobs.ashbyhq.com/ashby/57ecd675-e7ad-4fad-8b4a-29c62d07e645",
"location": "Remote - US",
"apply_url": "https://jobs.ashbyhq.com/ashby/57ecd675-e7ad-4fad-8b4a-29c62d07e645/application",
"is_remote": true,
"department": "Finance & Operations",
"published_at": "2026-05-12T20:34:59.911+00:00",
"workplace_type": "Remote",
"employment_type": "FullTime",
"description_plain": "ABOUT THE JOB...",
"secondary_locations": [
"Remote - Canada"
],
"years_of_experience": [
5
],
"experience_requirements": "- You have 5+ years of experience, primarily in FP&A...",
"consulting_experience_mentioned": false
}
],
"matching_jobs": 1,
"total_jobs_on_board": 62
},
"status": "success"
}
}About the ashbyhq.com API
The Ashby HQ API gives developers structured access to job listings across Ashby-powered company job boards through 3 endpoints. The search_jobs endpoint supports filtering by title keywords, department name, and min/max years of experience — including automatic extraction of experience requirements from job descriptions. You can retrieve full job details by ID or enumerate all departments and teams with their posting counts.
Searching Jobs
The search_jobs endpoint accepts an organization slug (e.g. openai, ashby) to target a specific company's board. Optional filters include title_keywords (comma-separated, e.g. BizOps,Strategy), department (partial match, case-insensitive), and min_experience / max_experience integers in years. The response includes a jobs array — each entry carries id, title, department, team, employment_type, location, secondary_locations, is_remote, and workplace_type — along with matching_jobs and total_jobs_on_board counts. Jobs without a stated experience requirement are included regardless of experience filters. If the organization slug does not exist, the endpoint returns a stale_input result with kind input_not_found.
Job Details
get_job_details takes a job_id UUID (obtained from search_jobs results) and an optional organization slug. It returns a job object with the same structural fields as the search response, plus the full HTML job description and an experience level analysis derived from the posting content. The same stale_input / input_not_found behavior applies if either the job ID or organization slug is invalid.
Departments and Teams
list_departments returns every department on a given organization's board, each with a department name string, a job_count integer, and a nested teams array. Each team object includes the team name and its own job count. The endpoint also surfaces a total_jobs integer for the entire board. This is useful for building navigation or discovering which departments are actively hiring before issuing targeted search_jobs calls.
- Aggregate open roles across multiple Ashby-powered company boards into a single job feed
- Filter engineering or data science postings by experience range using min_experience and max_experience
- Build a department-level hiring dashboard using job_count data from list_departments
- Monitor a specific company's total_jobs_on_board count over time to track hiring velocity
- Extract structured team hierarchy from the teams array within each department object
- Match candidates to postings by comparing extracted experience requirements from job descriptions
- Populate role-detail pages with HTML job descriptions and location data from get_job_details
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.