Ashby Jobs Scraper: Any Company's Job Board API
Pricing
from $1.20 / 1,000 job listings
Ashby Jobs Scraper: Any Company's Job Board API
Get every open job from any company's Ashby job board through the official public API: title, department, location, remote flag, compensation, posting date and description. Filter by keyword and location, and schedule it to get only new jobs. USD 1.50 per 1,000 jobs.
Pricing
from $1.20 / 1,000 job listings
Rating
0.0
(0)
Developer
JT Palms
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 days ago
Last modified
Categories
Share
Ashby Jobs Scraper: every open job from any company on Ashby
Give it a list of companies that hire with Ashby (OpenAI, Notion, Ramp, Linear and thousands of startups) and get back every open job as clean rows: title, department, team, all locations, workplace type, remote flag, employment type, salary range with the equity note, publish date, apply link and the description as plain text. It reads the official Ashby Job Postings API, so there is no browser, no proxy and no blocking. Even OpenAI's 800+ jobs take about a second.
USD 1.50 per 1,000 jobs. Companies that cannot be found are reported free.
What people use it for
- Sales signals from hiring. Ashby is popular with fast-growing startups, so their open roles are an early buying signal. Pull the jobs of your target accounts every week, filter by team or keyword, and send new roles to your CRM, Clay or Slack.
- Job boards and newsletters. Fill a startup, AI or remote job board, or a weekly jobs newsletter, straight from the source, with salary ranges where the company publishes them and a direct apply link.
- Recruiting market research. Compare hiring and pay across competitors by department, team, location and workplace type. Track how a company's open headcount changes over time.
- Job alerts. Schedule it with Only new jobs turned on and receive only postings that appeared since the last run, for example "remote engineering jobs at these 50 startups".
Sample output
A real row (description trimmed):
{"source": "ashby","company": "ramp","companyName": null,"jobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245","title": "Security Engineer, Cloud","department": "Engineering","team": "Backend","location": "New York, NY (HQ)","locations": ["New York, NY (HQ)", "Remote (Canada)", "Remote (US)", "Miami, FL"],"workplaceType": "hybrid","isRemote": true,"employmentType": "full_time","compensation": {"min": 211400,"max": 290600,"currency": "USD","interval": "year","summary": "$211.4K - $290.6K, Offers Equity"},"postedAt": "2026-04-07T17:12:35.753Z","updatedAt": null,"jobUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245","applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application","descriptionText": "ABOUT RAMP\n\nRamp is building the smart infrastructure for finance teams, embedded in the transaction flow of every dollar a business spends. ...","scrapedAt": "2026-09-28T18:45:00.000Z"}
Real runs: OpenAI returned 831 jobs (674 with a salary range), Ramp 158 (151 with a salary range), Notion 131, Linear 30.
How to use it
- Add companies to Companies, one per line. Any of these work:
- an organization name:
openai, or with spaces:The Browser Company - a board URL:
https://jobs.ashbyhq.com/openai - a job or application URL:
https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application
- an organization name:
- Optionally narrow the results:
- Title keywords:
engineer,AI,/product (manager|owner)/ - Locations:
London,New York,Remote, or a country likeCanada - Remote jobs only
- Departments:
Engineering,Sales(matches department or team) - Posted within (days):
7 - Max jobs per company: newest first
- Title keywords:
- Click Start, then export as CSV, JSON or Excel, or read the dataset through the Apify API.
Finding the organization name. Open the company's careers page and click a job. If the address starts with jobs.ashbyhq.com/<name>, that is the name. Companies that embed Ashby on their own site show ashby_jid= in job links; their name is usually the company name, so try that.
Job alerts on a schedule
- Turn on Only new jobs and set your filters.
- Save the input as a task and add a schedule (daily or weekly).
- Connect the results to email, Slack, Google Sheets or a webhook in the task's Integrations tab.
The first run returns all matching jobs. Every later run returns only jobs that were not delivered before.
Input
| Field | What it does |
|---|---|
companies | Organization names or careers page URLs. Required. |
keywords | Keep jobs whose title matches any keyword. Words match at their start (engineer finds "Engineering"); keywords of 3 letters or fewer must be a whole word (AI does not match "Chair"). /regex/ is supported. |
locations | Keep jobs whose locations (including secondary locations and the city, region and country of each address) contain any of these texts. |
remoteOnly | Keep only jobs that can be done remotely. |
departments | Keep jobs whose department or team contains any of these texts. |
postedWithinDays | Keep jobs published in the last N days. 0 = any date. |
maxJobsPerCompany | Newest jobs first, at most this many per company. 0 = no limit. |
onlyNewJobs | Output only jobs not delivered by an earlier run (see FAQ). |
includeDescription | Add the description as plain text, up to 5,000 characters. Default on. |
maxConcurrency | Companies fetched in parallel. Default 5. |
Output fields
| Field | Notes |
|---|---|
company | The Ashby organization name. companyName is null: the Ashby API does not return a display name. |
jobId, title | Ashby job ID and title. |
department, team | As the company categorizes the job. |
location, locations | The main location, and all locations including secondary ones. |
workplaceType, isRemote | remote, hybrid, onsite or null (Ashby's own field). isRemote is true for remote jobs and for hybrid jobs that also offer a remote location. |
employmentType | full_time, part_time, contract, temporary, internship or null. |
compensation | min, max, currency, interval of the salary (or hourly) component, and Ashby's own summary, for example "$207K - $285K, Offers Equity, Multiple Ranges". |
postedAt | When the job was published, ISO 8601 in UTC. updatedAt is null (not in the API). |
jobUrl, applyUrl | The Ashby job page and application form. |
descriptionText | Plain text, capped at 5,000 characters. |
error | Only on rows for companies that could not be read. These rows are free. |
A SUMMARY record in the run's key-value store lists every company with its number of open jobs, matches, new jobs and errors.
Pricing
| What | Price |
|---|---|
| Job listing in the results | USD 0.0015 (USD 1.50 per 1,000) |
| Company not found, wrong URL, or unreadable board | Free |
Example: 20 companies with 150 open jobs each is 3,000 jobs, USD 4.50. With Only new jobs on a daily schedule you pay only for new postings, usually a few cents a day.
Set a maximum cost per run in the run options and the actor stops cleanly when it gets there; everything saved so far stays in the dataset. Max jobs per company also caps the spend on very large boards.
Limits
- The actor identifies itself. Every request carries the user agent
Mozilla/5.0 (compatible; ashby-jobs/1.0; +https://apify.com/JTPalms/ashby-jobs), with plain request headers. It never pretends to be a browser. Some sites block bots; a blocked request is reported as an error, not hidden. - Only listed jobs the company publishes on its Ashby board. Unlisted or internal postings are not in the API.
- Salary ranges appear only when the company chooses to show compensation on its postings. When a job has several ranges (for example per city),
minandmaxspan all of them andsummarysays "Multiple Ranges". - Companies that moved to another system return a not-found row. Use the Greenhouse Jobs Scraper or Lever Jobs Scraper for companies on those platforms; they give the same output format.
Related actors
- Career Site Jobs: ATS Job Postings API for Greenhouse, Lever: Job postings from 17,000+ company career sites, read from the official job-board APIs of Greenhouse, Ashby, Lever, Workable, Teamtailor...
- Career Page Jobs Scraper: Auto-Detects the Job Board (ATS): Give company websites or careers pages and get every open job.
- Hiring Signals: Companies Hiring by Role, Team & Location: Find companies hiring right now, one row per company: open roles by team, seniority and location, roles posted in the last 7 and 30...
- Greenhouse Jobs Scraper: Any Company's Job Board API: Get every open job from any company's Greenhouse job board through the official public API: title, department, location, remote flag,...
FAQ
Is it legal? Yes. The actor reads Ashby's official Job Postings API (api.ashbyhq.com/posting-api), the public, no-login feed Ashby provides so companies can publish their open jobs on their own careers sites and syndicate them to job boards. It only sees published job postings. It collects no personal data, and it does not log in or submit anything. If you republish jobs, link to the applyUrl or jobUrl so candidates apply with the company.
How does Only new jobs work? The actor keeps, per company, the IDs of the jobs it has already delivered, in a key-value store named ashby-jobs-monitor in your own Apify account. Each run outputs only matching jobs whose ID is not in that list, then adds them. Jobs left out only by Max jobs per company are marked as seen too, so they do not come back later. Jobs cut off by your cost limit stay new for the next run. Closed jobs are dropped from the list automatically. If you add a filter later, older jobs that now match and were never delivered are delivered once. To start over, delete the store in Storage.
Why is companyName empty? The Ashby Job Postings API has no company display name, only the organization name in company.
Something missing or wrong? Open an issue with the company name and what you expected.
Is this an official Ashby product? No. It is an independent tool that reads Ashby's public job postings API. It is not affiliated with or endorsed by Ashby.