Ashby Jobs Scraper: Ashby Job Board API avatar

Ashby Jobs Scraper: Ashby Job Board API

Pricing

$2.00 / 1,000 job scrapeds

Go to Apify Store
Ashby Jobs Scraper: Ashby Job Board API

Ashby Jobs Scraper: Ashby Job Board API

Ashby jobs scraper for any Ashby job board (jobs.ashbyhq.com). Exports all open Ashby jobs: title, location, remote flag, team, employment type, posting date, published salary range, description and apply URL. No API key. $2.00 per 1,000 jobs.

Pricing

$2.00 / 1,000 job scrapeds

Rating

0.0

(0)

Developer

PulseData

PulseData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Features

Limited permissions

Share

Ashby Jobs Scraper: Export Any Ashby Job Board

Ashby Jobs Scraper exports every listed job from one or more Ashby job boards (jobs.ashbyhq.com) as JSON, CSV or Excel. You give it board URLs or just board names such as ramp, and it returns one record per job with title, primary and secondary locations, country, workplace type, department, team, employment type, Ashby's compensation summary, the description in HTML and plain text, and the job and application URLs. It costs $2.00 per 1,000 jobs, so a 500-job board costs about $1.00.

Features

  • Scrape Ashby job boards by URL or by board name. A bare name like openai is expanded to https://jobs.ashbyhq.com/openai.
  • Export jobs.ashbyhq.com postings to CSV, JSON or Excel.
  • Get Ashby salary and equity info. The actor requests compensation from Ashby's public job board API, and many Ashby boards publish it.
  • Scrape Ashby jobs with all secondary locations, so a role listed in New York plus remote Canada shows both.
  • Filter Ashby jobs by keyword, location, remote and posting date. Ashby flags remote roles explicitly, which helps when you look for remote startup jobs.
  • Monitor new Ashby job postings of a company: with onlyNewJobs a scheduled run returns and charges only jobs it has not delivered before.
  • No API key and no login. Ashby publishes each board through a public posting API.

Use cases

  • Startup job boards: keep a curated list of Ashby-hosted startups in sync with their real openings.
  • Compensation research: compare published pay bands for one role across many startups that use Ashby.
  • Venture and market research: use hiring by department and location as a growth signal for portfolio or target companies.
  • Lead generation: startups that open their first "RevOps" or "Security Engineer" role are often about to buy tools for it.

Input

{
"startUrls": [
"https://jobs.ashbyhq.com/ramp",
"openai",
"linear"
],
"keywords": ["engineer", "product"],
"locations": ["San Francisco", "New York", "Remote"],
"remoteOnly": false,
"postedWithinDays": 7,
"includeDescription": true,
"maxJobsPerCompany": 0
}
FieldTypeDefaultWhat it does
startUrlsarray of strings(required)Ashby board URLs or bare board names, one per line.
keywordsarray[]Keep only jobs whose title contains one of these words (case-insensitive).
locationsarray[]Keep only jobs whose primary location, a secondary location or the country contains one of these strings.
remoteOnlybooleanfalseKeep only jobs Ashby marks as remote, or whose location mentions remote.
postedWithinDaysinteger0Keep only jobs published in the last N days. 0 means no limit.
includeDescriptionbooleantrueInclude descriptionHtml and descriptionText. Ashby returns both in the same request, so this adds no extra requests.
maxJobsPerCompanyinteger0Cap per board, applied after the filters. 0 means no limit.
onlyNewJobsbooleanfalseMonitor mode: output and charge only jobs not delivered on an earlier run.
monitorStoreNamestringemptyKey-value store that remembers delivered jobs. Empty means a name derived from the board URLs and filters.
proxyConfigurationobject{ "useApifyProxy": false }Optional Apify Proxy.

Accepted Ashby URL formats:

  • https://jobs.ashbyhq.com/ramp
  • https://jobs.ashbyhq.com/ramp/<job-id> (a single job URL; the actor reads the whole board)
  • ramp (bare board name)
  • https://company.com/careers (a page that embeds or links an Ashby board)

The board name is the path segment after jobs.ashbyhq.com/. Copy it from the board URL when in doubt.

Get new jobs from an Ashby board every day (monitor mode)

Turn on onlyNewJobs to get only the jobs a company posted since your last run:

{
"startUrls": ["https://jobs.ashbyhq.com/ramp"],
"maxJobsPerCompany": 0,
"onlyNewJobs": true
}

The IDs of delivered jobs are kept in a named key-value store in your Apify account, and later runs skip them. For alerts:

  1. Save the input as an Apify task.
  2. Add an Apify schedule, daily or weekly.
  3. Add an integration on the task (email, Slack, Google Sheets, Make, Zapier or a webhook) that fires on a succeeded run. Each run's dataset holds only the new jobs.

Details:

  • maxJobsPerCompany counts new jobs only. Leave it at 0 on the first run so that run remembers every open job.
  • Jobs seen before are neither output nor charged.
  • Without monitorStoreName the store name is derived from the board URLs and filters, so each input keeps its own history. Set a name to share history between inputs, or a new one to start over.
  • A job cut off by maxJobsPerCompany, the run timeout or the run's maximum cost is not remembered and comes on the next run. Schedule one run per store, since two parallel runs can deliver the same new job.

Output

One item per job:

{
"title": "Security Engineer, Cloud",
"company": "ramp",
"location": "New York, NY (HQ)",
"locations": ["New York, NY (HQ)", "Remote (Canada)"],
"country": "USA",
"remote": true,
"workplaceType": "Hybrid",
"department": "Engineering",
"team": "Backend",
"employmentType": "FullTime",
"seniority": null,
"salary": "$211.4K–$290.6K",
"postedAt": "2026-04-07T17:12:35.753Z",
"updatedAt": null,
"url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application",
"descriptionHtml": "<h1><strong>About Ramp</strong></h1><p>…</p>",
"descriptionText": "ABOUT RAMP\n\nRamp is building the smart infrastructure for finance teams…",
"ats": "ashby",
"atsJobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"sourceUrl": "https://jobs.ashbyhq.com/ramp",
"scrapedAt": "2026-09-25T08:31:10.000Z"
}

What Ashby exposes, and how it maps:

  • company is the board name from the URL.
  • location is the primary location; locations adds every secondary location Ashby lists.
  • country comes from the job's postal address in Ashby, when the company filled it in.
  • remote is Ashby's own remote flag (or remote in the location text). workplaceType is Ashby's value, such as OnSite, Hybrid or Remote. A hybrid job can still have remote: true if Ashby flags it as remote-eligible, as above.
  • department, team and employmentType (FullTime, PartTime, Intern, Contract, Temporary) are Ashby's fields as published.
  • salary is Ashby's compensation summary as a single text string, formatted the way the board shows it (it can include notes such as "Offers Equity"). There are no separate min, max or currency fields. If a board publishes no compensation, the actor looks for a range near the start of the description.
  • descriptionText is Ashby's own plain-text version of the description.
  • postedAt is Ashby's publish date. updatedAt and seniority are not published by Ashby.
  • Jobs the company has marked as unlisted in Ashby are skipped.

If a board name does not exist, the dataset gets one row with sourceUrl, ats, slug and an error message. Error rows are not charged.

Pricing

Pay per event: $0.002 per job saved to the dataset ($2.00 per 1,000 jobs). There is no start fee.

Worked example: 100 Ashby-hosted startups with an average of 35 open roles is 3,500 jobs, or $7.00 per full export. A weekly run with postedWithinDays: 7 over the same list usually returns a few hundred new jobs, which is well under $1.00. Jobs removed by filters and error rows are not charged.

In monitor mode only new jobs are charged: a weekly run over the same 100 startups that finds 120 new jobs costs 120 x $0.002 = $0.24, and a run with nothing new costs nothing in result events.

Example pages

Each of these opens a ready-made run with a real input:

FAQ

Is compensation always included? Only when the company publishes it on its Ashby board. The actor always asks Ashby for compensation, so if the board shows a pay band, you get it in salary.

How many jobs can it get from one board? All listed jobs. Ashby returns the whole board in one response; use maxJobsPerCompany to cap it.

What can it not do? It cannot see unlisted, internal or confidential Ashby jobs, application questions or candidate data. It does not render JavaScript, so if a careers page loads Ashby through a script, paste the jobs.ashbyhq.com URL.

Do I need proxies? Normally no. The actor retries rate limits and server errors with backoff. Turn on proxyConfiguration only if a large list returns HTTP 429.

Can I mix Ashby with Greenhouse or Lever boards? Use the Career Page Jobs Scraper for mixed lists. It auto-detects 12 applicant tracking systems.

Use it from Claude, ChatGPT or Cursor (Apify MCP server)

Add the Apify MCP server to Claude, ChatGPT, Cursor or any other MCP client with this URL, which loads only this actor as a tool:

https://mcp.apify.com?tools=pulsedata/ashby-jobs-scraper

Then ask, for example, "which research roles does OpenAI have open on Ashby, and what salary ranges do they list", and the assistant fills the input, runs the actor and reads the jobs back as JSON. Billing is the same as a normal run.

Paying from an AI agent without an Apify account (x402 and Skyfire)

An agent can buy a prepaid, spend-capped Apify token at Apify AGI, paid in USDC through x402 or from a Skyfire wallet, and use it for both the API and the MCP server. This actor runs with limited permissions, so it works with these tokens. The smallest token is $1, tokens expire 14 days after purchase, and Apify marks agentic payments as experimental.