Ashby job boards with employer-published salary data, via an Apify Actor, hosted MCP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
A Python and MCP quick-start for the Ashby job board API on Apify. Scrape Ashby jobs from any Ashby-hosted board, find companies that use Ashby, check whether a company has a board at all, and get the employer's own published salary ranges on every row, all without an API key or a login.
Ashby is the ATS behind the careers pages of many of the fastest-growing companies, including OpenAI, Ramp, Notion, Linear, and Cerebras. This Actor reads the public API that powers every jobs.ashbyhq.com board live at run time, so every row reflects what the employer's board says right now, not what an index remembered last week. Give it company names, board slugs, or URLs, or give it nothing and let it sweep a bundled directory of 2,700+ verified boards.
The Ashby job board API takes company names ("Black Semiconductor"), board slugs (cerebras), or any jobs.ashbyhq.com URL, and returns structured job rows: title, companyName, department, team, employmentType, workplaceType, isRemote, location, countriesDerived, datePublished, compensationSummary, flat salaryMin / salaryMax / salaryCurrency / salaryPeriod columns, an offersEquity flag, and the description as Markdown by default. Set publishedAfter to a window like 25h and only postings added since then come back, which is how the "Track New Ashby Job Postings Daily" task turns a schedule into a new-roles feed with zero state. Switch outputMode to companiesOnly and you get one row per company hiring through Ashby with a live open-jobs count, the fastest way to find companies that use Ashby. Filters run before billing, so a filtered job costs nothing.
Prerequisites: Python 3.11 or newer, uv, and a free Apify API token from apify.com.
Each example is a separate flag:
Every example asks for a small number of rows on purpose. You pay per row delivered, so confirm the shape of the data first, then raise maxJobs.
Live, not indexed. One request per board against the public API means every row is what the employer's board says right now. No stale index, no ghost jobs.
Salary data on the base row. Ashby employers publish structured compensation. Every job row carries the raw structure (salaryRaw), a normalized range (salaryDerived), flat salaryMin / salaryMax / salaryCurrency / salaryPeriod columns ready for CSV, per-tier ranges (salaryTiers), and an offersEquity flag.
Company checking with did-you-mean. Type a company name the way you know it; the Actor matches it to its board slug automatically, and a miss returns a clear not-found row with the closest known slugs.
Discovery built in. A bundled directory of 2,700+ verified Ashby boards powers companiesOnly mode and empty-input sweeps. Nobody else combines the directory and the live reader in one tool.
New postings without state. Every Ashby job carries the employer's own publish timestamp, so publishedAfter: "25h" on a daily schedule is a complete new-roles feed. No seen-lists, no delta stores.
Pay for exactly what you receive. No start fee, no minimum. The base job record is one event, salary data included; Markdown, HTML, text, the company-data enrichment, and the run report are add-ons billed only on rows that carry them.
Ready-made configurations with their own Store landing pages:
Schedule tip. Save your input as a Task in the Apify Console, set publishedAfter to 25h, and schedule it daily. From then on the dataset only ever contains postings added since the last run, so the pipeline stays current without anyone touching it.
Basic, matching the default run:
Advanced, remote roles with the company-data enrichment and a report:
Every parameter is optional.
| Parameter | Type | Default | Description |
|---|---|---|---|
companies | array | ["cerebras"] | Company names, board slugs, or any board, embed, or single-job URL, mixed freely. Empty sweeps the bundled directory. |
startUrls | array | empty | Same values in URL-list form; merged with companies. |
outputMode | string | jobs | jobs for full records, urlsOnly for the cheap index, companiesOnly for discovery. |
discoveryQuery | string | empty | Text match over the company directory for discovery and sweeps. |
verifyCompanies | boolean | true | Live-probe each discovered company; dead boards are never billed. |
titleKeywords | array | empty | Keep jobs whose title contains any of these. Runs before billing. |
departments | array | empty | Keep jobs in matching departments or teams. |
locationKeywords | array | empty | Keep jobs in matching locations or addresses. |
employmentTypes | array | empty | Keep only these types: FullTime, PartTime, Intern, Contract, Temporary. |
remoteOnly | boolean | false | Keep only jobs the board marks as remote. |
publishedAfter | string | empty | New postings: 24h, 7d, 2w, or an ISO date. |
includeDescriptionMarkdown | boolean | true | Add the description as Markdown (paid add-on). |
includeDescriptionHtml | boolean | false | Add the original HTML (paid add-on). |
includeDescriptionText | boolean | false | Add the board's plain text (paid add-on). |
includeCompanyData | boolean | false | Enrich rows from the job page: company website, logo, remote-eligibility countries, deadline, direct-apply (paid add-on). |
report | string | none | Write a Markdown or HTML run report to the key-value store (paid add-on). |
maxCompanies | integer | 25 | Cap on companies in sweeps and discovery. |
maxJobsPerCompany | integer | 0 | Per-board cap, 0 means all. |
maxJobs | integer | 100 | Whole-run cap, the main cost control. |
maxConcurrency | integer | 5 | Parallel discovery and enrichment requests. |
proxyConfiguration | object | direct | Optional Apify Proxy settings; direct connections work. |
A full job record:
A discovered company row:
Under the hood it reads the same public endpoint a scraper would. What you get is an API: structured JSON on demand, filters, stable field names, and no HTML unless you ask for it. If you have been maintaining your own scrape of Ashby boards, this is the version where someone else maintains the parser.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/ashby-jobs)<a href="https://allmcps.com/mcp/ashby-jobs"><img src="https://allmcps.com/api/badge/ashby-jobs?style=directory" alt="Ashby Jobs on AllMCPs" /></a>