Job Feed Scraper: Greenhouse, Lever & Ashby
Pricing
from $2.00 / 1,000 jobs
Job Feed Scraper: Greenhouse, Lever & Ashby
Scrape live job listings from any company's careers page: Greenhouse, Lever, Ashby, SmartRecruiters, Workable. Give it a list of companies and get clean normalized JSON: title, location, department, apply URL. Proxyless, on-demand, one record per job. From $2/1,000 jobs.
Pricing
from $2.00 / 1,000 jobs
Rating
0.0
(0)
Developer
Cartpie
Maintained by CommunityActor stats
1
Bookmarked
6
Total users
0
Monthly active users
13 hours ago
Last modified
Categories
Features
Share
ATS Job Feed Scraper — live jobs from any company's career page
Pull live job listings straight from company career pages — the ones powered by Greenhouse, Lever, Ashby, and SmartRecruiters. Give it a company (Stripe, Airbnb, Spotify, Ramp…) and get back every open role as one clean, structured record: title, department, location, remote/hybrid/onsite, salary when the company publishes it, employment type, full description, and a direct apply URL.
No login. No proxies. No fragile HTML scraping — this reads each company's official ATS feed, so the data is complete and stays fresh.
Benchmark — 8 companies: ✅ 1,186 jobs in one run · 🧩 100% field completeness (title, URL, location, description, published date) · ⚡ ~0.2–1 s per board · 🧼 clean plain-text + original HTML descriptions
Perfect for job boards & aggregators, recruiting & sourcing tools, talent-market research, competitive hiring intelligence, and "who's hiring" newsletters.
✨ Why this scraper
- Straight from the source. Reads each company's official ATS API (Greenhouse, Lever, Ashby, SmartRecruiters) — not a rendered page. Complete listings, no missed jobs.
- One unified record shape across every ATS. You don't care whether a company uses Greenhouse or Lever — the output columns are identical.
- Auto-detect. Pass a bare company slug and it checks all four ATSs, keeping every board that returns jobs. Companies moving between ATSs can have two live boards at once: bare
tavilyreturned 18 Ashby and 13 Greenhouse jobs, and you get both. - Paste the careers URL.
https://jobs.lever.co/spotify/…orboards.greenhouse.io/stripeworks as input, and so do Lever and Greenhouse EU boards. - Salary columns.
salaryMin,salaryMax,salaryCurrencyandsalaryIntervalas separate fields, plus the company's own pay line insalaryText. Every LiveKit job on Ashby carries one, like the $135K–$300K a year in the example below. - Remote vs hybrid vs onsite.
workplaceTypecomes from the ATS's own field where one exists. We don't trust Ashby's remote flag on its own because it's also set on hybrid roles: 64 of Mistral's 77 "remote" jobs were hybrid when we checked. - Clean descriptions. Both the original
descriptionHtmland a tidy plain-textdescriptionText— ready for search indexing, embeddings, or display. - Fast & proxyless. Public JSON endpoints, fetched in parallel. No proxy cost, no captcha, no rate-limit pain.
- Fair billing. You're billed per job returned. Boards that don't exist or return nothing are never billed — guaranteed in code.
📥 Input
| Field | Type | Description |
|---|---|---|
companies | string[] | One entry per board: provider:slug (e.g. greenhouse:stripe, lever:spotify, ashby:ramp, smartrecruiters:Ubisoft2), a board URL (e.g. https://jobs.lever.co/spotify), or a bare slug (e.g. ramp) to auto-detect. |
autoDetect | boolean | For bare slugs, try every ATS and keep every board that returns jobs (default true). |
searchQuery | string | Keep only jobs whose title contains this text (case-insensitive). |
location | string | Keep only jobs whose location contains this text. |
remoteOnly | boolean | Keep only jobs whose workplace type is remote. Hybrid and onsite are excluded. |
workplaceTypes | string[] | Keep only these workplace types: any of remote, hybrid, onsite, unknown. Empty = all. |
department | string | Keep only jobs whose department contains this text. |
maxItems | integer | Stop after N jobs across all boards. 0 = unlimited. |
concurrency | integer | Boards fetched in parallel, 1–10 (default 5). |
Where do I find a company's slug?
It's the company token in its careers URL:
| ATS | Board URL | Slug |
|---|---|---|
| Greenhouse | boards.greenhouse.io/stripe | stripe |
| Lever | jobs.lever.co/spotify | spotify |
| Ashby | jobs.ashbyhq.com/ramp | ramp |
| SmartRecruiters | jobs.smartrecruiters.com/Ubisoft2 | Ubisoft2 |
You can also paste the URL itself. Anything after the slug (job IDs, ?gh_src=…)
is ignored. Lever's EU boards (jobs.eu.lever.co/xtb) are found automatically
when the US host says "not found", or you can write lever-eu:xtb to go straight
there. Greenhouse EU boards (job-boards.eu.greenhouse.io/…) need nothing special.
Example input
{"companies": ["greenhouse:airbnb", "lever:spotify", "ashby:ramp", "gitlab"],"searchQuery": "engineer","remoteOnly": true,"maxItems": 500}
📤 Output
One record per live job:
{"source": "ashby","companyToken": "livekit","jobId": "1757f49e-7e19-4c45-85f7-e4637dff66fb","title": "Software Engineer, Agents","company": "livekit","department": "R&D","team": "Engineering","location": "North America","locations": ["North America", "APJ", "EMEA"],"workplaceType": "remote","remote": true,"employmentType": "FullTime","salaryMin": 135000,"salaryMax": 300000,"salaryCurrency": "USD","salaryInterval": "year","salaryText": "$135K – $300K • Offers Equity","url": "https://jobs.ashbyhq.com/livekit/1757f49e-7e19-4c45-85f7-e4637dff66fb","applyUrl": "https://jobs.ashbyhq.com/livekit/1757f49e-7e19-4c45-85f7-e4637dff66fb/application","descriptionHtml": "<h2><strong>About LiveKit</strong></h2>...","descriptionText": "ABOUT LIVEKIT\n\nLiveKit is building the infrastructure layer for the agentic era...","publishedAt": "2026-08-11T00:18:10.574+00:00","updatedAt": null,"scrapedAt": "2026-10-16T12:29:36.984Z"}
A few fields worth knowing:
companyis the employer name when the ATS gives one (Greenhouse, SmartRecruiters). Lever and Ashby feeds don't include it, so you get the board slug instead.workplaceTypeisremote,hybrid,onsite, ornullwhen the ATS doesn't say.remoteistrueonly forworkplaceType: "remote".- Salary fields are
nullunless the company publishes pay.salaryMin/salaryMaxare in major units (135000, not cents) andsalaryIntervalisyear,month,week,dayorhour.
Export as JSON, CSV, Excel, or pull via the Apify API. Schedule runs to keep a live mirror of any set of companies' openings.
❓ FAQ
Which ATS platforms are supported? Greenhouse, Lever, Ashby, and SmartRecruiters — four of the most widely used applicant-tracking systems. Thousands of companies publish through them.
How do I scrape many companies at once?
Add each to companies. They're fetched in parallel (see concurrency).
A company isn't returning jobs — why?
Either the slug is wrong (check the board URL), or the company uses an ATS this
actor doesn't cover yet. With autoDetect on, a bare slug is tried against every
supported ATS automatically. SmartRecruiters answers any unknown slug with an
empty board instead of an error, so explicit boards that come back with 0 jobs
are listed in the RESULT_SUMMARY record. Usually that's a typo.
Do I need proxies? No. These are public JSON feeds. It runs proxyless — nothing to configure, no proxy cost.
Are descriptions included? Yes for Greenhouse, Lever, and Ashby (both HTML and plain text). SmartRecruiters' list feed returns metadata without the body.
Are salaries included?
Yes, when the company publishes them. Ashby and Lever put pay in the job feed,
and Greenhouse does for companies that use its pay-transparency ranges (102 of
GitLab's 221 jobs had one when we checked). SmartRecruiters' feed has no pay, so
those fields stay null. One gap: Greenhouse range titles like "United States
Salary Range" don't say per year or per hour, so salaryInterval is often null
there even when the numbers are present. Pay a company hides on Ashby is never
returned.
Is this legal? It reads publicly published job listings from companies' own career feeds — no login, no personal data. Review your own use case and local rules as usual.
🔧 Integrations
Works with everything on Apify: Google Sheets, Zapier, Make, n8n, Airbyte, webhooks, or the Apify API. Schedule daily runs to keep your job database in sync.
🔗 More scrapers
Same proxyless, clean-JSON approach, other data sources:
- App Reviews Scraper — Google Play + App Store reviews & app metadata
- Google Trends Scraper — interest over time & region, related queries, trending searches
- SHEIN Product Scraper — price, stock, variants & full-res images
🏷️ Keywords
ats scraper, greenhouse jobs api, lever jobs scraper, ashby jobs, smartrecruiters scraper, job listings api, careers page scraper, hiring data, job board aggregator, recruiting data, jobs feed, company jobs scraper, salary data, remote jobs scraper, hybrid jobs