Ashby Jobs Scraper avatar

Ashby Jobs Scraper

Pricing

from $0.75 / 1,000 jobs

Go to Apify Store
Ashby Jobs Scraper

Ashby Jobs Scraper

Scrape every active job from any Ashby-hosted careers board — titles, departments, teams, employment + workplace type, full descriptions, and optional salary bands. Live from the official Ashby Posting API. Filter by title, location, department, date, or remote-only at the source.

Pricing

from $0.75 / 1,000 jobs

Rating

0.0

(0)

Developer

Nate Schnell

Nate Schnell

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

What does Ashby Jobs Scraper do?

Ashby Jobs Scraper pulls every active job from any company's Ashby-hosted careers board, live from the official Ashby Posting API. Paste the org slug (e.g. ramp, notion, linear) or any jobs.ashbyhq.com/<slug> URL and get back a clean dataset of every posting — titles, departments, teams, locations (primary + secondary), remote/hybrid/on-site flags, full HTML and plain-text descriptions, and optional salary bands. Great for recruiters tracking competitor hiring at startups, lead-gen pipelines targeting hiring companies, job aggregators backfilling postings, and candidates watching a shortlist of employers.

What data can you extract from Ashby?

Each emitted record has 21 fields. The most common ones:

  • Identityid (Ashby UUID), board (slug), jobUrl, applyUrl
  • Title & orgtitle, department, team
  • TypeemploymentType (FullTime / PartTime / Contract / Intern / Temporary), workplaceType (Remote / Hybrid / OnSite), isRemote
  • Locationlocation (primary string), secondaryLocations[] (each with a postal address), top-level address
  • TimingpublishedAt, isListed
  • DescriptiondescriptionHtml, descriptionText (Ashby's descriptionPlain, lightly tidied)
  • Salary — optional compensation block (tier summary, components, currency, interval, equity) plus a flat compensationSummary string. Populated when the company publishes pay on their Ashby board — common for US and Canada roles.

Every Ashby-exposed field is preserved so records can be joined back to internal hiring data via the job UUID.

How to use Ashby Jobs Scraper

  1. Create a free Apify account.
  2. Open Ashby Jobs Scraper and click Try for free.
  3. Paste one or more org slugs or URLs into Ashby boards. The slug is the first path segment after jobs.ashbyhq.com/ — e.g. jobs.ashbyhq.com/rampramp.
  4. (Optional) Add filters: Title includes, Department includes, Workplace type, Remote only, Only jobs published after, etc. Filtering runs at the source, before billing.
  5. (Optional) Turn on Include salary / compensation to add pay bands per job.
  6. Click Save & Start. Each board returns in 1–10 seconds depending on size.
  7. Download results from the Storage tab in JSON, CSV, Excel, XML, or HTML.

How much does it cost?

Ashby Jobs Scraper is pay-per-result: one event per emitted job, regardless of how many boards you query.

  • $0.00075 per job ($0.75 per 1,000 jobs) — flat rate across all plans
  • The Apify Free plan includes $5/month of credit, enough for ~6,500 free jobs.
  • No minimum — pull 1 job or 50,000.
  • Filters are applied at the source, so filtered-out jobs aren't billed.

Cost tip: setting includeDescription: false doesn't change the per-job price, but it cuts the dataset size by ~90% if you only need titles and links.

Input

Required: boards (array of slugs or URLs). Every other field is optional.

{
"boards": ["ramp", "notion", "https://jobs.ashbyhq.com/linear"],
"includeDescription": true,
"includeCompensation": true,
"titleFilter": ["engineer", "designer"],
"workplaceTypeFilter": ["Remote", "Hybrid"],
"departmentFilter": ["engineering"],
"remoteOnly": false,
"publishedAfter": "2026-04-01",
"maxItems": 200
}

See the Input tab for every field with help text. Common patterns:

  • Pull everything from one company: { "boards": ["ramp"] }
  • Just titles and links (cheap fast pull): { "boards": ["ramp"], "includeDescription": false }
  • Remote engineering jobs with salary across several companies: { "boards": ["ramp","notion","linear"], "remoteOnly": true, "departmentFilter": ["engineering"], "includeCompensation": true }
  • Build an LLM-friendly dataset: { "boards": ["ramp"], "parseDescription": true } (Ashby ships plain text natively — only enable parseDescription for fallback)

Output

One record per active job. Sample (with includeCompensation: true):

{
"id": "34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"board": "ramp",
"title": "Security Engineer, Cloud",
"department": "Engineering",
"team": "Backend",
"employmentType": "FullTime",
"location": "New York, NY (HQ)",
"secondaryLocations": [
{ "location": "Miami, FL", "address": { "postalAddress": { "addressLocality": "Miami", "addressRegion": "Florida", "addressCountry": "USA" } } },
{ "location": "Remote (US)", "address": { "postalAddress": { "addressLocality": null, "addressRegion": null, "addressCountry": "United States" } } }
],
"isRemote": true,
"workplaceType": "Hybrid",
"isListed": true,
"publishedAt": "2026-04-07T17:12:35.753+00:00",
"jobUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application",
"address": { "postalAddress": { "addressLocality": "New York City", "addressRegion": "NY", "addressCountry": "USA" } },
"descriptionHtml": "<h1><strong>About Ramp</strong></h1><p>...</p>",
"descriptionText": "ABOUT RAMP\n\nRamp is building ...",
"compensation": {
"compensationTierSummary": "$211.4K – $290.6K • Offers Equity",
"scrapeableCompensationSalarySummary": "$211.4K - $290.6K",
"compensationTiers": [/* ... */],
"summaryComponents": [
{ "compensationType": "Salary", "interval": "1 YEAR", "currencyCode": "USD", "minValue": 211400, "maxValue": 290600 },
{ "compensationType": "EquityPercentage", "interval": "NONE", "currencyCode": null, "minValue": null, "maxValue": null }
]
},
"compensationSummary": "$211.4K – $290.6K • Offers Equity",
"scrapedAt": "2026-05-21T20:00:00Z",
"source": "https://api.ashbyhq.com/posting-api/job-board/ramp?includeCompensation=true"
}

Empty boards return zero records (Ashby responds 200 with {"jobs":[]}). Boards that don't exist or have moved off Ashby log a warning and skip — your run isn't billed for them.

Integrations

Ashby Jobs Scraper works with the full Apify integration set: Make, Zapier, n8n, Slack, Google Drive, GitHub, Airbyte, scheduled runs, and the Apify API. Trigger runs from your CRM, push fresh jobs into a Sheet or a database, or fan out webhook notifications when new postings appear. See Apify integrations.

  • Greenhouse Jobs Scraper — same shape for companies on Greenhouse (Airbnb, Stripe, Figma, Dropbox, etc.).
  • Indeed Jobs Scraper — for jobs hosted on Indeed (millions of postings across all employers, not just ATS-using companies).
  • For multi-ATS aggregation across Workday + Lever + Ashby + Greenhouse and 50 other systems, the closest fit on the Store is fantastic-jobs/career-site-job-listing-api — it's a DB query against a pre-crawled index, not a live scrape.

FAQ

How does Ashby Jobs Scraper work?

It hits https://api.ashbyhq.com/posting-api/job-board/{slug} — Ashby's official public Posting API — and normalizes the response into the dataset schema. Adding includeCompensation=true fetches the same endpoint with salary blocks attached. No login, no proxy, no headless browser.

Can I use Ashby Jobs Scraper as an API?

Yes. Trigger a run via the Apify REST API:

POST https://api.apify.com/v2/acts/schnellscrapers~ashby-jobs-scraper/runs?token=<APIFY_TOKEN>

The Apify console exposes a run-sync-get-dataset-items endpoint that returns the records inline when the run finishes — handy for synchronous integrations.

Can I use it in Python or Node.js?

from apify_client import ApifyClient
client = ApifyClient(token="<APIFY_TOKEN>")
run = client.actor("schnellscrapers/ashby-jobs-scraper").call(run_input={
"boards": ["ramp", "notion"],
"titleFilter": ["engineer"],
"includeCompensation": True,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["title"], item["department"], item["compensationSummary"])
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('schnellscrapers/ashby-jobs-scraper').call({
boards: ['ramp', 'notion'],
titleFilter: ['engineer'],
includeCompensation: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Ashby job boards are public-facing and the Posting API is documented for third-party use as the endpoint for embedded career sites. Ashby Jobs Scraper hits only the official API and respects robots.txt. As with any scraping, the data you collect is what's already publicly available; storing or republishing it must comply with the hiring company's terms and any applicable privacy laws (GDPR, CCPA).

Why is my company's board returning a 404?

The slug is the first path segment in the company's Ashby careers URL — jobs.ashbyhq.com/<slug>. Some companies have moved off Ashby or use a custom-domain alias that maps to a different slug. Open the company's careers page and check the URL the listings load from. Empty boards (the company is still on Ashby but has no published roles) return zero records, not a 404.

How fresh is the data?

Live — every run hits Ashby's API directly. Compare to DB-aggregator actors (e.g. fantastic-jobs/ashby-jobs-api), which have an indexing lag of up to 30 minutes per their docs.

Can I get salary data?

Yes — set includeCompensation: true. Pay bands appear for jobs where the company has opted to publish salary on their Ashby board (common for US/CA roles, less so elsewhere). Equity callouts, currency, and interval are preserved.

Your feedback

Found a bug, missing a field, or want a new filter? Open an issue on the actor's Issues tab or email me. Every report gets read.