Ashby Jobs Scraper: Job Boards, Salary Ranges, Equity, Remote avatar

Ashby Jobs Scraper: Job Boards, Salary Ranges, Equity, Remote

Pricing

from $0.80 / 1,000 jobs

Go to Apify Store
Ashby Jobs Scraper: Job Boards, Salary Ranges, Equity, Remote

Ashby Jobs Scraper: Job Boards, Salary Ranges, Equity, Remote

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.

Pricing

from $0.80 / 1,000 jobs

Rating

0.0

(0)

Developer

The Mine Works

The Mine Works

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

a day ago

Last modified

Share

Ashby Jobs Scraper: Job Boards with Salary and Equity

656 Ashby jobs from 5 company boards in 17 seconds, salary on 59% of them

From The Mine Works, makers of Threads Scraper and B2B Leads Finder, 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

Part of The Mine Works Jobs and hiring family: Foundit Monster India Jobs, Hirist Jobs Scraper, India Jobs MCP, Naukri Jobs Scraper, Shine.com Jobs Scraper, Internshala Scraper.

Guide and FAQs: Ashby Jobs Scraper on themineworks.com.

Try it in one minute

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

{
"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

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

{
"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

{
"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

{
"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

{
"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

{
"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

{
"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

ParameterTypeDefaultWhat it does
companiesarray 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.
keywordsarray of stringsnoneKeep jobs whose title has a word starting with one of these (engineer also matches Engineering Manager). Not case sensitive.
excludeKeywordsarray of stringsnoneDrop jobs whose title has a word starting with one of these, for example senior, intern.
locationsarray of stringsnoneKeep 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.
departmentsarray of stringsnoneKeep jobs whose department or team contains one of these, for example Engineering, Sales.
remoteOnlybooleanfalseKeep only jobs that are remote or offer a remote location.
postedWithinDaysintegernoneKeep only jobs published in the last N days, 1 to 365.
maxJobsPerCompanyinteger500 (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.
includeDescriptionbooleanfalseAdd the whole description as plain text in description. Costs nothing extra: Ashby sends it with the board.
onlyNewJobsbooleanfalseSkip, 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:

FieldMeaning
companyCompany display name
company_slugAshby board name
platformAlways ashby
job_idAshby job id; use it to deduplicate
titleJob title
departmentDepartment
teamTeam
locationPrimary location
locationsEvery location, as a list
is_remoteTrue when the job is remote or offers a remote location
employment_typefull-time, part-time, contract, intern or temporary
posted_atPublished, ISO 8601 UTC
job_urlLink to the posting
apply_urlLink to the application form
description_shortStart 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):

{
"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):

{
"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):

{
"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):

{
"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.

EventWhen it is chargedFree planBronze (Starter)Silver (Scale)Gold (Business)
job-scrapedOnce 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-startOnce 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 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"

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

Social media and video

Leads and business directories

Marketing, SEO and reviews

LinkedIn

Real estate

Science, health and government data

Company and business data

E-commerce and marketplaces

Food and local services

Developer and AI tools

More tools

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.