Ashby Job Scraper (YC Startups & Salaries) avatar

Ashby Job Scraper (YC Startups & Salaries)

Pricing

from $0.65 / 1,000 results

Go to Apify Store
Ashby Job Scraper (YC Startups & Salaries)

Ashby Job Scraper (YC Startups & Salaries)

Fast 128MB HTTP scraper for AshbyHQ job boards (jobs.ashbyhq.com). Extracts structured compensation tiers (includeCompensation=true), accurate Remote/Hybrid classification, secondary locations, recruiter emails, company domains, and 35+ built-in AI & YC startup boards.

Pricing

from $0.65 / 1,000 results

Rating

0.0

(0)

Developer

Data Goose

Data Goose

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Security

Limited permissions

Share

Pull every open job from any AshbyHQ (jobs.ashbyhq.com) job board in seconds: structured includeCompensation=true salary tiers, accurate Remote vs Hybrid workplace classification, primary and secondary locations, recruiter emails, root corporate domains (openai.com, linear.app, supabase.com), and 35+ built-in AI & Y Combinator startup boards.

Runs as pure HTTP against the official Ashby Posting API (api.ashbyhq.com/posting-api/job-board/{slug}?includeCompensation=true) in 128 MB of memory.


Which companies can I scrape?

Any company that posts its jobs on Ashby, not just the ones in our built-in list. Add as many as you like to urls, in any of these forms:

You pasteExample
The company's Ashby board URLhttps://jobs.ashbyhq.com/openai
Just the company's slugopenai
A single job URLhttps://jobs.ashbyhq.com/openai/<job-id>

Finding the slug: open any job on the company's careers page and look at the address bar. The slug comes right after the domain: jobs.ashbyhq.com/openai/….

What's the built-in directory? An optional shortcut. Turn on includeBuiltInTechDirectory to also scan 35+ AI and Y Combinator companies without typing anything. It's off by default and never limits what you can scrape.

Optional Starter Directory (Any Ashby Board URL or Slug Works in urls)

You can scrape any company that uses Ashby by pasting its board URL or company slug into urls. The 36 companies below are only the optional built-in starter list (scanned when you turn on "includeBuiltInTechDirectory": true)—they never restrict which companies you can scrape:

openai (OpenAI — openai.com), linear (Linear — linear.app), ramp (Ramp — ramp.com), supabase (Supabase — supabase.com), posthog (PostHog — posthog.com), vanta (Vanta — vanta.com), langchain (LangChain — langchain.com), lovable (Lovable — lovable.dev), synthesia (Synthesia — synthesia.io), inngest (Inngest — inngest.com), cohere (Cohere — cohere.com), notion (Notion — notion.so), perplexity (Perplexity AI — perplexity.ai), elevenlabs (ElevenLabs — elevenlabs.io), replit (Replit — replit.com), zapier (Zapier — zapier.com), harvey (Harvey — harvey.ai), cursor (Cursor — cursor.com), decagon (Decagon — decagon.ai), sierra (Sierra — sierra.ai), modal (Modal — modal.com), baseten (Baseten — baseten.co), deepgram (Deepgram — deepgram.com), pinecone (Pinecone — pinecone.io), weaviate (Weaviate — weaviate.io), resend (Resend — resend.com), railway (Railway — railway.app), render (Render — render.com), clerk (Clerk — clerk.com), workos (WorkOS — workos.com), bland (Bland AI — bland.ai), pika (Pika — pika.art), runway (Runway — runwayml.com), zed (Zed — zed.dev), cognition (Cognition — cognition.ai), 1x (1X Technologies — 1x.tech)

Scraping companies across multiple ATS platforms? Combine this Actor with our other live 31-field job scrapers (All-in-One ATS Job Scraper, Workday Jobs Scraper, Greenhouse Jobs Scraper, Lever Jobs Scraper, SmartRecruiters Jobs Scraper, Rippling Jobs Scraper, Workable Jobs Scraper, Recruitee Jobs Scraper, Breezy HR Jobs Scraper)—all sharing the exact same 31-field output schema (companyDomain, salaryMin, salaryMax, recruiterEmails, isNew) so they plug into a single n8n, Make, Clay, or Python pipeline with zero field-mapping changes.


Quick Start — 3 Common Workflows

Click Save & Start in Apify Console to run the prefilled sample immediately, or copy one of these ready-to-run JSON inputs:

{
"urls": ["openai", "linear", "supabase"],
"keywordFilter": "engineer, ai, -intern",
"remoteOnly": true,
"maxJobsPerCompany": 25
}

2. Scheduled Daily Change Monitor (Emit Only Net-New Jobs)

Run on an hourly or daily schedule—the first run establishes your baseline, and every subsequent run outputs only newly posted jobs (while logging closed/expired job IDs to RUN_SUMMARY):

{
"urls": ["openai", "linear", "supabase"],
"onlyNewJobs": true,
"monitorName": "daily-watchlist",
"maxJobsPerCompany": 50
}

3. Zero-Input Built-In Directory Scan (B2B Hiring Signals & Clay / CRM Enrichment)

Scan our built-in directory of verified companies without hunting down board URLs—every output record includes companyDomain, salaryFormatted, and recruiterEmails:

{
"urls": [],
"includeBuiltInTechDirectory": true,
"deduplicateMultiLocationJobs": true,
"maxJobsPerCompany": 15,
"maxTotalJobs": 300
}

Why developers switch to this Actor

This Actor (data-goose)Typical HTML / cached Ashby scrapers
ArchitecturePure HTTP + JSON (?includeCompensation=true), 128 MB RAMHeadless Chrome (1–4 GB RAM) or stale cached feeds
Ashby isRemote Hybrid Bug Fix✅ Ashby's API sets isRemote: true even on Hybrid jobs—this Actor inspects workplaceType first so remoteOnly: true returns genuine Remote roles❌ Pollutes remote feeds with Hybrid in-office jobs
Structured Compensation Tiers✅ Extracts compensationTiers + summaryComponents (source: "ashby_compensation") + regex fallback on descriptionPlain❌ Misses structured compensation tiers
Built-In AI & YC Directory (35+ Boards)✅ Turn on includeBuiltInTechDirectory to scan OpenAI, Linear, Notion, Ramp, Supabase, PostHog, Perplexity, ElevenLabs, Vanta, Replit, LangChain, Cohere, Harvey, Cursor, Sierra, Modal, Cognition…❌ Manual URL hunting
B2B Enrichment (companyDomain & recruiterEmails)✅ Derives exact companyDomain (linear.app, supabase.com, openai.com) and extracts recruiterEmails❌ Missing
Change Monitor + Closed Job Tracking✅ onlyNewJobs emits net-new jobs and records closedJobCount + closedJobKeys in RUN_SUMMARY❌ Charges extra or lacks state

Drop-in migration from other job scrapers

Switching from bytepulselabs, fantastic-jobs, or parseforge requires zero changes to your input or downstream code:

  • Input: accepts urls as plain strings, bare slugs ("openai", "linear"), full Ashby URLs (https://jobs.ashbyhq.com/openai), single job URLs, or legacy request-list objects ([{"url": "..."}]).
  • Output: emits the unified 31-field schema shared across all 10 data-goose ATS scrapers.

Input

FieldTypeDefaultDescription
urlsarray["openai", "linear", "ramp", "supabase", "posthog"]Ashby board URLs, single job URLs, custom career URLs, or bare slugs
includeBuiltInTechDirectorybooleanfalseAlso scan 35+ top AI & Y Combinator startup boards on Ashby
keywordFilterstring–Case-insensitive regex, comma/pipe OR terms, and -exclude tokens (e.g. "ai, research, -intern")
excludeKeywordFilterstring–Comma-separated keywords or regex excluded from job titles (e.g. "Senior, Staff, Director")
departmentFilterstring–Substring match on department or team names
locationFilterstring–Substring match on primary and secondary locations
remoteOnlybooleanfalseOnly jobs classified as Remote
publishedAfterstring–YYYY-MM-DD. Keeps jobs published on or after this date
deduplicateMultiLocationJobsbooleanfalseMerge identical (companyToken, title, department) postings across cities into one item
onlyNewJobsbooleanfalseChange monitor: emit only net-new jobs and record closed jobs in RUN_SUMMARY
monitorNamestring"default"Separate state key for each watchlist or scheduled task
maxJobsPerCompanyinteger0Cap per board (0 = automatic fair share across boards)
maxTotalJobsinteger200Maximum total jobs across the run

Output (Unified 31-Field Schema)

{
"id": "c9f12345-6789-4abc-def0-1234567890ab",
"type": "Full-time",
"title": "Member of Technical Staff, Post-Training",
"description": "About the Role\nWe are looking for researchers and engineers to scale post-training...",
"locations": ["San Francisco, CA"],
"department": "Research",
"postingUrl": "https://jobs.ashbyhq.com/openai/c9f12345-6789-4abc-def0-1234567890ab",
"applyUrl": "https://jobs.ashbyhq.com/openai/c9f12345-6789-4abc-def0-1234567890ab/application",
"publishedAt": "2026-11-01T18:20:00.000+00:00",
"ats": "ashby",
"companyToken": "openai",
"companyName": "OpenAI",
"companyDomain": "openai.com",
"internalJobId": "c9f12345-6789-4abc-def0-1234567890ab",
"requisitionId": "REQ-4012",
"updatedAt": "2026-11-01T18:20:00.000+00:00",
"isRemote": false,
"workplaceType": "On-site",
"departments": ["Research"],
"offices": ["San Francisco, CA"],
"salaryMin": 295000.0,
"salaryMax": 440000.0,
"salaryCurrency": "USD",
"salaryInterval": "year",
"salaryFormatted": "USD 295,000 - 440,000 / year",
"salaryRanges": [
{
"min": 295000.0,
"max": 440000.0,
"currency": "USD",
"interval": "year",
"title": "Base Salary",
"blurb": "$295K – $440K • Offers Equity",
"formatted": "USD 295,000 - 440,000 / year",
"source": "ashby_compensation"
}
],
"recruiterEmails": [],
"metadata": {
"employmentType": "FullTime",
"ashbyWorkplaceType": "OnSite",
"shouldDisplayCompensation": true
},
"isNew": true,
"descriptionHtml": "<p>About the Role...</p>",
"questions": null
}

Pricing (Pay-Per-Event — No Monthly Subscription)

This Actor uses transparent Pay-Per-Event pricing. You only pay for jobs actually written to your dataset—filtered-out records and already-seen records (onlyNewJobs: true) cost $0.

Plan TierPer Job (apify-default-dataset-item)Cost per 1,000 JobsActor Start Fee (apify-actor-start)Proxy Cost
Free$0.00115$1.15$0.005$0 (no proxy needed)
Bronze$0.00095$0.95$0.005$0
Silver$0.00080$0.80$0.005$0
Gold / Platinum / Diamond$0.00065$0.65$0.005$0
  • 128 MB Memory Footprint: Runs in pure async HTTP (128 MB RAM instead of 1–4 GB headless browsers), reducing Apify compute usage by 8x–32x.
  • Built-in Spend Cap Protection: Use maxTotalJobs / maxJobsPerCompany or Apify's Maximum cost per run setting to cap spend to the exact cent.

API Usage

Python (apify-client)

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("data-goose/ashby-job-scraper").call(run_input={
"urls": ["openai", "linear", "ramp", "supabase", "posthog"],
"keywordFilter": "engineer, ai, -intern",
"onlyNewJobs": True,
"monitorName": "ashby-ai",
})
for job in client.dataset(run["defaultDatasetId"]).iterate_items():
print(job["companyName"], "|", job["companyDomain"], "|", job["title"], "|", job["salaryFormatted"])

n8n / Make (HTTP Request)

  • Method: POST
  • URL: https://api.apify.com/v2/acts/data-goose~ashby-job-scraper/run-sync-get-dataset-items
  • Headers: Authorization: Bearer {{APIFY_TOKEN}}, Content-Type: application/json
  • Body:
{
"urls": ["openai", "linear", "ramp", "supabase", "posthog"],
"remoteOnly": true,
"onlyNewJobs": true,
"monitorName": "n8n-ashby"
}

cURL

curl -X POST "https://api.apify.com/v2/acts/data-goose~ashby-job-scraper/run-sync-get-dataset-items" \
-H "Authorization: Bearer $APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls": ["openai", "linear", "ramp", "supabase"], "maxJobsPerCompany": 40}'

Explore the Data Goose Scraper Suite (128 MB Pure-HTTP)

All published Actors below run in 128 MB RAM with zero browser overhead and deterministic schemas (all ATS & Job scrapers share the exact same 31-field output schema):

ActorTarget Platform & Primary Use Case
All-in-One ATS Job Scraper (9 Platforms) (data-goose/career-site-job-scraper)All-in-One Router: auto-detects & scrapes all 9 ATS platforms from any company domain or URL
Workday Jobs Scraper: Unlimited API & Salaries (data-goose/workday-job-scraper)Workday: Fortune 500 & global enterprises (>2,000 facet bypass + 100+ built-in boards)
Greenhouse Jobs Scraper (Fast API & Salaries) (data-goose/greenhouse-job-scraper)Greenhouse: High-growth tech & unicorns (US + EU API, pay_transparency salaries)
Lever Jobs Scraper (US & EU Postings API) (data-goose/lever-job-scraper)Lever: Tech & scaleups (US + EU fallback, native salaryRange + combined lists)
Ashby Job Scraper (YC Startups & Salaries) (data-goose/ashby-job-scraper)Ashby: AI startups & YC companies (includeCompensation=true structured salary tiers)
SmartRecruiters Jobs Scraper (Enterprise API & Salaries) (data-goose/smartrecruiters-job-scraper)SmartRecruiters: Global enterprises (ServiceNow, Bosch, Experian, Eurofins)
Rippling Jobs Scraper (ATS Boards & Salaries) (data-goose/rippling-job-scraper)Rippling ATS: Modern startups & scaleups (/api/v1/board/{slug}/jobs + pay ranges)
Workable Jobs Scraper: Direct API & Salaries (data-goose/workable-job-scraper)Workable: Mid-market & European tech (v3 list + v2 detail orchestration)
Recruitee Jobs Scraper (Bulk API, Salaries & Emails) (data-goose/recruitee-job-scraper)Recruitee: European & remote-first companies (single-call /api/offers JSON)
Breezy HR Jobs Scraper (Salaries & Hiring Emails) (data-goose/breezyhr-job-scraper)Breezy HR: SMB & agencies (live /json feeds + full descriptions, no 100-item cap)

Looking for our E-Commerce, Lead Enrichment, Financial & Trend Scrapers? Browse all published 128 MB pure-HTTP scrapers on the Data Goose Apify Store Profile.


Support & Custom Contracting

  • 🐛 Bugs & feature requests: open an issue on the Actor's Issues tab or email us.
  • 📧 datagoosedev@gmail.com — we reply within one business day.