# Ashby Jobs Scraper - 4,100+ Job Boards & Full Details (`clearpath/ashby-jobs-scraper`) Actor

Collect jobs from 4,100+ Ashby job boards, or choose specific companies. Get full descriptions, salary ranges with pay tiers and equity, application questions and detailed locations. Filter by job title, location, remote work, salary and date.

- **URL**: https://apify.com/clearpath/ashby-jobs-scraper.md
- **Developed by:** [ClearPath](https://apify.com/clearpath) (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

from $1.39 / 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

[![Get jobs from 4,100+ Ashby job boards. Full descriptions, salary ranges and application questions.](https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/ashby-refresh-fbbabd75837c.png)](https://console.apify.com/actors/iCOaV0PjtL6fLWy96/input)

From **Clearpath**, creators of [Wellfound Jobs Scraper](https://apify.com/clearpath/wellfound-api-ppe) and [Workday Jobs Scraper](https://apify.com/clearpath/workday-jobs-scraper).

### Ashby jobs, with the details included

- **Find jobs across 4,100+ job boards.** Enter a job title and your filters, or choose specific companies. The built-in directory covers 4,136 Ashby boards; you can also name a company outside it.
- **See the pay.** Salary ranges, currencies, pay tiers, equity and bonus information where published. Not every job lists compensation.
- **Get the full job record.** Descriptions in text, HTML and Markdown, locations, team, skills and application questions. Job details are enabled in the example below and carry no extra charge.

<a href="https://console.apify.com/actors/iCOaV0PjtL6fLWy96/input" data-demo-cta="true"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/ashby-refresh-d23be1437095.svg" width="244" height="48" alt="Get Ashby jobs"></a>

#### Start with a job title

Open the [input page](https://console.apify.com/actors/iCOaV0PjtL6fLWy96/input), switch to JSON and paste:

```json
{
  "keywords": [
    "engineer"
  ],
  "maxResults": 25,
  "includeJobDetails": true
}
```

Replace `engineer` with any job title. Add `"companies": ["Ramp", "Notion"]` to choose employers, or leave companies empty to search across the directory. `maxResults` limits the whole export; remove it for all matching jobs. Download as JSON, CSV or Excel.

The image shows a saved Ramp posting: Security Engineer, Cloud, New York (hybrid), $211,400-$290,600 annual base pay, equity and 13 application questions. Published pay and questions vary by job, and postings change over time.

<table><tr><td style="padding:10px 14px;background:#473BCE;border:none;border-radius:4px 4px 0 0"><span style="color:#FAFAF9;font-size:14px;font-weight:700">Clearpath Job Data</span><span style="color:#EEF0FF;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Listings, salaries and company details</span></td></tr><tr><td style="padding:6px;border:1px solid #CAD0EA;border-top:none;border-radius:0 0 4px 4px;background:#EEF0FF"><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#DDE1FF"><span style="white-space:nowrap"><img src="https://api.apify.com/v2/key-value-stores/rfpznBPgVbyLYqNaQ/records/ashby-icon-4e7b06c9741c.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://console.apify.com/actors/iCOaV0PjtL6fLWy96/input" style="color:#473BCE;text-decoration:none;font-weight:700;font-size:13px">Ashby</a></span><br><span style="color:#45546A;font-size:12px">You are here</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-keGVAbEMrj3DrhJBX-DouWCU2GMR-icon-512.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/lever-jobs-scraper" style="color:#473BCE;text-decoration:none;font-weight:700;font-size:13px">Lever</a></span><br><span style="color:#45546A;font-size:12px">2,500+ boards</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-sqkHGNG0toRTR3ORV-zgctRChWeu-wellfound-jobs-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/wellfound-api-ppe" style="color:#473BCE;text-decoration:none;font-weight:700;font-size:13px">Wellfound</a></span><br><span style="color:#45546A;font-size:12px">Startup equity</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-kam9EOjkCveB9j6ET-o4Yg9S4Dwg-workday-jobs-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/workday-jobs-scraper" style="color:#473BCE;text-decoration:none;font-weight:700;font-size:13px">Workday</a></span><br><span style="color:#45546A;font-size:12px">Career sites</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-6rcYeTIheXEqHWWBX-lafSkrHVf0-indeed-jobs-api-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/indeed-jobs-scraper" style="color:#473BCE;text-decoration:none;font-weight:700;font-size:13px">Indeed</a></span><br><span style="color:#45546A;font-size:12px">Pay &amp; ratings</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-Z1aLN1Uv3ycPUkfTd-DwRlvqITvt-linkedin-jobs-scraper-icon.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/linkedin-jobs-scraper" style="color:#473BCE;text-decoration:none;font-weight:700;font-size:13px">LinkedIn</a></span><br><span style="color:#45546A;font-size:12px">Company profiles</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-GiLUIZMS4N0QQ8W7O-iS7Xl8y42f-icon-512.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/google-jobs-scraper" style="color:#473BCE;text-decoration:none;font-weight:700;font-size:13px">Google Jobs</a></span><br><span style="color:#45546A;font-size:12px">Many boards</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/NWYsOG96fMDy8ycdf-actor-WefmR41HxSeENoZ7M-CYr5o45qXo-glassdoor-reviews-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/glassdoor-jobs-scraper" style="color:#473BCE;text-decoration:none;font-weight:700;font-size:13px">Glassdoor</a></span><br><span style="color:#45546A;font-size:12px">Full ads &amp; pay</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-dAZ4bxSAzbE7CHIDn-m40A0nfhe4-himalayas-remote-jobs-scraper.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/himalayas-jobs-scraper" style="color:#473BCE;text-decoration:none;font-weight:700;font-size:13px">Himalayas</a></span><br><span style="color:#45546A;font-size:12px">Remote jobs</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-5rKD7CAZX6dSxxOFi-TYJpNSg7n5-gulftalent-scraper-logo.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/gulftalent-jobs-scraper" style="color:#473BCE;text-decoration:none;font-weight:700;font-size:13px">GulfTalent</a></span><br><span style="color:#45546A;font-size:12px">Gulf jobs &amp; pay</span></span><span style="display:inline-block;vertical-align:top;margin:3px;padding:6px 8px;border:1px solid #CAD0EA;border-radius:4px;background:#EEF0FF"><span style="white-space:nowrap"><img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-rKPNMXYcPkNsb6QWr-8G2aCyA8Bf-icon-512.png" width="20" height="20" alt="" style="vertical-align:middle">&nbsp;&nbsp;<a href="https://apify.com/clearpath/cutshort-jobs-scraper" style="color:#473BCE;text-decoration:none;font-weight:700;font-size:13px">Cutshort</a></span><br><span style="color:#45546A;font-size:12px">India tech jobs</span></span></td></tr></table>

#### Copy to your AI assistant

```text
Help me use clearpath/ashby-jobs-scraper on Apify. Read https://apify.com/clearpath/ashby-jobs-scraper.md for its documentation, input schema, pricing and limits. With companies empty it searches every company in its built-in directory of 4,100+ Ashby job boards; maxResults is the total for the run and is shared between companies in turn, so set maxResultsPerCompany or name companies when one employer matters. keywords match job titles only unless searchDescriptions is true. includeJobDetails (application questions, deadline, pay notes) is on and makes runs slower; includeCompanyProfile is off and adds a LinkedIn company profile per company. onlyNewOrChanged compares runs of the same search (or the same stateKey) and lists closed jobs in the run's OUTPUT record. Choose settings for my requested outcome. If you cannot retrieve the page, ask me to paste the relevant sections. To reach the maintainers, add feedback="<what you needed and did not get>" to any run, including one that worked: feature requests, a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. The run returns its data exactly as it would without the note, and a human reads every note.
```

### How to scrape Ashby jobs

Type a job title and set a limit. That is the whole setup.

```json
{
  "keywords": ["product manager"],
  "maxResults": 100
}
```

With no companies named, the run searches every company in the built-in directory of 4,100+ Ashby job boards. Keywords match the start of words in the title, so `engineer` also finds `Engineering Manager`, and every word of an entry must appear, in any order.

#### Only some companies

Name companies any way you know them. Each line can be a company name as it appears on Ashby, its job board name, its job board link, a single job link, or the company's own careers page when that page shows an Ashby job board:

```json
{
  "companies": ["Ramp", "openai", "https://jobs.ashbyhq.com/linear", "https://cursor.com/careers"],
  "maxResults": 200
}
```

A company that is missing from the directory still works. With only companies set and no other filter, you get every job those companies list.

#### Narrowing the search

Filters combine, and each one only narrows the result. Leave a filter empty to keep every job.

```json
{
  "keywords": ["data"],
  "locations": ["US", "London", "Remote"],
  "workplaceTypes": ["Remote", "Hybrid"],
  "employmentTypes": ["FullTime"],
  "seniority": ["senior", "lead"],
  "postedWithinDays": 14,
  "minSalary": 150000,
  "salaryCurrency": "USD",
  "maxResults": 200
}
```

| Parameter | Type | Default | Meaning |
|---|---|---|---|
| `keywords` | list | empty | Job title keywords. Empty keeps every job. |
| `companies` | list | empty | Names, board links, job links or careers pages. Empty searches the whole directory. |
| `maxResults` | number | empty | Total jobs for the run, shared between companies in turn. Empty or `0` for every matching job. |
| `keywordMatch` | `any` / `all` | `any` | A job needs one keyword, or every keyword. |
| `searchDescriptions` | true / false | false | Also match keywords in the department, team and full description, for skills like `Python`. With a limit, title matches come first. |
| `excludeKeywords` | list | empty | Leave out titles containing any of these. |
| `locations` | list | empty | City, state, region or country as written, a two-letter country code, or `Remote`. |
| `workplaceTypes` | list | empty | `Remote`, `Hybrid`, `OnSite`. |
| `employmentTypes` | list | empty | `FullTime`, `PartTime`, `Contract`, `Temporary`, `Intern`. |
| `departments` | list | empty | Department or team contains any of these. |
| `seniority` | list | empty | `intern`, `entry`, `mid`, `senior`, `lead`, `manager`, `director`, `executive`, read from the title. |
| `postedWithinDays` | number | empty | Only jobs published in the last N days. |
| `onlyWithSalary` | true / false | false | Only jobs that publish pay. |
| `minSalary` / `salaryCurrency` | number / text | empty | Yearly pay at least this much, optionally in one currency. Hourly, weekly and monthly pay is converted. |
| `maxResultsPerCompany` | number | empty | Cap per company. Empty or `0` for no cap. |
| `includeDescription` | true / false | true | Full description in text, HTML and Markdown. |
| `includeJobDetails` | true / false | true | Application questions, deadline, pay notes and legal entity. Makes runs slower; no extra charge. |
| `includeCompanyProfile` | true / false | false | The company's public LinkedIn profile on each of its jobs. Makes runs slower; no extra charge. |
| `onlyNewOrChanged` / `stateKey` | true / false, text | false | Save only jobs that are new or changed since the last run of the same search. |

### What data can you extract from Ashby?

Every job row carries:

- **The job:** title, department, team and full team chain, employment type and workplace (codes with readable labels), published date, application deadline, job link and application link.
- **Pay:** Ashby's own pay line, the salary range, currency and period, a yearly equivalent, every pay tier with its salary, equity, bonus and commission components, the company's pay notes, and pay read from the description where Ashby has none (`salarySource` says which).
- **Where:** every location with its address, city, region, US county, country and code, coordinates and time zone; remote locations and the countries candidates may work from.
- **What the text says:** responsibilities, requirements, nice-to-haves and benefits as lists, skills and business domains, seniority, years of experience, education, visa sponsorship, office days and weekly hours, published contact emails, the description language.
- **Applying:** every application question with its type, options and whether it is required, voluntary survey questions, whether a resume or cover letter is required.
- **The company:** name, board name, website and domain, logos, time zone, privacy notice, careers page, and with company profiles on its LinkedIn industry, size, employee count, followers, headquarters, type, founding year, specialties and office locations.

A real row from the run `{"companies": ["https://jobs.ashbyhq.com/harvey/8e513820-55f8-4cbd-8bdd-28a67992469c"], "includeDescription": false, "includeCompanyProfile": true}`, so the three full-description fields are empty here; with the default settings they carry the whole posting:

```json
{
  "id": "8e513820-55f8-4cbd-8bdd-28a67992469c",
  "globalId": "ashby:harvey:8e513820-55f8-4cbd-8bdd-28a67992469c",
  "title": "Staff Software Engineer, Full Stack - NYC",
  "companyName": "Harvey",
  "companySlug": "harvey",
  "ats": "ashby",
  "url": "https://jobs.ashbyhq.com/harvey/8e513820-55f8-4cbd-8bdd-28a67992469c",
  "applyUrl": "https://jobs.ashbyhq.com/harvey/8e513820-55f8-4cbd-8bdd-28a67992469c/application",
  "department": "Engineering",
  "departmentExternalName": "Engineering",
  "team": "Engineering",
  "teamPath": [
    "Engineering"
  ],
  "teamId": "beb9a423-85fd-4cff-9136-f35fc86b951e",
  "employmentType": "FullTime",
  "employmentTypeLabel": "Full-time",
  "workplaceType": "Hybrid",
  "workplaceTypeLabel": "Hybrid",
  "isRemote": true,
  "remoteFlag": true,
  "locationType": "TELECOMMUTE",
  "location": "New York",
  "locationId": "e6ecf27a-92d7-46c4-a4df-b029521f00a7",
  "locationAddress": {
    "street": null,
    "locality": "New York",
    "region": "New York",
    "postalCode": null,
    "country": "USA"
  },
  "secondaryLocations": [],
  "locations": [
    "New York"
  ],
  "locationDetails": [
    {
      "name": "New York",
      "city": "New York",
      "region": "New York",
      "regionCode": "NY",
      "county": null,
      "country": "United States",
      "countryCode": "US",
      "postalCode": null,
      "street": null,
      "latitude": 40.7143,
      "longitude": -74.006,
      "timezone": "America/New_York",
      "isRemote": false,
      "macroRegion": null
    }
  ],
  "locationsNormalized": [
    "New York, New York, United States"
  ],
  "cities": [
    "New York"
  ],
  "regions": [
    "New York"
  ],
  "counties": [],
  "countries": [
    "United States"
  ],
  "countryCodes": [
    "US"
  ],
  "timezones": [
    "America/New_York"
  ],
  "latitudes": [
    40.7143
  ],
  "longitudes": [
    -74.006
  ],
  "remoteLocations": [],
  "remoteCountryCodes": [],
  "applicantLocationRequirements": [
    "United States"
  ],
  "officeDaysPerWeek": null,
  "showsCompensation": true,
  "compensationSummary": "$231K – $340K • Offers Equity • Offers Bonus",
  "salarySummary": "$231K - $340K",
  "compensationTiers": [
    {
      "id": "e9ad68b0-0162-4723-b97a-8d92659aa274",
      "title": null,
      "summary": "$231K – $340K • Offers Equity • Offers Bonus",
      "additionalInformation": null,
      "components": [
        {
          "type": "EquityPercentage",
          "typeLabel": "Equity (percentage)",
          "summary": "Offers Equity",
          "interval": "NONE",
          "period": null,
          "currency": null,
          "min": null,
          "max": null
        },
        {
          "type": "Bonus",
          "typeLabel": "Bonus",
          "summary": "Offers Bonus",
          "interval": "1 YEAR",
          "period": "year",
          "currency": "USD",
          "min": null,
          "max": null
        },
        {
          "type": "Salary",
          "typeLabel": "Salary",
          "summary": "$231K – $340K",
          "interval": "1 YEAR",
          "period": "year",
          "currency": "USD",
          "min": 231000,
          "max": 340000
        }
      ]
    }
  ],
  "hasEquity": true,
  "hasBonus": true,
  "hasCommission": false,
  "equitySummary": "Offers Equity",
  "bonusSummary": "Offers Bonus",
  "commissionSummary": null,
  "salaryMin": 231000,
  "salaryMax": 340000,
  "salaryValue": null,
  "salaryCurrency": "USD",
  "salaryPeriod": "year",
  "salarySource": "structured",
  "salaryText": null,
  "salaryMinYearly": 231000,
  "salaryMaxYearly": 340000,
  "baseSalary": {
    "@type": "MonetaryAmount",
    "currency": "USD",
    "value": {
      "@type": "QuantitativeValue",
      "unitText": "YEAR",
      "minValue": 231000,
      "maxValue": 340000
    }
  },
  "publishedAt": "2026-05-15T03:43:31.768Z",
  "publishedDate": "2026-05-15",
  "applicationDeadline": null,
  "seniority": "lead",
  "seniorityLabel": "Lead, staff or principal",
  "experienceLevel": null,
  "yearsExperienceMin": null,
  "yearsExperienceMax": null,
  "visaSponsorship": null,
  "educationRequirements": [
    "Bachelor's degree"
  ],
  "hoursPerWeek": null,
  "jobCategory": "Engineering",
  "jobCategories": [
    "Engineering"
  ],
  "skills": [
    "LLM"
  ],
  "keywords": [
    "LLM",
    "AI",
    "SaaS"
  ],
  "responsibilities": [
    "Retrieval over peta-byte scale documents",
    "Organizational-level interfaces to collaborate with AI",
    "Managing dedicated GPU capacity across 5+ regions",
    "1000-step planning agents that help take companies public",
    "Government-level security for the world's most sensitive matters",
    "Evaluating LLMs across a 10k+ leaf taxonomy of tasks",
    "Internet-scale data collection from over 50+ jurisdictions"
  ],
  "requirements": [
    "10+ YoE (post-BS/MS) in a product focused full-stack software engineering role.",
    "Track record of building fast-growing SaaS products by leveraging PWA technologies.",
    "Track record of shipping highly intuitive products, strong attention to detail.",
    "Experience building backend platforms that can support multiple product lines.",
    "Strong programming skills and general Computer Science knowledge.",
    "Grit - experience working at early-stage startups is a plus."
  ],
  "niceToHaves": [],
  "benefits": [],
  "contactEmails": [
    "accommodations@harvey.ai"
  ],
  "hiringManagerName": null,
  "descriptionLanguage": "English",
  "descriptionLanguageCode": "en",
  "descriptionSnippet": "WHY HARVEY At Harvey, we’re transforming how legal and professional services operate. By combining frontier agentic AI, an enterprise-grade platform, and deep domain expertise, we’re reshaping how critical knowledge work gets done for decades to come. This is a rare chance to help build a generation…",
  "descriptionText": null,
  "descriptionHtml": null,
  "descriptionMarkdown": null,
  "descriptionStatus": "not_requested",
  "companyWebsite": "https://www.harvey.ai/",
  "companyDomain": "harvey.ai",
  "companyLogoUrl": "https://app.ashbyhq.com/api/images/org-theme-logo/868dcb5b-0628-48f1-b4f7-fed828a37e35/8ee59e75-fb38-4eb7-80b7-3b902c5da994/ba4329fb-4c07-4f68-9a2a-ea85386fb430.png",
  "companyWordmarkUrl": "https://app.ashbyhq.com/api/images/org-theme-wordmark/868dcb5b-0628-48f1-b4f7-fed828a37e35/8ee59e75-fb38-4eb7-80b7-3b902c5da994/38ba33d4-0012-4e37-9115-9d7e2d75f710.png",
  "companyTimezone": "America/Los_Angeles",
  "companyPrivacyPolicyUrl": null,
  "companyLegalEntityName": "Harvey",
  "companyId": "868dcb5b-0628-48f1-b4f7-fed828a37e35",
  "companyBoardIntro": null,
  "companyBoardFooter": null,
  "companyAllowsJobIndexing": true,
  "careersBackUrl": null,
  "applicationConfirmationMessage": null,
  "boardUrl": "https://jobs.ashbyhq.com/harvey",
  "careersPageUrl": "https://jobs.ashbyhq.com/harvey",
  "careersPageDomain": "jobs.ashbyhq.com",
  "compensationNotes": "Additionally, this role is eligible to participate in our equity plan and benefits program. Benefits include, but not limited to: Comprehensive health, dental and vision coverage, retirement benefits (401k match up to 4%), and flexible PTO.",
  "compensationGuideUrl": null,
  "applicationQuestions": [
    {
      "title": "Name",
      "type": "String",
      "typeLabel": "Short text",
      "required": true,
      "description": null,
      "options": null,
      "allowsMultiple": false,
      "section": "Basic Information",
      "sectionDescription": null,
      "isSystemField": true,
      "systemField": "Name"
    },
    {
      "title": "Email",
      "type": "Email",
      "typeLabel": "Email",
      "required": true,
      "description": null,
      "options": null,
      "allowsMultiple": false,
      "section": "Basic Information",
      "sectionDescription": null,
      "isSystemField": true,
      "systemField": "Email"
    },
    {
      "title": "Phone Number",
      "type": "Phone",
      "typeLabel": "Phone",
      "required": true,
      "description": null,
      "options": null,
      "allowsMultiple": false,
      "section": "Basic Information",
      "sectionDescription": null,
      "isSystemField": false,
      "systemField": null
    }
  ],
  "applicationQuestionCount": 12,
  "requiresResume": true,
  "requiresCoverLetter": false,
  "surveyQuestions": [],
  "applicationLimitNote": "A quick note before you apply: We want to give every application real attention, and we'd love your help with that.\nYou can submit up to 4 applications to Harvey in any 30-day period. Please choose the roles where your experience is the strongest match.\nIf you've applied to a role before and it didn't work out, you're welcome to reapply to it after 90 days.",
  "automatedProcessingNotice": null,
  "asksTextingConsent": false,
  "asksWhatsAppConsent": false,
  "isListed": true,
  "isConfidential": false,
  "detailsStatus": "included",
  "alsoListedOn": [],
  "matchScore": null,
  "matchedIn": null,
  "changeType": null,
  "changedFields": null,
  "firstSeenAt": null,
  "lastChangedAt": null,
  "companyProfile": {
    "name": "Harvey",
    "linkedinUrl": "https://www.linkedin.com/company/harvey-ai",
    "linkedinSlug": "harvey-ai",
    "description": "Harvey is domain-specific AI for legal and professional services. Adopted by Fortune 500 companies like AT&T, Verizon, Cox, Koch, KKR, Bridgewater, and by more than 200,000 lawyers across 3,500+ customers in 85+ countries, over 80% of AmLaw 100 law firms rely on Harvey to advance legal expertise faster across contract analysis, due diligence, compliance, and litigation. Backed by Sequoia Capital, OpenAI, GV, Kleiner Perkins, Coatue, and EQT, Harvey is the trusted partner in modernizing the legal industry.",
    "slogan": null,
    "website": "http://www.harvey.ai",
    "industry": "Software Development",
    "size": "1,001-5,000",
    "employeeCount": 2018,
    "followers": 234533,
    "headquarters": "San Francisco, California",
    "type": "Privately Held",
    "foundedYear": 2022,
    "specialties": null,
    "locations": [
      "201 3rd St Suites 500 San Francisco, California 94103, US",
      "New York, NY 10010, US",
      "London, GB",
      "Sydney, AU",
      "Toronto, CA",
      "Chicago, IL, US",
      "Mexico City, MX",
      "Dublin, IE",
      "Paris, FR",
      "Munich, DE",
      "Madrid, ES",
      "Milan, IT",
      "Stockholm, SE",
      "Singapore, SG",
      "Bengaluru, IN",
      "Dallas, Texas, US"
    ],
    "address": {
      "streetAddress": "201 3rd St",
      "addressLocality": "San Francisco",
      "addressRegion": "California",
      "postalCode": "94103",
      "addressCountry": "US"
    },
    "logoUrl": "https://media.licdn.com/dms/image/v2/D4E0BAQEkyRHeFI9sdA/company-logo_200_200/company-logo_200_200/0/1727880962073/harvey_ai_logo?e=2147483647&v=beta&t=zCj_QXCemsEw4QnVaDPtoWAUF4H9vAgaxHjP5PSVNKw",
    "isRecruitmentAgency": false
  },
  "scrapedAt": "2026-11-04T10:16:25.912Z"
}
```

`applicationQuestions` is shortened here to the first 3 of its 12 entries; every entry has the same keys. Everything else is the row exactly as the run saved it.

### Track new jobs between runs

Turn on `onlyNewOrChanged` and schedule the run, daily for example. The first run saves every matching job, marked `changeType: "new"`. Later runs save only jobs that are new or whose title, location, pay, deadline or description changed, marked `changed` with the fields in `changedFields`. Jobs that closed since the last run are listed in the run's `OUTPUT` record. Each distinct search keeps its own memory; set `stateKey` to name it.

### Pricing

You pay per job saved. On the Free plan a job costs $0.00199, so **$1.99 per 1,000 jobs**; Bronze pays $1.79, Silver $1.69, and Gold and above $1.39 per 1,000.

| Job charges | Free plan |
|---|---|
| 100 jobs | $0.20 |
| 1,000 jobs | $1.99 |
| 10,000 jobs | $19.90 |

Everything in a row is included in that price: application details, the full description, pay tiers, locations and, when you turn them on, company profiles. Jobs left out by a filter, a duplicate on a second brand board, or an unchanged job in change tracking are never charged. Set a maximum cost in the run options and the run stops cleanly when it is reached.

### FAQ

**How many companies does it cover?**
The built-in directory lists 4,136 Ashby job boards, 3,643 of them hiring at the time it was built, with 65,156 listed jobs between them. A company that is not in the directory still works when you name it.

**Do I need an Ashby account, a login or cookies?**
No. You get the jobs companies publish on their Ashby job boards, the same ones anyone can open.

**Why does a job have no pay?**
The company did not publish any. Ashby lets each company choose whether to show pay. Where pay appears only in the description, `salarySource` is `description`.

**Why are the results from many different companies?**
With a limit, the run takes each company's best match first, then each company's second, so one large employer cannot fill a small run. Raise `maxResults`, leave it empty, or set `maxResultsPerCompany` to shape this.

**What is `isRemote` versus the `Remote` location filter?**
`isRemote` follows Ashby, which marks hybrid jobs remote-eligible too. The `Remote` location filter keeps jobs set as remote or listing a remote location; use `workplaceTypes` to pick hybrid jobs.

**How fresh is the data?**
Every run collects the jobs as they are listed at that moment, so a job appears as soon as the company publishes it and is gone once it closes.

**Can I use the contact emails and names in the rows?**
They are what the company published in its job posting. Job postings are business information, but a posting can name a recruiter or a hiring manager. If you store or reuse personal details, the privacy rules that apply to you (such as GDPR or CCPA) are yours to follow; if unsure, check with a lawyer.

**Can I export to Google Sheets, Excel or my own system?**
Yes. Download the dataset as JSON, CSV or Excel, or connect it to Google Sheets, Make, Zapier or your own code through Apify's integrations.

### More Clearpath job scrapers

**Gulf and Middle East:** [GulfTalent](https://apify.com/clearpath/gulftalent-jobs-scraper).

**Global job search:** [Indeed](https://apify.com/clearpath/indeed-jobs-scraper) · [LinkedIn](https://apify.com/clearpath/linkedin-jobs-scraper) · [Google Jobs](https://apify.com/clearpath/google-jobs-scraper) · [Glassdoor](https://apify.com/clearpath/glassdoor-jobs-scraper) · [Workday](https://apify.com/clearpath/workday-jobs-scraper).

**Startups, remote and India:** [Wellfound](https://apify.com/clearpath/wellfound-api-ppe) · [Ashby](https://apify.com/clearpath/ashby-jobs-scraper) · [Lever](https://apify.com/clearpath/lever-jobs-scraper) · [Himalayas](https://apify.com/clearpath/himalayas-jobs-scraper) · [Cutshort](https://apify.com/clearpath/cutshort-jobs-scraper) · [Shine](https://apify.com/clearpath/shine-jobs-scraper).

**More job and company data:** [StepStone](https://apify.com/clearpath/stepstone-de-job-scraper) · [Totaljobs](https://apify.com/clearpath/totaljobs-uk-job-scraper) · [XING](https://apify.com/clearpath/xing-jobs-scraper) · [Welcome to the Jungle](https://apify.com/clearpath/welcome-to-the-jungle-jobs-api) · [Y Combinator](https://apify.com/clearpath/ycombinator-api-scraper).

### Support

Something missing or not working? Open an issue on the Issues tab or write to max@mapa.slmail.me, and we will look at it.

# Actor input Schema

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

Keep jobs whose title matches at least one of these, for example <code>engineer</code> or <code>product manager</code>. Words match at the start of a word (<code>engineer</code> also finds <code>Engineering Manager</code>), and every word of an entry must appear, in any order. Leave empty for every job.

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

Only these companies. Each line can be a company name as it appears on Ashby (<code>Ramp</code>), its job board name (<code>openai</code>), its job board link (<code>https://jobs.ashbyhq.com/linear</code>), a single job link, or the company's own careers page when it shows an Ashby job board. Leave empty to search every company in the directory.

## `maxResults` (type: `integer`):

Stop the run after this many jobs, across every company. Leave empty or set <code>0</code> to get every matching job; the directory lists more than 60,000.

## `keywordMatch` (type: `string`):

<b>Any keyword</b> keeps a job that matches one of the keywords. <b>Every keyword</b> keeps only jobs that match all of them.

## `searchDescriptions` (type: `boolean`):

Also keep jobs whose department, team or full description contains the keywords, for example skills such as <code>Python</code> or <code>Kubernetes</code>. With a result limit, title matches still come first. A run over the whole directory takes longer with this on.

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

Leave out jobs whose title contains any of these, for example <code>senior</code> or <code>intern</code>.

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

Keep jobs with at least one location matching any entry: a city, state, region or country as written (<code>Berlin</code>, <code>California</code>, <code>Europe</code>), a two-letter country code (<code>US</code>, <code>DE</code>), or <code>Remote</code> for jobs the company sets as remote or that list a remote location (hybrid jobs are not included; use Workplace for them).

## `workplaceTypes` (type: `array`):

Only jobs with these arrangements, as the company sets them on Ashby.

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

Only jobs of these types.

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

Keep jobs whose department or team contains any of these, for example <code>Engineering</code> or <code>Sales</code>.

## `seniority` (type: `array`):

Only jobs at these levels, read from the job title by fixed rules (for example <code>Senior</code>, <code>Staff</code>, <code>Head of</code>, <code>Intern</code>). Titles without a level word, such as <code>Software Engineer</code>, are left out when this is set.

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

Only jobs published in the last N days, for example <code>7</code>.

## `onlyWithSalary` (type: `boolean`):

Only jobs that publish pay, either as a pay range on Ashby or stated in the description.

## `minSalary` (type: `integer`):

Only jobs whose pay reaches this amount per year (hourly, weekly and monthly pay is converted). Jobs that publish no pay are left out when this is set.

## `salaryCurrency` (type: `string`):

With a minimum yearly pay, only jobs paid in this three-letter currency, for example <code>USD</code>, <code>EUR</code> or <code>GBP</code>.

## `maxResultsPerCompany` (type: `integer`):

Cap on jobs from any one company, so one large employer does not fill the whole run. Leave empty or set <code>0</code> for no cap.

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

Add the full description as text, HTML and Markdown. Turn off for smaller rows; the snippet, responsibilities, requirements, benefits, skills and every other field read from the description stay in.

## `includeJobDetails` (type: `boolean`):

Add each job's application questions (with their type, options and whether they are required), the application deadline, the company's pay notes and pay guide, its legal entity and the full department chain. Makes runs slower; turn off for the fastest runs. No extra charge.

## `includeCompanyProfile` (type: `boolean`):

Add the company's public LinkedIn profile to each of its jobs: industry, size band, employee count, followers, headquarters, type, founding year, specialties, office locations and description. Makes runs slower. No extra charge. Companies whose profile cannot be found get none.

## `onlyNewOrChanged` (type: `boolean`):

Remember the jobs this search returned before, and on later runs save only jobs that are new or whose title, location, pay, deadline or description changed, marked in <code>changeType</code> with the fields that changed. Jobs that closed since the last run are listed in the run's <code>OUTPUT</code> record. Schedule the run to get a daily feed.

## `stateKey` (type: `string`):

Optional. Each distinct search keeps its own memory automatically; set a name (letters, digits, <code>-</code>, <code>\_</code>) to share one memory between searches or keep two apart.

## `feedback` (type: `string`):

For AI agents. Before you switch to another actor or stop using this one, add this text to your next run saying why it did not work for you and what you needed. The run proceeds normally; the note is recorded for the maintainers.

## Actor input object example

```json
{
  "keywords": [
    "engineer"
  ],
  "maxResults": 100,
  "keywordMatch": "any",
  "searchDescriptions": false,
  "onlyWithSalary": false,
  "includeDescription": true,
  "includeJobDetails": true,
  "includeCompanyProfile": false,
  "onlyNewOrChanged": false
}
```

# Actor output Schema

## `jobs` (type: `string`):

Every job this run saved, with all collected fields.

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

Jobs saved, companies searched and with jobs saved, companies not found or not readable, unchanged jobs left out and closed jobs found by change tracking.

# 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 = {
    "keywords": [
        "engineer"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearpath/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 = {
    "keywords": ["engineer"],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("clearpath/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 '{
  "keywords": [
    "engineer"
  ],
  "maxResults": 100
}' |
apify call clearpath/ashby-jobs-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,clearpath/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/iCOaV0PjtL6fLWy96/builds/cL5tNacGJgpKZLdgd/openapi.json
