Extract live job postings from public Ashby company career boards.
Use this Actor to turn Ashby-hosted recruiting pages into clean, exportable job datasets for hiring intelligence, job-board operations, sales prospecting, and market research.
At a glance
- Input: Ashby company slugs such as
openai, or fullhttps://jobs.ashbyhq.com/<company>board URLs. - Output: One dataset row per public job posting, with title, team, location, department, job URL, IDs, timestamps, and optional descriptions.
- Best for: Hiring intelligence, job-board refreshes, target-account research, and sales triggers based on public hiring activity.
- Pricing unit: A start event per run plus one
resultevent for each saved job posting. - Login required: No. The Actor reads public Ashby job boards only.
What can it do?
Ashby Jobs Scraper collects open roles from public Ashby job boards such as openai, ramp, notion, perplexity, and other companies using jobs.ashbyhq.com.
It returns one dataset row per job posting, including the title, team, location, department, employment type, workplace type, compensation summary when available, job URL, posting IDs, and scrape timestamp.
You can also enable full job descriptions when you need role requirements, benefits, or long-form hiring content for analysis.
Who is it for?
- Recruiting analytics teams: Track which startups and technology companies are hiring.
- Sales and lead-generation teams: Find companies with active hiring signals.
- Job-board operators: Refresh Ashby-powered job listings.
- Market researchers: Compare teams, locations, functions, and compensation trends.
- Automation builders: Feed live hiring data into CRMs, dashboards, or alerts.
Why use this Actor?
Ashby is widely used by venture-backed and high-growth companies. Manually checking each board is slow, inconsistent, and hard to automate.
This Actor gives you repeatable structured output with filters, limits, and optional descriptions.
Common use cases
- Monitor live hiring at a list of target companies.
- Build a startup jobs dataset for a niche job board.
- Track which teams are expanding by company.
- Find companies hiring for sales, engineering, security, finance, or operations roles.
- Export job openings into Google Sheets, Airtable, Snowflake, or a CRM.
- Compare location patterns such as remote, New York, London, or San Francisco.
What data can you extract?
| Field | Description |
|---|---|
companySlug |
Ashby hosted board slug |
companyName |
Company name shown on the board |
jobId |
Ashby job identifier |
postingId |
Public posting identifier used in the job URL |
title |
Job title |
team |
Team name |
teamId |
Team identifier |
locationName |
Primary location |
secondaryLocations |
Additional locations |
employmentType |
Full-time, part-time, contract, or other value when available |
workplaceType |
Remote, hybrid, onsite, or similar value when available |
department |
Department name |
departmentId |
Department identifier |
publishedDate |
Posting publish date |
updatedAt |
Last update timestamp |
compensationTierSummary |
Compensation summary when displayed by the company |
jobUrl |
Public Ashby job URL |
descriptionHtml |
Full description HTML when enabled |
descriptionText |
Plain-text description when enabled |
scrapedAt |
Timestamp for the scrape |
Example input
{
"companySlugsOrUrls": ["openai", "ramp", "https://jobs.ashbyhq.com/notion"],
"maxItems": 100,
"teamFilter": "Engineering",
"locationFilter": "San Francisco",
"includeDescriptions": false
}
Input tips
- Use plain slugs like
openaiwhen possible. - Full board URLs such as
https://jobs.ashbyhq.com/rampalso work. maxItemsapplies across all submitted companies.- Leave filters blank to collect every public posting.
- Enable descriptions only when you need detailed role text.
- Description mode is slower because it adds more page visits.
Output example
{
"companySlug": "openai",
"companyName": "OpenAI",
"jobId": "d4446040-9dd7-4116-8534-91a804a81b3c",
"postingId": "2c3ab9f8-e7d0-48b7-9817-afe1b6ddece2",
"title": "3D Printing Lab Technician, Robotics",
"team": "Robotics",
"teamId": "c16efb3c-493d-401c-a76f-a493cfccbeb8",
"locationName": "San Francisco",
"secondaryLocations": [],
"employmentType": "FullTime",
"workplaceType": "Hybrid",
"department": "Research",
"publishedDate": "2026-05-19",
"compensationTierSummary": "$266K – $399K • Offers Equity",
"jobUrl": "https://jobs.ashbyhq.com/openai/2c3ab9f8-e7d0-48b7-9817-afe1b6ddece2",
"scrapedAt": "2026-06-17T00:00:00.000Z"
}
How to scrape Ashby job boards
- Open the Actor on Apify.
- Add Ashby company slugs or board URLs.
- Set a low
maxItemsfor the first test. - Add optional team or location filters.
- Choose whether to include full descriptions.
- Click Start.
- Download results from the dataset tab as JSON, CSV, Excel, XML, or RSS.
Filtering examples
Engineering roles
{
"companySlugsOrUrls": ["openai", "notion"],
"teamFilter": "Engineering",
"maxItems": 100
}
New York roles
{
"companySlugsOrUrls": ["ramp"],
"locationFilter": "New York",
"maxItems": 50
}
Description analysis
{
"companySlugsOrUrls": ["perplexity"],
"includeDescriptions": true,
"maxItems": 25
}
Best practices
- Start small: Use 1-3 companies to confirm the output shape.
- Control spend: Use
maxItemsto keep exploratory runs small. - Use descriptions deliberately: Turn on
includeDescriptionsonly when you need long-form content. - Reduce alert noise: Use team and location filters for dashboards and monitoring.
- Monitor on a schedule: Run daily or weekly for hiring-intelligence workflows.
- Keep history: Store historical exports if you need change detection over time.
Integrations
You can connect this Actor to:
- Google Sheets for recruiting intelligence dashboards.
- Slack for alerts when target companies add roles.
- Airtable for job-board editorial workflows.
- HubSpot or Salesforce for hiring-trigger lead enrichment.
- Snowflake, BigQuery, or S3 for long-term market datasets.
- Zapier or Make for no-code automations.
API usage
Node.js
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/ashby-jobs-scraper').call({
companySlugsOrUrls: ['openai', 'ramp'],
maxItems: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
Python
from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/ashby-jobs-scraper').call(run_input={
'companySlugsOrUrls': ['openai', 'ramp'],
'maxItems': 100,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
cURL
curl -X POST "https://api.apify.com/v2/acts/fetch_cat~ashby-jobs-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"companySlugsOrUrls":["openai","ramp"],"maxItems":100}'
MCP and AI agents
Use the official Apify MCP server to call this Actor from Claude Code, Claude Desktop, or other MCP clients.
MCP endpoint:
https://mcp.apify.com?tools=fetch_cat/ashby-jobs-scraper
Claude Code setup:
claude mcp add apify-ashby-jobs "https://mcp.apify.com?tools=fetch_cat/ashby-jobs-scraper"
Claude Desktop MCP JSON config:
{
"mcpServers": {
"apify-ashby-jobs": {
"url": "https://mcp.apify.com?tools=fetch_cat/ashby-jobs-scraper"
}
}
}
Example prompts for MCP usage:
- "Use the Apify Ashby Jobs Scraper MCP tool to scrape OpenAI and Ramp, then summarize engineering hiring by location."
- "Call the Ashby Jobs Scraper for Notion and return jobs whose titles or teams mention design or product."
- "Run the Ashby Jobs Scraper MCP tool for Perplexity with maxItems 50 and return a CSV-ready table."
Scheduling
For hiring intelligence, schedule the Actor to run every day or every week.
Daily schedules work well for sales triggers and job-board freshness. Weekly schedules are usually enough for market reports and competitive research.
Data freshness
The Actor returns currently visible public job postings at run time.
If a company removes a posting, future runs will no longer include it. Keep historical datasets if you need opening and closing dates.
Limits and caveats
- Public boards only: The Actor supports public Ashby hosted boards.
- No candidate data: It does not access private applicant data.
- Empty boards happen: Some companies may have zero public roles.
- Field availability varies: Some fields depend on what the company chooses to display.
- Compensation is optional: Compensation summaries appear only when visible on the public board.
- Large lists need limits: Very large company lists should use a practical
maxItemsvalue.
Troubleshooting
Why did a company return no jobs?
The company may not use a public Ashby hosted board, may have no public openings, or may use a different slug. Open https://jobs.ashbyhq.com/<slug> in a browser to confirm the board exists.
Why are descriptions missing?
Descriptions are included only when includeDescriptions is set to true. Leave it off for faster runs when listing-level fields are enough.
Why did I get fewer jobs than expected?
maxItems is a global cap across all companies. Filters can also reduce results. Increase maxItems or remove filters to collect more postings.
Legality and privacy
This Actor collects publicly available job posting information from public company career pages.
You are responsible for using the data in accordance with applicable laws, website terms, and privacy requirements. Do not use scraped data for spam, discrimination, or unlawful employment practices.
Support
If a run fails, returns no data, or a field looks wrong, open an issue from the Actor page.
Please include the Apify run ID or run URL, input JSON, one example public URL, query, or input item, what you expected, and what the dataset returned. Small reproducible inputs make parsing or site-layout issues much faster to fix.