# Ashby — Multi-Board Job Export (`jpmarketdata/ashby-multi-board-job-export`) Actor

Export current listed Ashby jobs from multiple selected employer boards with full source descriptions, all locations and public structured compensation. One $0.0004 job row, no start or description fee.

- **URL**: https://apify.com/jpmarketdata/ashby-multi-board-job-export.md
- **Developed by:** [h ichi](https://apify.com/jpmarketdata) (community)
- **Categories:** Jobs, Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.40 / 1,000 job exporteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Ashby — Multi-Board Job Export

**Price:** $0.0004 per delivered listed job, including its public description and compensation. No start or secondary fee.

Export all currently listed jobs from selected Ashby employer boards for a daily job feed or hiring research, with full source descriptions, all published locations and employer-approved structured compensation. Independent tool, not affiliated with Ashby or employers.

### Input

`boards` accepts1–5 exact public board slugs or HTTPS `jobs.ashbyhq.com/{board}` URLs, default Ramp and Ashby. It does not discover employers or search every Ashby board. Empty filters export the whole listed board. Optional title/location substrings, exact departments/employment types, source `remoteOnly` and inclusive ISO8601 `publishedAfter` filters run locally. Missing/invalid dates remain explicit and are retained. `maxJobsPerBoard` defaults500 (max2,000), `maxJobs` defaults1,000 (max5,000); all selected boards validate before delivery and global caps allocate fairly. `includeDescriptions=true` returns source plain text at the same per-job price.

### Output

One unique `(boardSlug,jobId)` job row with source title/department/team/employment type, primary and secondary locations, nullable `isRemote`, native workplace type, source last-publication date, complete contact-screened plain description and public job/apply links. `lastPublishedAt` is last published, not creation or update time; unknown flags/dates are not guessed. Structured compensation preserves every public publisher tier/component, currency, interval and nullable min/max. Return it only when `shouldDisplayCompensationOnJobPostings=true`; otherwise compensationVisible=false and fields are blank/empty. No inferred salary, currency conversion or equivalent offer ranges. Unlisted direct-link-only postings are excluded. Dataset rows are jobs only; uncharged `COVERAGE` and `RUN-SUMMARY` show source counts, filters/caps and delivered-row parity. Multi-board snapshots are not atomic. Overall zero/no-match is an uncharged error with free coverage.

### Limits

Official public posting API only, one whole-board JSON GET per selected board; no cursor/archive/detail/application request.256MB/300seconds,15HTTPrequests including robots,16MiB wire/24MiB decoded per API body,64MiB transfer and24MiB staged JSON. At least1s serial spacing per origin and applicable crawl-delay. Use pinned public DNS connections with correct TLS/Host; reject credentials, private/reserved destinations, arbitrary URLs, source redirects, actual API401/403,429,malformed/oversize responses and required-source failures before paid rows. No browser, paid dependency, proxy, cookies or private API.

Read `api.ashbyhq.com/robots.txt` every run. Valid200 rules apply; a Disallow on the posting path aborts. This documented public-API adapter explicitly records only this exact origin's robots401/404/410 as unavailable under RFC9309§2.3.1.3, while keeping actual API auth failures fatal. Robots403/429/5xx/network/malformed200/redirect fail closed. An unavailable robots file is not commercial authorization. Ashby terms apply; public endpoint access does not promise resale rights or bypass source controls.

### Privacy and charging

Listed public vacancy facts only; employer-approved compensation. Screen text/URLs for email/telephone/secret values; omit applicants, people/contacts, accounts, credentials, arbitrary raw extensions and unlisted material. Job/apply links are output only. Do not write raw HTML/source dumps to logs.

One `$0.0004` primary `job-exported` event per delivered unique job row, including plain description and public compensation. No start, summary, description, failure or secondary fee.100jobs cost$0.04. Buying managed export does not make the free source API exclusive. No paid-customer proof or globally cheapest claim is made.

# Actor input Schema

## `boards` (type: `array`):

One to five public Ashby board slugs or exact HTTPS jobs.ashbyhq.com board URLs. No job/application URLs or arbitrary domains. Defaults Ramp and Ashby. $0.0004 per delivered job.

## `maxJobsPerBoard` (type: `integer`):

One to2,000 listed job rows per selected employer; default500 completes ordinary Ramp and Ashby boards. Caps are explicit. $0.0004 per delivered job.

## `maxJobs` (type: `integer`):

One to5,000 delivered jobs across all selected boards after fair allocation; default1,000. All required boards validate before paid delivery. $0.0004 per delivered job.

## `includeDescriptions` (type: `boolean`):

Return source plain job text with contact patterns removed. Included in the same per-job price; empty when disabled or absent. $0.0004 per delivered job.

## `remoteOnly` (type: `boolean`):

Keep jobs whose source isRemote flag is true; unknown flags are excluded. No workplace-type inference. $0.0004 per delivered job.

## `publishedAfter` (type: `string`):

Optional ISO8601 timestamp with timezone, inclusive against source last publication. Empty includes all; retain and label jobs with missing/invalid dates. $0.0004 per delivered job.

## `titleKeywords` (type: `array`):

Optional case-insensitive substrings in the source role title. Empty includes every role. $0.0004 per delivered job.

## `locationKeywords` (type: `array`):

Optional case-insensitive substrings across primary and secondary source locations. Empty includes every location. $0.0004 per delivered job.

## `departments` (type: `array`):

Optional case-insensitive exact source department labels. Empty includes every department. $0.0004 per delivered job.

## `employmentTypes` (type: `array`):

Optional exact source labels, such as FullTime, PartTime, Intern, Contract or Temporary. Empty includes all source types. $0.0004 per delivered job.

## Actor input object example

```json
{
  "boards": [
    "ramp",
    "ashby"
  ],
  "maxJobsPerBoard": 500,
  "maxJobs": 1000,
  "includeDescriptions": true,
  "remoteOnly": false,
  "publishedAfter": "",
  "titleKeywords": [],
  "locationKeywords": [],
  "departments": [],
  "employmentTypes": []
}
```

# Actor output Schema

## `results` (type: `string`):

One validated job with public source data per row.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/ashby-multi-board-job-export").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/ashby-multi-board-job-export").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call jpmarketdata/ashby-multi-board-job-export --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jpmarketdata/ashby-multi-board-job-export"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/pTdprORGbstA8iHVj/builds/aSfpS59ockaC8EX6Q/openapi.json
