Ashby Jobs Scraper avatar

Ashby Jobs Scraper

Pricing

from $1.50 / 1,000 results

Go to Apify Store
Ashby Jobs Scraper

Ashby Jobs Scraper

Scrape every job posting from any Ashby-hosted job board via Ashby's own public keyless GraphQL API, no login or browser required. Get team names, workplace type, employment type, compensation bands, and a guaranteed working apply link for every posting, in one full-board call per org.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Categories

Share


🎯 What this scrapes

Ashby powers the careers page for a large slice of venture-backed startups and scale-ups. Every one of those boards is served by the same internal GraphQL endpoint (jobs.ashbyhq.com/api/non-user-graphql?op=ApiJobBoardWithTeams). This Actor talks to it directly: hand it one or more org slugs — the {orgSlug} in a jobs.ashbyhq.com/{orgSlug} board URL, e.g. openai — and it fetches the entire board in a single call, joins the response's own team hierarchy, and normalizes everything into one row schema. One scraper, every Ashby-hosted employer.

🔥 Features

  • 🔑 Keyless public GraphQL API — no OAuth, no token, no per-org setup; the same endpoint the careers page itself calls.
  • 📦 Whole board in one call — no pagination to chase; a 750-posting board comes back in a single response.
  • 🏢 Multi-org in one run — pass many org slugs; rows come back identically shaped, tagged with org_slug.
  • 🧩 Real team names, not guessesteam_name is joined from the response's own teams hierarchy, never a fabricated department field.
  • 🔗 Guaranteed apply linkapply_url is constructed and confirmed live-resolvable for every posting, no extra HTTP call.
  • 🔁 We retry with backoff + rotate browser fingerprintscurl-cffi presents a real browser handshake and retries transient 429/5xx so a large multi-org batch finishes instead of dying midway.
  • 🧊 Clean, typed rows — Pydantic-validated, ISO-8601 timestamps, stable IDs. Export JSON / CSV / Excel straight from the Apify Console.

💡 Use cases

  • Recruiting & sourcing — track what a target company is hiring for, where, and on which team.
  • Job-board aggregation — add dedicated Ashby coverage next to Workday / Greenhouse / Lever / SmartRecruiters in one pipeline.
  • Hiring-intent signal for SDR/GTM teams — open reqs are a leading indicator of budget and headcount growth.
  • HR-tech data pipelines — wire structured job rows into your CRM, dashboard, or n8n / Make workflow on a schedule.

⚙️ How to use it

  1. Click Try for free at the top of the Store listing.
  2. Add one or more Org slugs — the {orgSlug} from a jobs.ashbyhq.com/{orgSlug} careers URL (e.g. openai), or paste the full board URL.
  3. Optionally set Max results per org and a Location filter.
  4. Click Start. Rows stream into the dataset as each org's board is fetched.
  5. Export from Storage → Dataset as JSON, CSV, or Excel — or pull via the Apify API.

📥 Input

FieldTypeRequiredDefaultNotes
orgSlugsarrayAshby org slugs (the {orgSlug} in jobs.ashbyhq.com/{orgSlug}, e.g. openai), or full board URLs.
maxResultsPerOrgintegerno500Cap on rows emitted per org, applied after the single full-board fetch.
locationFilterstringnonullCase-insensitive substring match against a posting's location(s). Client-side only.
proxyConfigurationobjectno{"useApifyProxy": true}Apify Proxy configuration.

Example input

{
"orgSlugs": ["openai", "ramp"],
"maxResultsPerOrg": 100,
"locationFilter": null,
"proxyConfiguration": { "useApifyProxy": true }
}

📤 Output

One row per job posting.

FieldTypeNotes
posting_idstringStable Ashby posting id.
titlestringJob title.
org_slugstringThe org slug this posting belongs to.
team_namestring | nullJoined from the board's own team hierarchy; null if unassigned.
location_namestringPrimary location.
workplace_typestring | nullHybrid, OnSite, or Remote.
employment_typestring | nulle.g. FullTime.
secondary_locationsarrayAdditional locations, if any.
compensation_summarystring | nullCompensation band, when the org publishes one.
apply_urlstringGuaranteed live apply link.
scraped_atstringISO-8601 timestamp.

Example output

{
"posting_id": "7af121a1-d29a-4745-84c1-ef1b58a3b840",
"title": "3P Silicon Architect",
"org_slug": "openai",
"team_name": null,
"location_name": "San Francisco",
"workplace_type": "Hybrid",
"employment_type": "FullTime",
"secondary_locations": ["Seattle"],
"compensation_summary": "$342K – $555K • Offers Equity",
"apply_url": "https://jobs.ashbyhq.com/openai/7af121a1-d29a-4745-84c1-ef1b58a3b840",
"scraped_at": "2026-07-26T15:00:00Z"
}

💰 Pricing

Pay-per-event — you pay only for what lands in your dataset.

EventPrice
Actor start$0.005 (once per run)
Result$0.0015 per job posting ($1.50 / 1,000)

🚧 Limitations

  • Ashby coverage only — for Greenhouse, Lever, Workday, or SmartRecruiters, see the sibling Actors in the DevilScrapes fleet.
  • This Actor's GraphQL endpoint (jobs.ashbyhq.com/api/non-user-graphql) is distinct from the Ashby path inside multi-ats-jobs-scraper — different host, different fields — so the two are not redundant with each other.
  • No first-class department field — Ashby's schema doesn't expose one directly; team_name (the board's own team hierarchy) is the closest real grouping signal.
  • No org-name enrichment — org_slug is the literal input slug, not an org display name (the endpoint doesn't expose one).
  • No historical or removed postings — this Actor reflects the board's current, live state only.

❓ FAQ

Does this need an Ashby account or API key? No — it calls Ashby's own public, keyless board endpoint, the same one the careers page uses.

Can I pass a full board URL instead of a bare slug? Yes — either works. A full jobs.ashbyhq.com/{orgSlug} URL has its slug extracted automatically.

What happens if an org isn't on Ashby, or isn't currently hiring? The run continues and reports zero rows for that org — never a silent failure and never a crash.

💬 Your feedback

Found a field that's missing, or a board that doesn't behave as documented? Open an issue on the Actor's Store page or reach out via apify.com/DevilScrapes — we ship fixes fast.