Company Jobs Feed — Greenhouse, Lever, Ashby & More
Pricing
Pay per usage
Company Jobs Feed — Greenhouse, Lever, Ashby & More
Pull open jobs from companies' official ATS career feeds (Greenhouse, Lever, Ashby, SmartRecruiters, Workable) into one normalized, deduplicated feed. Keyless public APIs. Zero-config returns live Stripe + Airbnb jobs. Hiring = buying intent for SDR lead-gen, recruiters, and VC deal-sourcing.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Bikram
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Company Jobs Feed — Greenhouse, Lever, Ashby, SmartRecruiters & Workable
Pull open job postings straight from companies' own ATS career feeds and get one clean, normalized, deduplicated feed of every open role. Point it at a list of company slugs, pick the ATS they use (Greenhouse, Lever, Ashby, SmartRecruiters, or Workable), and the Actor returns each job mapped to the same set of fields — title, department, location, remote flag, employment type, posting date, compensation range (where the ATS exposes it), and direct job + apply URLs.
Run it with zero configuration to pull live Greenhouse jobs for Stripe and Airbnb.
What it does
Most companies host their careers page on a third-party Applicant Tracking System (ATS), and most of those ATSes expose a public, keyless JSON feed of the company's currently-open roles. This Actor reads those feeds directly — no login, no API key, no scraping of rendered HTML — and normalizes five different ATS formats into one consistent schema:
| ATS | Public endpoint | Auth |
|---|---|---|
| Greenhouse | https://boards-api.greenhouse.io/v1/boards/{company}/jobs?content=true | None |
| Lever | https://api.lever.co/v0/postings/{company}?mode=json | None |
| Ashby | https://api.ashbyhq.com/posting-api/job-board/{company}?includeCompensation=true | None |
| SmartRecruiters | https://api.smartrecruiters.com/v1/companies/{company}/postings | None |
| Workable | https://apply.workable.com/api/v1/widget/accounts/{company} | None |
Each ATS uses different field names, date formats, and structures. The Actor maps every record into one common schema, removes duplicates (on ats_source + job_id), sorts by posting date descending, and writes the result to your dataset — ready to export as JSON, CSV, or Excel, push to a webhook, or query from an AI agent over MCP.
Why a company jobs feed matters
Hiring is one of the strongest buying-intent and growth signals a company emits. A team that just opened ten roles is spending, scaling, and reorganizing — and that shows up in their ATS feed days or weeks before it shows up anywhere else.
- SDRs & B2B sales — a company hiring a "RevOps Manager" or "VP of Demand Gen" is about to buy tooling in that category. Job feeds are a clean, timely lead-generation signal you can act on first.
- Recruiters & sourcers — track exactly which roles a target company has open, in real time, without paying for an aggregator that's days stale.
- VC & deal-sourcing — headcount growth by department is a leading indicator of traction. Watch a portfolio or a watchlist of startups and see who's scaling engineering vs. sales.
- Competitive & market intelligence — see where competitors are investing (which teams they're growing, which markets they're hiring into, what comp they're posting).
- Job boards & vertical aggregators — build a niche board sourced directly from companies' canonical feeds, with apply links that go straight to the source.
Input
Every field is optional. Empty input {} returns live Greenhouse jobs for Stripe + Airbnb.
| Field | Type | Default | Description |
|---|---|---|---|
ats | string | "greenhouse" | Which ATS the companies use: greenhouse, lever, ashby, smartrecruiters, or workable. All companies in one run must share the same ATS. |
companies | array | ["stripe","airbnb"] | Company ATS slugs as they appear in the career-page URL (see per-ATS examples below). |
includeDescription | boolean | false | Include the full plain-text job description (description_plain). Off by default to keep items small. |
maxJobs | integer | 200 | Cap on total job records output after dedupe. |
A wrong slug returns an empty list with a clear warning in the log — the run does not crash, and other companies in the same run still return their jobs.
Zero-config (Stripe + Airbnb on Greenhouse):
{}
Greenhouse — multiple companies:
{ "ats": "greenhouse", "companies": ["stripe", "airbnb", "figma"] }
Lever:
{ "ats": "lever", "companies": ["spotify", "mistral"] }
Ashby (exposes compensation ranges):
{ "ats": "ashby", "companies": ["ramp", "openai", "notion"] }
SmartRecruiters:
{ "ats": "smartrecruiters", "companies": ["Visa"] }
Workable, with full descriptions:
{ "ats": "workable", "companies": ["zego"], "includeDescription": true }
Finding a company's slug
The slug is the company identifier in its ATS career-page URL:
- Greenhouse —
boards.greenhouse.io/stripe→stripe - Lever —
jobs.lever.co/spotify→spotify - Ashby —
jobs.ashbyhq.com/ramp→ramp - SmartRecruiters — the company id in the postings API, e.g.
Visa(note: case-sensitive) - Workable —
apply.workable.com/zego→zego
Output schema
One normalized item per job. Missing fields are null — never fabricated.
| Field | Type | Description |
|---|---|---|
company | string | The company slug you supplied. |
ats_source | string | greenhouse · lever · ashby · smartrecruiters · workable. |
job_id | string | Source-unique posting identifier (used with ats_source for dedupe). |
title | string | Job title. |
department | string | Department / team grouping, when the ATS provides it. |
team | string | Sub-team / function, when available. |
location | string | Office or location label as published. |
is_remote | bool / null | true / false from the ATS's remote flag (Ashby, SmartRecruiters, Workable, Lever) or derived from the location text (Greenhouse); null when unknown. |
employment_type | string | Full-time / contract / permanent, etc., when available. |
posted_at | string | Posting / publish date, ISO YYYY-MM-DD. |
updated_at | string | Last-updated date, ISO YYYY-MM-DD (Greenhouse only). |
job_url | string | Direct link to the public job posting. |
apply_url | string | Direct link to the application form. |
comp_min | number / null | Minimum posted salary (Ashby; Lever when present). |
comp_max | number / null | Maximum posted salary. |
currency | string / null | ISO currency code for the comp range. |
description_plain | string | Full plain-text description — only present when includeDescription: true. |
scraped_at | string | ISO timestamp of this run. |
Sample item (Ashby, with compensation):
{"company": "ramp","ats_source": "ashby","job_id": "34413f8d-26bf-4bbc-8ade-eb309a0e2245","title": "Security Engineer, Cloud","department": "Engineering","team": "Backend","location": "New York, NY (HQ)","is_remote": true,"employment_type": "FullTime","posted_at": "2026-04-07","updated_at": null,"job_url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245","apply_url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application","comp_min": 211400,"comp_max": 290600,"currency": "USD","scraped_at": "2026-06-19T00:00:00+00:00"}
Compensation coverage
Posted salary is only included when the company actually publishes it in its feed. Ashby exposes structured compensation reliably (when the role has a posted range), and Lever occasionally does via salaryRange. Greenhouse's board list, SmartRecruiters' postings list, and Workable's widget feed do not include salary, so comp_min / comp_max / currency are null for those sources.
Use cases
- Buying-intent lead gen — watch a list of target accounts and surface new roles in categories that signal a purchase (RevOps, demand gen, data, security).
- Recruiting intelligence — track exactly which roles a company has open, daily, straight from the source.
- VC / deal sourcing — monitor headcount growth by department across a watchlist of startups.
- Vertical job boards — source a niche board from companies' canonical ATS feeds with apply links that go to the source.
- AI agents (MCP) — let an agent answer "what's open at Stripe and Ramp right now?" by calling this Actor live.
Run on a schedule (new-job alerts)
- Set
atsand yourcompanieslist. - Create an Apify Schedule — a daily run catches new postings within ~24h.
- Add a webhook to push results to email, Slack, a CRM, or your own system.
Use from Claude, Cursor & AI agents (MCP)
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/sse?actors=bikram07/multi-ats-jobs-feed","headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }}}}
Or call the API directly:
curl -X POST "https://api.apify.com/v2/acts/bikram07~multi-ats-jobs-feed/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"ats":"ashby","companies":["ramp","notion"]}'
What it is NOT
- Not LinkedIn, Indeed, or a job aggregator. It reads each company's own public ATS feed — you supply the company slugs. It does not search "all jobs everywhere."
- You supply the companies. There is no global company directory; you tell it which company slugs to pull and which ATS they use.
- One ATS per run. A single run pulls from one ATS. To combine Greenhouse + Lever + Ashby, run the Actor once per ATS (e.g. as separate scheduled tasks) and merge the datasets.
- Public feeds only. It only sees roles the company has published to its public career feed. Internal, unlisted, or login-gated postings are not included.
- No enrichment or scoring. Output is the ATS data, normalized. Fields a source doesn't publish (salary on Greenhouse, descriptions on SmartRecruiters/Workable widget) are left
null, never invented. - Not affiliated with Greenhouse, Lever, Ashby, SmartRecruiters, or Workable. Independent tool built on their public career-feed APIs.
Built on the public career-feed APIs of Greenhouse, Lever, Ashby, SmartRecruiters, and Workable. Not affiliated with or endorsed by any of them.
Related searches: company jobs API · Greenhouse jobs scraper · Lever postings API · Ashby job board API · SmartRecruiters postings · Workable jobs feed · ATS jobs aggregator · hiring intent data · job postings for lead generation · recruiter sourcing feed · careers page scraper · normalized jobs feed