Career Site Jobs API: Greenhouse, Lever, Ashby & more | $2/1k
Pricing
Pay per event
Career Site Jobs API: Greenhouse, Lever, Ashby & more | $2/1k
Open jobs straight from company career sites via the public job-board APIs of Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee, plus schema.org JobPosting pages. One clean schema with salary when published, remote flag, apply URL. Paste URLs or company names. $0.002 per job.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Open Data Actors
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
Career Site Jobs API: Greenhouse, Lever, Ashby and 3 more ATS


- In short: Career Site Jobs API (Apify actor
transparent_meteorite/ats-open-roles) returns open jobs straight from company career sites through the public job-board APIs of Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee, plus schema.org JobPosting pages, in one schema. - Who it is for: job boards and aggregators, recruiters, sales teams using hiring as a buying signal, labor-market researchers.
- Input: company names or career-site URLs, keywords, excluded keywords, locations, remote only, posted within days, only-new mode.
- Output: job title, company, location, remote flag, department, salary when published, posted date, apply URL, ATS name, optional description.
- Price: $0.002 per job plus $0.00005 per run start. Pay per result, no subscription; Apify's free plan credit covers a first test.
- Limits: only companies whose career site runs on a supported ATS or publishes schema.org JobPosting; salary only when the employer publishes it.
Key facts
- Actor name: Career Site Jobs API
- Actor ID:
transparent_meteorite/ats-open-roles - Store page: https://apify.com/transparent_meteorite/ats-open-roles
- Data source: the employers' own public ATS job-board APIs
- Pricing model: pay per event (
apify-actor-start$0.00005,job-extracted$0.002) - Output formats: JSON, CSV, Excel, XML, HTML table, RSS (Apify dataset)
- Access: Apify Console, REST API, JavaScript/Python clients, schedules, webhooks, Apify MCP server
- Login or third-party API key needed: no, only an Apify account
- Also known as: Greenhouse jobs API, Lever jobs scraper, Ashby jobs API, ATS jobs API, career site job listing API
- Maintainer: transparent_meteorite (independent developer)
- Last updated: 2026-10-07
Give it a list of companies; get every open job from their career sites in one clean table, for $1.20 per 1,000 jobs.
It reads the public job-board APIs of Greenhouse, Lever, Ashby, Workable, SmartRecruiters, Recruitee, BambooHR, Breezy HR, Pinpoint and Personio (plus the free Arbeitnow aggregate feed via https://www.arbeitnow.com/), plus any career page that publishes schema.org JobPosting data (Teamtailor sites, many custom pages). Paste careers URLs or plain company names; the actor finds the ATS, pulls the open roles and normalizes them into one schema. Salary is included whenever the company publishes it.
Sample output
Real rows from a run on Oct 5, 2026 (8 companies, 1,845 open jobs listed, 5 taken per company):
| Company | ATS | Title | Location | Type | Posted | Salary |
|---|---|---|---|---|---|---|
| Ramp | ashby | Design Systems Lead | New York, NY (HQ) | FULL_TIME | 2026-09-30 | 280,000-385,000 USD/year |
| Airbnb | greenhouse | Software Engineer, Passport & Commerce, Android | Remote, USA | 2026-10-01 | 162,000-186,000 USD/year | |
| Spotify | lever | Legal Counsel, Litigation and Copyright | New York, NY | FULL_TIME | 2026-10-01 | |
| ServiceNow | smartrecruiters | Sr Software Engineer | Santa Clara, California | FULL_TIME | 2026-10-03 | |
| bunq | recruitee | iOS Developer | Amsterdam, Netherlands | FULL_TIME | 2026-09-29 | |
| Blueground | workable | Marketing Designer | Athens, Greece | OTHER | 2026-09-23 | |
| Tibber | jsonld | Senior AI Platform Engineer | Stockholm, SE | FULL_TIME | 2026-08-27 |
What you get
One row per open job:
| Field | What it is |
|---|---|
company, companySlug | Company name and its board slug |
ats | greenhouse, lever, ashby, workable, smartrecruiters, recruitee or jsonld |
jobId | The ATS's own job id |
title, department, location | As published |
remote, workplaceType | true/false when the ATS says so, otherwise null (never guessed) |
employmentType | FULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, OTHER or null |
postedAt, updatedAt | ISO 8601 UTC, when the ATS exposes them |
salaryMin, salaryMax, salaryCurrency, salaryPeriod | Only when the posting publishes a range |
applyUrl, jobUrl | Direct links to apply and to the posting |
descriptionText | Plain-text description (emails in it are replaced with [email removed]) |
sourceUrl, scrapedAt | Where and when it was read |
Export as CSV, Excel or JSON, or read it from the API.
Quick start
Press Start with the prefilled form: Airbnb, Spotify and Ramp, 10 newest jobs each, about $0.036.
Engineering roles at a list of companies, every open job:
{"companies": ["stripe", "https://jobs.ashbyhq.com/ramp", "https://jobs.lever.co/spotify", "notion"],"keywords": ["engineer", "developer"],"excludeKeywords": ["intern"],"maxJobsPerCompany": 1000}
Daily "new jobs only" feed for a watchlist (schedule it once a day):
{"companies": ["airbnb", "stripe", "https://apply.workable.com/blueground/"],"onlyNewSinceLastRun": true,"stateStoreName": "my-watchlist"}
Remote or local roles posted in the last two weeks (new filters):
{"companies": ["stripe", "airbnb", "notion"],"locations": ["United States", "Detroit"],"remoteOnly": false,"postedWithinDays": 14}
locations matches any substring of the job location, remoteOnly keeps jobs flagged remote (or with "remote" in the location), postedWithinDays drops older jobs (jobs with no posted date are kept).
Fast run without descriptions:
{ "companies": ["https://jobs.smartrecruiters.com/ServiceNow"], "includeDescription": false, "maxJobsPerCompany": 500 }
Pricing
$0.0012 per job delivered ($1.20 per 1,000 jobs), plus the platform's $0.00005 start fee per run.
| You pull | You pay |
|---|---|
| 30 jobs (the prefilled Start) | $0.036 |
| 1,000 jobs | $1.20 |
| 50 companies x 100 jobs | $6.00 at most |
Jobs removed by your keyword filters and jobs you already received (with onlyNewSinceLastRun) are never charged. A repeat run on the same input with dedupe on charges $0 for jobs. Your run's maximum-charge limit is respected.
Why per company? Broad job feeds charge you for millions of postings across the web. If you already know which companies matter to you (your accounts, competitors, a portfolio, a target list), pulling just their career sites is the cheaper, fresher option: the data comes straight from the ATS the company uses.
Use with the API, n8n, Make, Zapier, Clay or AI agents
API (returns the rows in one call):
curl -X POST "https://api.apify.com/v2/acts/transparent_meteorite~ats-open-roles/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"companies":["stripe","ramp"],"keywords":["sales"],"onlyNewSinceLastRun":false}'
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("transparent_meteorite/ats-open-roles").call(run_input={"companies": ["stripe", "ramp"]})for job in client.dataset(run["defaultDatasetId"]).iterate_items():print(job["company"], job["title"], job["location"], job["applyUrl"])
- n8n, Make, Zapier: use the Apify app's "Run Actor" step with actor
transparent_meteorite/ats-open-roles, then send rows to Sheets, Airtable, Slack or your ATS. - Clay: add an HTTP API column that calls the run-sync endpoint with the company's careers URL or ATS slug, and count open roles per account.
- AI agents (MCP): connect
https://mcp.apify.com?tools=transparent_meteorite/ats-open-rolesto Claude, Cursor or any MCP client, and ask "what is Ramp hiring for?".
Use from AI agents (MCP, ChatGPT, Claude, Perplexity)
Career Site Jobs API works as a tool for AI assistants through the official Apify MCP server. Add this server URL to any MCP client (Claude Desktop, Claude Code, Cursor, ChatGPT connectors, VS Code):
https://mcp.apify.com/?actors=transparent_meteorite/ats-open-roles
Claude Desktop / Cursor config:
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/?actors=transparent_meteorite/ats-open-roles","headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }}}}
Then ask in plain language, for example: "How do I scrape Greenhouse or Lever jobs for a list of companies?"
Call it directly over HTTP (runs the actor and returns the dataset items in one request):
curl -X POST "https://api.apify.com/v2/acts/transparent_meteorite~ats-open-roles/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"companies": ["airbnb", "https://jobs.lever.co/spotify", "https://jobs.ashbyhq.com/ramp"], "maxJobsPerCompany": 5, "onlyNewSinceLastRun": false}'
Python:
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("transparent_meteorite/ats-open-roles").call(run_input={"companies": ["airbnb", "https://jobs.lever.co/spotify", "https://jobs.ashbyhq.com/ramp"], "maxJobsPerCompany": 5, "onlyNewSinceLastRun": false})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
The same actor works in n8n, Make, Zapier, LangChain, LlamaIndex and CrewAI through their Apify integrations.
Questions people ask
How do I scrape Greenhouse or Lever jobs for a list of companies? Put the company names or career URLs in companies; the actor detects the ATS and returns every open job in one schema.
Is there a jobs API that covers several ATS platforms? Yes, this one covers Greenhouse, Lever, Ashby, Workable, SmartRecruiters and Recruitee. For Workday sites use the Workday Jobs Scraper.
Can I get only newly posted jobs? Yes, set onlyNewSinceLastRun true and schedule it.
Use cases
- Sales and account-based marketing: hiring is a buying signal. Track open roles at target accounts and trigger outreach when a team grows.
- Recruiters and staffing firms: watch client and prospect career sites and get new reqs the day they post.
- Job boards and niche aggregators: fill a board with direct-from-ATS listings and apply links.
- Competitive and labor-market research: headcount plans, new locations, salary bands by role.
- Job seekers and career tools: alerts for new roles at the companies you want.
FAQ
How do I scrape jobs from Greenhouse?
Add the board URL (https://boards.greenhouse.io/stripe) or just the slug (stripe) to companies. The actor uses Greenhouse's public job-board API, so you get every open role with no login and no browser.
How do I get all jobs from a Lever or Ashby career page?
Same thing: paste https://jobs.lever.co/<company> or https://jobs.ashbyhq.com/<company>, and raise maxJobsPerCompany to cover the board.
How do I find which ATS a company uses?
Enter the company name (for example airbnb). The actor checks all ten ATS APIs and uses the board with the most jobs; the ats column tells you which one it found.
Can I get salary ranges from job postings?
Yes, when the company publishes them: Greenhouse pay transparency, Lever salary range, Ashby compensation, Recruitee, and JSON-LD baseSalary. Otherwise the salary fields are null. In our Oct 5 sample, Airbnb and Ramp rows carried ranges.
How do I get only new job postings each day?
Turn on onlyNewSinceLastRun and schedule the actor daily. It remembers which jobs you received (per company, in a named store) and returns only new ones. Already-seen jobs are not charged.
Does it support Workday, iCIMS or Taleo?
No. Those career sites are not supported today. See Limitations.
Is scraping career sites legal?
This actor only reads the public job-board endpoints that ATS vendors publish so companies can display openings, plus public schema.org markup, and it checks robots.txt for HTML pages. No login, no personal data. You are responsible for how you reuse the listings.
Limitations
- Six ATS vendors plus JSON-LD. Workday, iCIMS, Taleo, BambooHR, Personio and JavaScript-only career sites are not supported. A career page with no supported ATS and no JSON-LD returns 0 rows with a note in the run's
OUTPUTrecord, and costs nothing. - A company name can match the wrong board when two companies share a slug. A careers URL is always precise.
- Fields depend on the ATS. For example Lever has no
updatedAt, Greenhouse has no remote flag (we markremote: trueonly when the location says "remote"), and most boards publish no salary. - The JSON-LD fallback reads only the page you give it and the job links on it (up to 200); it does not paginate or read sitemaps.
maxJobsPerCompanytakes the newest N matching jobs before dedupe, so an older job outside the newest N is not delivered until it moves into them.- No recruiter names, emails or other personal data are collected.
Related actors
- Website Tech Stack Detector: CMS, ecommerce, analytics and 300+ technologies for any list of domains.
- City Council Agendas API: agenda items, votes and PDFs from 18 US cities.
- FMCSA New Carrier Leads: new US trucking companies with email and phone.
- WARN Layoff Notices: Texas WARN Act layoff notices.
Missing an ATS or a field? Open an issue on the Issues tab and we reply quickly.
Changelog
- 2026-10-07: added plain-language summary, key facts, AI-agent (MCP) section and question-style FAQ; refreshed Store SEO metadata.