Ashby Jobs Scraper
Pricing
from $3.00 / 1,000 validated ashby job returneds
Ashby Jobs Scraper
Extract public Ashby job boards through the Posting API. Returns validated job postings with descriptions, compensation when published, departments, locations, timestamps, and application URLs for recruiting and job-market research.
Pricing
from $3.00 / 1,000 validated ashby job returneds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Ashby Jobs Scraper — Extract Public Job Postings via Ashby API
Ashby Jobs Scraper is an Apify Actor that extracts live, public job postings from Ashby-hosted career boards via the Ashby Posting API. Provide a board token such as notion or a public URL such as https://jobs.ashbyhq.com/notion, and the Actor returns a consistent, analysis-ready dataset with role details, work arrangements, published compensation, descriptions, and application links — for recruiters, market researchers, job-board operators, and AI-agent workflows.
Best fit and connected workflows
Choose this Actor when you know which companies use Ashby and need structured job data from their public career boards. Give it a board token or jobs.ashbyhq.com URL and receive one source-linked record per matching role.
Start with Jobs Scraper when the research brief spans several job platforms, then use this Actor for the Ashby boards in the shortlist. The focused scope is public Ashby postings; each row retains the employer's public application URL for the next human-reviewed step.
Common use cases
- Recruiting research: compare open roles, departments, locations, and published compensation across selected employers using Ashby.
- Hiring-signal monitoring: schedule repeat runs and detect new or removed roles with stable job and board identifiers.
- Job-feed production: turn employer-hosted vacancies into source-linked records for a niche job board or newsletter.
- Salary benchmarking: collect published compensation ranges across companies and roles.
- AI-agent research: give an agent a board token and receive compact records with clear provenance and application URLs.
Practical scenario: from board token to hiring signal
A market researcher starts with the public Ashby tokens for two selected companies and sets a modest maxResultsPerBoard. The Actor returns one normalized row per matching vacancy with jobId, boardToken, department, location, workplace type, published compensation when supplied, and source URLs. The researcher then groups rows by company and department, compares stable identifiers with a later scheduled dataset, and follows jobUrl or applyUrl when a role needs human review.
Input
| Field | Type | Required | Description |
|---|---|---|---|
boardTokens | array | Yes | Ashby board tokens or public jobs.ashbyhq.com URLs. Accepts bare tokens (e.g. notion) or full URLs (e.g. https://jobs.ashbyhq.com/ramp). |
maxResultsPerBoard | integer | No | Max jobs returned per board. Default 100. |
titleIncludes | string | No | Case-insensitive title filter (e.g. engineer). |
locationIncludes | string | No | Case-insensitive location filter (e.g. remote). |
departmentIncludes | string | No | Case-insensitive department filter (e.g. engineering). |
remoteOnly | boolean | No | Return only remote-eligible roles. Default false. |
includeDescriptions | boolean | No | Include full description text/HTML. Default true. Set false for compact metadata only. |
Example input:
{"boardTokens": ["notion","https://jobs.ashbyhq.com/ramp"],"maxResultsPerBoard": 100,"titleIncludes": "engineer","locationIncludes": "remote","remoteOnly": false,"includeDescriptions": true}
The Actor supports up to 25 unique boards per run and up to 1,000 returned jobs per board. Filters run before records are written or billed.
Output: data fields you receive
One validated dataset record is returned for each listed job that matches the filters.
| Field | Type | Description |
|---|---|---|
title | string | Public job title |
department | string | Internal department name |
team | string | Team name when available |
location | string | Primary location |
secondaryLocations | array | Additional locations |
isRemote | boolean | Whether the role allows remote work |
workplaceType | string | Workplace policy (e.g. hybrid, on-site) |
employmentType | string | Full-time, part-time, contract |
publishedAt | string | ISO timestamp when the job was posted |
descriptionText | string | Clean-text job description |
descriptionHtml | string | Original HTML description |
compensationMin | number | Published salary floor |
compensationMax | number | Published salary ceiling |
compensationCurrency | string | Salary currency code (e.g. USD) |
jobUrl | string | Canonical public job URL |
applyUrl | string | Direct application URL |
sourceApiUrl | string | Ashby API provenance URL |
scrapedAt | string | ISO timestamp of data collection |
Missing employer-supplied fields are represented as null; the Actor never invents compensation, departments, or locations.
Illustrative record shape:
{"title": "Senior Backend Engineer","department": "Engineering","location": "San Francisco, CA","isRemote": true,"workplaceType": "hybrid","employmentType": "full-time","compensationMin": 180000,"compensationMax": 220000,"compensationCurrency": "USD","publishedAt": "2026-07-15T12:00:00.000Z","jobUrl": "https://jobs.ashbyhq.com/notion/senior-backend-engineer","applyUrl": "https://jobs.ashbyhq.com/notion/senior-backend-engineer/application"}
How it works
- The Actor calls Ashby's public Posting API (
api.ashbyhq.com/posting-api/job-board/{token}) for each board token. - Filters (title, location, department, remote-only) are applied before validated writes and billing.
- Bounded retry handles transient HTTP failures.
- Output is flat and bounded for spreadsheets, databases, Apify integrations, and agent tools.
Pricing
This Actor uses Pay per event + platform usage. A result event is charged only for a validated Ashby job record written to the dataset; filtered records and unusable rows are excluded from job-result billing. See the live Pricing tab for current event details.
Event-count example
Collecting fifty validated jobs records fifty job-returned events in addition to the actor-start event and Apify platform usage. Use maxResultsPerBoard to set a clear result boundary before each request.
The Actor writes OUTPUT and RUN_SUMMARY to the default key-value store. These records include the run outcome, per-board coverage counts, validation diagnostics, warnings, and billed job-event total.
Use with AI agents (MCP)
This Actor is exposed in the Apify MCP server as apify--ashby-jobs-scraper. AI agents like Claude, ChatGPT, and Gemini can call it directly to fetch live Ashby job data.
Tool description: Extract public job postings from Ashby career boards through the Posting API. Use when the input contains Ashby board tokens or jobs.ashbyhq.com URLs. Returns one record per job with title, department, location, published compensation, provenance, and applyUrl. The focused scope is Ashby-hosted boards, with one event recorded per validated job.
Agent prompt card
Copy this into Claude, ChatGPT, or any MCP-connected agent:
Find all open engineering roles at companies using Ashby (e.g. Notion, Ramp). For each role, return the title, location, remote policy, compensation range if published, and the direct application URL. Group by company and sort by posting date. Read
OUTPUT.outcomebefore summarizing the dataset and preserve eachjobUrlas provenance.
Python agent example
from apify_client import ApifyClientimport osclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('khadinakbar/ashby-jobs-scraper').call(run_input={'boardTokens': ['https://jobs.ashbyhq.com/notion'],'remoteOnly': True,'maxResultsPerBoard': 50,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item['title'], item['applyUrl'])
API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('khadinakbar/ashby-jobs-scraper').call({boardTokens: ['notion'],titleIncludes: 'engineer',maxResultsPerBoard: 50,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Best results and outcome guidance
Ashby boards are retrieved through the public Posting API with bounded retries for temporary source responses. For the clearest research workflow:
- Provide a bare Ashby token or its matching public
jobs.ashbyhq.comURL. - Start with one board and a modest result boundary, then expand the saved input after confirming its rows.
- Use
includeDescriptions: falsefor a compact monitoring feed andtruefor detailed research. - Treat compensation as employer-supplied data and preserve null values when the employer leaves it unpublished.
- Read
OUTPUTfor the compact outcome andRUN_SUMMARYfor board coverage, warnings, validation counts, and event reconciliation.
Related Actors
- Start with Jobs Scraper when the brief combines several large job platforms, then route known Ashby boards here through the linked workflow above.
- Choose HH.RU Jobs Scraper when the next workflow needs public Russian vacancies with salary, skills, and regional filters.
- Choose Built In Jobs Scraper when the research starts from technology-company listings rather than a known Ashby board.
Design note
While reviewing and testing this Actor, I found that Ashby's public board token provides a stable input for people and agents. A practical workflow starts with a small result cap, confirms the board and filters in the dataset, then expands or schedules the same input. Keeping provenance fields beside every record supports later deduplication and hiring-signal comparisons.
FAQ
How do I scrape jobs from Ashby career boards? Provide the company's Ashby board token (e.g. notion) or their public jobs.ashbyhq.com URL in the boardTokens input. The Actor calls Ashby's public Posting API and returns structured job records with title, location, compensation, and application URLs.
What data fields does Ashby Jobs Scraper return? Each job record includes title, department, location, isRemote, workplaceType, employmentType, compensationMin/Max/Currency (when published), descriptionText, jobUrl, applyUrl, and publishedAt. See the Output table above for the full list.
Can I pass a company homepage? No. Supply the Ashby token or public jobs.ashbyhq.com URL. A regular company website may not expose an Ashby board token safely.
Why is compensation empty? Compensation is returned only if the employer makes it public through Ashby. An empty value means the employer left that field unpublished.
How can an AI agent use Ashby job data? Call apify--ashby-jobs-scraper through the Apify MCP server with a board token and bounded result cap. The prompt card above shows how to request structured hiring signals while retaining jobUrl, applyUrl, and execution provenance.
How do I review board coverage? RUN_SUMMARY lists each requested board with its source outcome and sanitized diagnostics, while OUTPUT provides the compact run outcome.
Responsible use
Use this Actor for legitimate hiring, recruiting, research, and job-market workflows. Respect applicable laws, the source site's terms, and the rights of job seekers and employers, and preserve human review for decisions that affect individuals.