# Ashby Jobs Scraper: Job Boards, Salary Ranges, Equity, Remote (`themineworks/ashby-jobs-scraper`) Actor

Ashby jobs scraper for any company's Ashby job board: title, department, team, remote, hybrid or onsite, locations, published date, salary range, equity flag and apply link. Paste board links or company names, many per run, and filter by keyword, location or date. No login. $0.80 per 1,000 jobs.

- **URL**: https://apify.com/themineworks/ashby-jobs-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Jobs, Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 jobs

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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 Jobs Scraper: Job Boards with Salary and Equity

[![656 Ashby jobs from 5 company boards in 17 seconds, salary on 59% of them](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/ashby-jobs-scraper-hero.png)](https://console.apify.com/actors/KN2BvthW3CQsSdPYD/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 245,000 runs across 280+ public actors.

Last verified 29 Oct 2026: a live test run on Apify returned 60 jobs in 19 seconds.

### Why choose this actor?

- **Salary and equity as data.** Ashby lets employers show compensation on a posting, and the actor asks for it with the board. Where it is only written into the description, the actor reads the range from there. In our proof run **385 of 656 jobs (59%) came back with a salary minimum, maximum, currency and period**, and 288 said whether equity is offered. No extra request, no add-on.
- **Remote, hybrid or onsite, from Ashby itself.** Ashby marks every job with a workplace type, and the actor keeps it, plus every secondary location. Our proof run read **5 boards and returned 656 jobs in 17 seconds**: 370 hybrid, 99 remote, 88 onsite. A company that is not found is reported and never charged.
- **Only new jobs on a schedule.** Switch on "Only jobs not delivered before" and each run returns, and charges, only jobs no earlier run in your account delivered. In our test the second run skipped the 40 jobs the first had delivered. Jobs removed by your filters are never charged either.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/KN2BvthW3CQsSdPYD/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Jobs and hiring family:** [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Shine.com Jobs Scraper](https://apify.com/themineworks/shine-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Internshala Scraper](https://apify.com/themineworks/internshala-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

Guide and FAQs: [Ashby Jobs Scraper on themineworks.com](https://themineworks.com/actors/ashby-jobs-scraper/).

### Try it in one minute

Paste this input and press Start. It returns the 20 newest open jobs at Ramp in a few seconds:

```json
{
  "companies": ["ramp"],
  "maxJobsPerCompany": 20
}
```

You can name a company in five ways, and mix them in one list:

- **Board link**: `https://jobs.ashbyhq.com/ramp`. A single job or application link such as `https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application` reads that company's whole board.
- **API link**: `https://api.ashbyhq.com/posting-api/job-board/cursor`.
- **Board name**: `ramp`, `notion`, `linear`, `openai`. It is the word after the domain in the board link.
- **Company name**: a name with spaces is tried as one word and then with hyphens. Use a link when the board name is something else.
- **Your company's careers page**: `https://linear.app/careers`. The page is read once and searched for its Ashby board link. In our test linear.app/careers and ramp.com/careers both led to their boards. A page that loads its jobs later with JavaScript, or that refuses automated visitors, is reported and never charged.

On Apify's free plan every run returns the first 10 results as a preview, so you can check the data and the fields before you pay. A paid Apify plan returns every result: https://apify.com/pricing?fpr=ymnoit

#### Copy to your AI assistant

```text
themineworks/ashby-jobs-scraper on Apify. Returns open jobs from companies' Ashby job boards, one row per job with company name and website, title, department, team, workplace type (remote, hybrid or onsite), every location with city, region and country, employment type, published date, salary range (min, max, currency, period), equity flag, job and apply links, and a 500 character description (full text on request). Call ApifyClient("TOKEN").actor("themineworks/ashby-jobs-scraper").call(run_input={"companies": ["ramp", "https://jobs.ashbyhq.com/linear"], "keywords": ["engineer"], "maxJobsPerCompany": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: companies (Ashby board links, board names, company names or careers page links). Optional: keywords (title words), excludeKeywords, locations, departments, remoteOnly (default false), postedWithinDays, maxJobsPerCompany (default 500, 20 to 5,000), includeDescription (default false), onlyNewJobs (default false). Skip rows that have "_type": "info". Full spec: GET https://api.apify.com/v2/acts/themineworks~ashby-jobs-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **31 fields per job**: company name and website, board name, job id, title, department, team, primary and secondary locations, city, region and country, workplace type, remote flag, employment type, published date, salary range with its source, the compensation line as Ashby shows it, equity flag, job and apply links, a short description and, on request, the whole description as plain text.
- **Two requests per board.** One returns the whole board with descriptions and compensation (OpenAI's 831 open jobs in one answer), the other the company's display name and website, which Ashby's job API leaves out. Three boards are read at a time.
- **Filters that run before you pay**: title keywords and exclusions, locations (secondary locations count, and United States matches "San Francisco, CA" and "Remote (US)"), departments and teams, remote only, and posted within N days. Filtered jobs are never charged.
- **Newest first, with a cap per company.** Jobs are sorted by published date before the cap is applied, so a cap of 50 gives each company's 50 newest matching jobs. The cap runs from 20 to 5,000.
- **Only new jobs on repeat runs**, kept in a named key value store in your account, so a daily schedule returns only what was posted since.
- **Plain HTTP, no browser, no login.** 512 MB of memory. A run report (status per company, jobs on the board, matches, filtered counts, requests, charges) is saved as the `OUTPUT` record.

### How to use it

#### Basic: every open job at one company

```json
{
  "companies": ["https://jobs.ashbyhq.com/notion"],
  "maxJobsPerCompany": 500
}
```

Notion had 135 open jobs on 5 Oct 2026, so this returns all of them, newest first. Raise `maxJobsPerCompany` (up to 5,000) for very large boards.

#### Several companies at once

```json
{
  "companies": [
    "https://jobs.ashbyhq.com/ramp",
    "notion",
    "https://jobs.ashbyhq.com/linear",
    "openai",
    "https://api.ashbyhq.com/posting-api/job-board/cursor"
  ],
  "maxJobsPerCompany": 200,
  "includeDescription": true
}
```

This is the input of our proof run: 656 jobs in 17 seconds, with the whole description of every job. Up to 1,000 companies per run; a board given twice (for example as `ramp` and as its link) is read once.

#### Job: daily alert on new jobs at a watchlist of startups

```json
{
  "companies": ["ramp", "notion", "linear", "cursor", "openai"],
  "keywords": ["engineer", "designer"],
  "onlyNewJobs": true,
  "maxJobsPerCompany": 500
}
```

Schedule it daily (Console, Schedules, Add schedule). The first run delivers every matching open job; each later run delivers only jobs no earlier run delivered, so each run's dataset is the list of new postings. Send it to Slack or email with a webhook, Make or Zapier.

#### Job: compensation benchmarking with equity

```json
{
  "companies": ["ramp", "notion", "openai", "cursor"],
  "keywords": ["account executive", "account manager"],
  "locations": ["United States"],
  "maxJobsPerCompany": 100
}
```

Rows with published pay carry `salary_min`, `salary_max`, `salary_currency` and `salary_period`; `offers_equity` says whether the posted package includes equity, and `compensation_summary` keeps the line exactly as the board shows it. `salary_source` tells you whether the range came from Ashby's compensation data (`posting`) or was read from the description (`description`).

#### Job: remote roles only, posted this month

```json
{
  "companies": ["linear", "ramp", "notion", "cursor"],
  "remoteOnly": true,
  "postedWithinDays": 30
}
```

Remote means Ashby marks the job remote, or one of its locations is remote (for example a hybrid New York job that also lists "Remote (US)"). `workplace_type` keeps Ashby's own value so you can tell the two apart.

#### Job: hiring signals for sales prospecting

```json
{
  "companies": ["ramp", "notion", "linear", "openai"],
  "departments": ["sales", "marketing", "go to market", "gtm"],
  "postedWithinDays": 30,
  "maxJobsPerCompany": 200
}
```

A company opening several go to market roles this month is a warm account. Count rows per `company` and `department`, and use `company_website` to match accounts in your CRM.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `companies` | array of strings | `["https://jobs.ashbyhq.com/ramp", "notion", "https://jobs.ashbyhq.com/linear"]` | Required. Ashby board links, single job or API links, board names, company names, or careers page links, one per line. Up to 1,000 per run; repeats are read once. |
| `keywords` | array of strings | none | Keep jobs whose title has a word starting with one of these (`engineer` also matches Engineering Manager). Not case sensitive. |
| `excludeKeywords` | array of strings | none | Drop jobs whose title has a word starting with one of these, for example `senior`, `intern`. |
| `locations` | array of strings | none | Keep jobs with a location (primary or secondary) containing one of these, for example `London`, `Europe`, `Remote`. United States, USA and US match each other and US state codes; United Kingdom and UK match each other. |
| `departments` | array of strings | none | Keep jobs whose department or team contains one of these, for example `Engineering`, `Sales`. |
| `remoteOnly` | boolean | `false` | Keep only jobs that are remote or offer a remote location. |
| `postedWithinDays` | integer | none | Keep only jobs published in the last N days, 1 to 365. |
| `maxJobsPerCompany` | integer | `500` (the form starts at 20) | Most jobs delivered per company after the filters, newest first, 20 to 5,000. Also the most you pay for per company. |
| `includeDescription` | boolean | `false` | Add the whole description as plain text in `description`. Costs nothing extra: Ashby sends it with the board. |
| `onlyNewJobs` | boolean | `false` | Skip, and never charge, jobs an earlier run of this actor in your account already delivered. |

### What data do you get?

One row per open job. A field with no value (for example no published pay) is left out of the row rather than filled with an empty value.

**The company**: `company` (the display name the board shows, such as "OpenAI"), `company_website` (the website the board links to, when it has one), `company_slug` (the board name), `platform` (always `ashby`).

**The job**: `job_id` (Ashby's job id, stable across runs), `title`, `department`, `team`, `employment_type` (`full-time`, `part-time`, `contract`, `intern` or `temporary`).

**Where**: `location` (primary location as the board shows it), `locations` (primary and secondary locations), `city`, `region` and `country` (of the primary location, when the employer filled in the address), `workplace_type` (`remote`, `hybrid` or `onsite`, as Ashby publishes it), `is_remote` (true when the job is remote or offers a remote location).

**When**: `posted_at` (published, ISO 8601 UTC).

**Pay**: `salary_min`, `salary_max`, `salary_currency` (USD, EUR, GBP, CAD and others as published), `salary_period` (`year`, `month`, `week`, `day` or `hour`), `salary_text` (one readable line, for example "USD 79,000 to 154,000 per year"), `salary_source` (`posting` for Ashby's compensation data, `description` when read from the description), `compensation_summary` (the compensation line exactly as the board shows it, including equity and bonus notes), `offers_equity` (whether the posted compensation includes equity). Several tiers are widened to one lowest minimum and highest maximum.

**Links and text**: `job_url`, `apply_url` (the application form), `description_short` (the start of the description, one line, at most 500 characters), `description` (the whole description as plain text, only with `includeDescription` on).

**How it was read**: `input` (the company entry as you typed it), `scraped_at`.

At the end of a run with results, one extra row with `"_type": "info"` carries scheduling tips. It is never charged; filter it out with `_type`. A full run report (status per company, jobs on the board, matches, filtered counts, requests, charges) is saved as the `OUTPUT` record of the run's key value store.

#### Stable fields for automations

These fields were present in every one of the 656 rows of our proof run:

| Field | Meaning |
|---|---|
| `company` | Company display name |
| `company_slug` | Ashby board name |
| `platform` | Always `ashby` |
| `job_id` | Ashby job id; use it to deduplicate |
| `title` | Job title |
| `department` | Department |
| `team` | Team |
| `location` | Primary location |
| `locations` | Every location, as a list |
| `is_remote` | True when the job is remote or offers a remote location |
| `employment_type` | full-time, part-time, contract, intern or temporary |
| `posted_at` | Published, ISO 8601 UTC |
| `job_url` | Link to the posting |
| `apply_url` | Link to the application form |
| `description_short` | Start of the description, at most 500 characters |

These names will not change. New fields may be added, never renamed.

#### Output examples

A hybrid job that also lists a remote location, with salary and equity from Ashby (Ramp):

```json
{
  "company": "Ramp",
  "company_website": "https://ramp.com",
  "company_slug": "ramp",
  "platform": "ashby",
  "job_id": "1be5d28f-fa06-4b39-b81c-1e1e0cdd8337",
  "title": "Senior Analyst, Global Mobility & Immigration",
  "department": "People & Talent",
  "team": "People & Talent Operations",
  "location": "New York, NY (HQ)",
  "locations": ["New York, NY (HQ)", "San Francisco, CA", "Remote (US)"],
  "city": "New York City",
  "region": "NY",
  "country": "USA",
  "workplace_type": "hybrid",
  "is_remote": true,
  "employment_type": "full-time",
  "posted_at": "2026-10-01T17:36:54.891Z",
  "salary_min": 79000,
  "salary_max": 154000,
  "salary_currency": "USD",
  "salary_period": "year",
  "salary_text": "USD 79,000 to 154,000 per year",
  "salary_source": "posting",
  "offers_equity": true,
  "job_url": "https://jobs.ashbyhq.com/ramp/1be5d28f-fa06-4b39-b81c-1e1e0cdd8337",
  "apply_url": "https://jobs.ashbyhq.com/ramp/1be5d28f-fa06-4b39-b81c-1e1e0cdd8337/application",
  "description_short": "ABOUT RAMP Ramp is building the smart infrastructure for finance teams, embedded in the transaction flow of every dollar a business spends. We…",
  "input": "https://jobs.ashbyhq.com/ramp",
  "scraped_at": "2026-10-05T19:06:10.219Z"
}
```

A job whose salary was read from the description (Notion):

```json
{
  "company": "Notion",
  "company_website": "https://www.notion.com/",
  "company_slug": "notion",
  "platform": "ashby",
  "job_id": "92de7ece-b7d9-4b2a-b9cb-b978cc690a46",
  "title": "Payroll Analyst",
  "department": "Finance",
  "team": "Finance",
  "location": "San Francisco, California",
  "city": "San Francisco",
  "region": "California",
  "country": "United States",
  "workplace_type": "hybrid",
  "is_remote": false,
  "employment_type": "full-time",
  "posted_at": "2026-10-02T19:56:09.176Z",
  "salary_min": 120000,
  "salary_max": 140000,
  "salary_currency": "USD",
  "salary_period": "year",
  "salary_text": "USD 120,000 to 140,000 per year",
  "salary_source": "description",
  "job_url": "https://jobs.ashbyhq.com/notion/92de7ece-b7d9-4b2a-b9cb-b978cc690a46",
  "input": "notion"
}
```

A remote job with no published pay (Linear):

```json
{
  "company": "Linear",
  "company_website": "https://linear.app/",
  "company_slug": "linear",
  "platform": "ashby",
  "job_id": "ea0b5868-6d7a-46fa-99d8-207cd19357a6",
  "title": "Design Engineer (Web & Brand)",
  "department": "GTM",
  "team": "Magic",
  "location": "Europe",
  "locations": ["Europe"],
  "country": "European Union",
  "workplace_type": "remote",
  "is_remote": true,
  "employment_type": "full-time",
  "posted_at": "2026-09-15T18:05:47.890Z",
  "job_url": "https://jobs.ashbyhq.com/linear/ea0b5868-6d7a-46fa-99d8-207cd19357a6",
  "apply_url": "https://jobs.ashbyhq.com/linear/ea0b5868-6d7a-46fa-99d8-207cd19357a6/application",
  "description_short": "At Linear, we're building the product development system for teams and agents. AI is fundamentally changing how software gets built, and we’re…",
  "input": "https://jobs.ashbyhq.com/linear"
}
```

An onsite job with salary and equity at a large board (OpenAI, 831 open jobs read in one request):

```json
{
  "company": "OpenAI",
  "company_website": "https://openai.com/",
  "company_slug": "openai",
  "title": "ITAV Event Technical Producer",
  "department": "IT",
  "location": "San Francisco",
  "city": "San Francisco",
  "region": "California",
  "country": "United States",
  "workplace_type": "onsite",
  "is_remote": false,
  "employment_type": "full-time",
  "posted_at": "2026-10-02T19:55:42.991Z",
  "salary_min": 240000,
  "salary_max": 266000,
  "salary_currency": "USD",
  "salary_period": "year",
  "salary_text": "USD 240,000 to 266,000 per year",
  "salary_source": "posting",
  "offers_equity": true,
  "job_url": "https://jobs.ashbyhq.com/openai/d089cc3e-e81e-42b7-be77-23bbc9d02431"
}
```

### Pricing

Pay per event: you pay for the job rows you receive, plus a flat $0.005 per run, whatever memory you choose.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `job-scraped` | Once per job row saved to your dataset | $0.80 per 1,000 | $0.80 per 1,000 | $0.80 per 1,000 | $0.80 per 1,000 |
| `run-start` | Once per run, when it starts | $0.005 | $0.005 | $0.005 | $0.005 |

Free plan runs return up to 10 results each; paid plans have no cap.

The price per single job is the price per 1,000 divided by 1,000. 200 jobs from one company are 200 events.

Never charged:

- companies that are not found, careers pages with no board link, and boards with no open jobs;
- jobs removed by your filters (keywords, exclusions, locations, departments, remote only, posted within);
- jobs above your `maxJobsPerCompany` cap, and jobs hidden from the public board;
- a job already delivered in the same run;
- with `onlyNewJobs` on, jobs an earlier run in your account already delivered;
- the full description and the company name lookup (no extra charge);
- retries the actor makes on other IP addresses;
- the information row at the end of the run and the `OUTPUT` run report.

If you set a maximum charge for the run in Apify, the actor stops when it is reached and keeps everything delivered so far.

### FAQ

#### What do I get on the free plan?

On Apify's free plan every run returns the first 10 results as a preview, so you can check the data and the fields before you pay. A paid Apify plan returns every result with no cap, at the prices in the table above.

#### What exactly does this actor read?

Ashby's public job posting API, the same data a company's Ashby job board shows to any visitor: every listed job with its description, department, team, workplace type, locations and the compensation the employer chose to show. It also asks the board for the company's display name and website, as the board page itself does. Everything is read live when you run it; there is no cached index in between.

#### How many jobs can I get?

Every listed job on a board, up to 5,000 per company per run (`maxJobsPerCompany`), and up to 1,000 companies per run. OpenAI's board held 831 open jobs on 5 Oct 2026 and came back in one request.

#### Where does the salary come from, and why do some jobs have none?

First from the compensation the employer shows on the Ashby posting (`salary_source: "posting"`), with tiers widened to one lowest minimum and highest maximum. When that is empty, the actor reads a range written in the description, and only when a currency, two amounts and a pay word such as salary, pay or compensation appear together (`salary_source: "description"`). Many employers outside US pay transparency states show no pay at all; those rows simply have no salary fields. In our proof run 59% of jobs had one.

#### What is the difference between workplace_type and is_remote?

`workplace_type` is Ashby's own value: `remote`, `hybrid` or `onsite`. `is_remote` is true when the job is remote or lists a remote location among its secondary locations, as many hybrid jobs do ("New York, NY (HQ)" plus "Remote (US)"). Use `workplace_type` for the employer's main arrangement and `is_remote` for "can I do this job from home".

#### How do I find a company's Ashby board name?

Open the company's job board: the name is the word after the domain, `ramp` in `https://jobs.ashbyhq.com/ramp`. Or paste the company's careers page and let the actor find the board, which worked in our test for linear.app/careers and ramp.com/careers.

#### How fresh is the data?

As fresh as the board: every run asks Ashby at run time, so a job published a minute ago is included and a job closed a minute ago is not. `posted_at` is when the job was published.

#### How long does a run take?

Two requests per board, three boards at a time. Our five board proof run (656 jobs with full descriptions) took 17 seconds; an earlier run with the same five boards plus one careers page took 35 seconds, depending on how quickly the proxy answered. A list of 100 boards usually takes a few minutes.

#### What if a company is not found?

The run goes on with the others. The company gets a status in the `OUTPUT` record (`not_found`, `no_board_on_page` or `page_unreadable`) with the reason, and nothing is charged for it. If no job at all is delivered, the info row in the dataset says why.

#### Do I need an Ashby account, cookies or an API key?

No. Job boards are public, and the actor reads them without logging in. Requests go through Apify's datacenter proxy.

#### Can I monitor new jobs over time?

Yes. Switch on `onlyNewJobs` and schedule the actor. The ids of delivered jobs are kept in a named key value store in your Apify account; each run skips, and never charges, jobs a previous run delivered. The first run delivers up to `maxJobsPerCompany` per company, newest first; later runs deliver whatever you have not had yet, so after a catch up run each run returns only jobs posted since.

#### Can I get Greenhouse, Lever or Workday jobs too?

This actor reads Ashby only, so its input and output are built around Ashby's data. For several platforms in one run, our [Career Site Jobs Scraper](https://apify.com/themineworks/ats-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) reads Greenhouse, Lever, Ashby and Workday together.

#### Which formats can I download?

JSON, CSV, Excel, XML, RSS and an HTML table, from the run's Storage tab or the dataset API. `locations` stays a list in JSON and is flattened in CSV and Excel.

#### Can I use it from Claude, ChatGPT or Cursor (MCP)?

- Connector URL: https://mcp.apify.com/?tools=themineworks/ashby-jobs-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http ashby-jobs-scraper "https://mcp.apify.com/?tools=themineworks/ashby-jobs-scraper"`

#### Is it legal to scrape Ashby job boards?

The actor only reads job postings that employers publish for anyone to see, without signing in, and returns no personal contact details. You are responsible for how you use the data, for the terms of the sites involved, and for data protection law such as GDPR and CCPA. If in doubt, ask a lawyer about your use case.

### Integrations

- **Google Sheets**: send each run's rows to a sheet with Apify's Google Sheets integration, or import the CSV link of the dataset.
- **Make, Zapier and n8n**: start the actor and read its dataset with the Apify apps and nodes, for example "new remote design jobs at our watchlist to Slack every morning".
- **Webhooks**: have Apify call your URL when a run succeeds, then fetch the dataset.
- **API and SDKs**: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

### More from The Mine Works

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Shine.com Jobs Scraper](https://apify.com/themineworks/shine-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Internshala Scraper](https://apify.com/themineworks/internshala-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Indeed Jobs Scraper](https://apify.com/themineworks/indeed-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instahyre Jobs Scraper](https://apify.com/themineworks/instahyre-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Apna Jobs Scraper](https://apify.com/themineworks/apna-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CutShort Jobs Scraper](https://apify.com/themineworks/cutshort-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Jobs Scraper](https://apify.com/themineworks/linkedin-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Recruiting & Jobs MCP](https://apify.com/themineworks/recruiting-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found an Ashby board that should work and does not? Open an issue in the Issues tab with the board link and the run ID, and we will look at it. For a new source or a field you need, email dmineworks@gmail.com.

*Paste Ashby boards, links or company names, filter by title, place, team and date, and get every open job back as a clean row with its workplace type, locations, salary range and equity flag, newest first.*

# Actor input Schema

## `companies` (type: `array`):

One company per line. Accepted: a board link (https://jobs.ashbyhq.com/ramp, or a single job or application link), an API link (api.ashbyhq.com/posting-api/job-board/ramp), a board name (ramp), a company name with spaces (tried as one word and with hyphens), or your company's own careers page that embeds its Ashby board (read once to find the board, never charged). Up to 1,000 companies per run; repeats are read once.

## `keywords` (type: `array`):

Keep only jobs whose title has a word starting with one of these, for example engineer (matches Engineering Manager too), data, sales. Not case sensitive. Leave empty for every title.

## `excludeKeywords` (type: `array`):

Drop jobs whose title has a word starting with one of these, for example senior, intern, director.

## `locations` (type: `array`):

Keep only jobs with a location that contains one of these, for example London, New York, Germany, Remote. United States, USA and US match each other, as do United Kingdom and UK. Every location of a job is checked, not only the first.

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

Keep only jobs whose Ashby department or team contains one of these words, for example Engineering or Sales. Not case sensitive.

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

Keep only jobs that are remote or offer a remote location.

## `postedWithinDays` (type: `integer`):

Keep only jobs posted in the last N days, for example 7. Leave empty for any date.

## `maxJobsPerCompany` (type: `integer`):

Most jobs delivered for any one company, counted after the filters, newest first. 20 to 5,000. Also the most you pay for per company. The form starts at 20 so a first run stays small; API calls that leave it out get 500.

## `includeDescription` (type: `boolean`):

Adds the whole job description as plain text (HTML removed). Every row always has a 500 character description_short. Ashby sends the description with the board, so this costs no extra request.

## `onlyNewJobs` (type: `boolean`):

For schedules: skip jobs an earlier run of this actor in your account already delivered, so each run returns and charges only jobs posted since. The list of delivered jobs is kept in a named key value store in your account.

## Actor input object example

```json
{
  "companies": [
    "https://jobs.ashbyhq.com/ramp",
    "notion",
    "https://jobs.ashbyhq.com/linear"
  ],
  "remoteOnly": false,
  "maxJobsPerCompany": 20,
  "includeDescription": false,
  "onlyNewJobs": false
}
```

# Actor output Schema

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

No description

## `summary` (type: `string`):

No description

# 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 = {
    "companies": [
        "https://jobs.ashbyhq.com/ramp",
        "notion",
        "https://jobs.ashbyhq.com/linear"
    ],
    "maxJobsPerCompany": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/ashby-jobs-scraper").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 = {
    "companies": [
        "https://jobs.ashbyhq.com/ramp",
        "notion",
        "https://jobs.ashbyhq.com/linear",
    ],
    "maxJobsPerCompany": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/ashby-jobs-scraper").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 '{
  "companies": [
    "https://jobs.ashbyhq.com/ramp",
    "notion",
    "https://jobs.ashbyhq.com/linear"
  ],
  "maxJobsPerCompany": 20
}' |
apify call themineworks/ashby-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/ashby-jobs-scraper"
        }
    }
}
```

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/KN2BvthW3CQsSdPYD/builds/5EBpfRDOXo8BfcuYj/openapi.json
