Career Site Jobs API: Greenhouse, Lever, Ashby & more | $2/1k avatar

Career Site Jobs API: Greenhouse, Lever, Ashby & more | $2/1k

Pricing

Pay per event

Go to Apify Store
Career Site Jobs API: Greenhouse, Lever, Ashby & more | $2/1k

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

Open Data Actors

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

Career Site Jobs API: Greenhouse, Lever, Ashby and 3 more ATS

Career Site Jobs API on Apify

Career Site Jobs API sample output table

  • 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):

CompanyATSTitleLocationTypePostedSalary
RampashbyDesign Systems LeadNew York, NY (HQ)FULL_TIME2026-09-30280,000-385,000 USD/year
AirbnbgreenhouseSoftware Engineer, Passport & Commerce, AndroidRemote, USA2026-10-01162,000-186,000 USD/year
SpotifyleverLegal Counsel, Litigation and CopyrightNew York, NYFULL_TIME2026-10-01
ServiceNowsmartrecruitersSr Software EngineerSanta Clara, CaliforniaFULL_TIME2026-10-03
bunqrecruiteeiOS DeveloperAmsterdam, NetherlandsFULL_TIME2026-09-29
BluegroundworkableMarketing DesignerAthens, GreeceOTHER2026-09-23
TibberjsonldSenior AI Platform EngineerStockholm, SEFULL_TIME2026-08-27

What you get

One row per open job:

FieldWhat it is
company, companySlugCompany name and its board slug
atsgreenhouse, lever, ashby, workable, smartrecruiters, recruitee or jsonld
jobIdThe ATS's own job id
title, department, locationAs published
remote, workplaceTypetrue/false when the ATS says so, otherwise null (never guessed)
employmentTypeFULL_TIME, PART_TIME, CONTRACTOR, TEMPORARY, INTERN, OTHER or null
postedAt, updatedAtISO 8601 UTC, when the ATS exposes them
salaryMin, salaryMax, salaryCurrency, salaryPeriodOnly when the posting publishes a range
applyUrl, jobUrlDirect links to apply and to the posting
descriptionTextPlain-text description (emails in it are replaced with [email removed])
sourceUrl, scrapedAtWhere 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 pullYou 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 ApifyClient
client = 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-roles to 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 ApifyClient
client = 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.

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 OUTPUT record, 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 mark remote: true only 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.
  • maxJobsPerCompany takes 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.

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.