Multi-ATS Job Feed Aggregator (Greenhouse, Lever, Ashby) avatar

Multi-ATS Job Feed Aggregator (Greenhouse, Lever, Ashby)

Pricing

from $2.00 / 1,000 job posting retrieveds

Go to Apify Store
Multi-ATS Job Feed Aggregator (Greenhouse, Lever, Ashby)

Multi-ATS Job Feed Aggregator (Greenhouse, Lever, Ashby)

Fetch open job postings from Greenhouse, Lever, and Ashby company career boards via their own public JSON APIs. One normalized record schema across all three platforms. No personal data, contact info in descriptions stripped by default.

Pricing

from $2.00 / 1,000 job posting retrieveds

Rating

0.0

(0)

Developer

Inn Corp

Inn Corp

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Multi-ATS Job Feed Aggregator

Give it board identifiers for Greenhouse, Lever, and Ashby and get back one normalized record shape across all three, contact info stripped out of the description text by default. Real demand exists for this kind of feed, and the incumbents we checked were inconsistently rated, so the gap is not data access, it is a normalized, trustworthy schema. This Actor: one schema instead of three raw ones, honest nulls instead of guesses, and a courtesy privacy default we haven't seen offered elsewhere in the category.

What it does

  • Give it board tokens/slugs/names for any mix of Greenhouse, Lever, and Ashby career boards.
  • Get back one job record per posting, same field names regardless of which platform it came from: platform, boardId, jobId, title, department, location, remote, employmentType, postedDate, url, description, applyUrl, fetchedAt.
  • Full job description text included by default (includeDescription), fetched in the same request this Actor already makes per board on all three platforms, so turning it off saves no requests, only output size.
  • Emails and phone-number-shaped text found inside description text are regex-stripped by default (stripContactInfo), a courtesy default we haven't seen offered by comparable actors in this category.
  • Deduped within each board by the platform's own job ID.
  • A bad board identifier produces one clean warning; the run continues with every other board, and nothing is charged for the board that failed.

What it deliberately does not do

  • No fourth platform faked. Workable was evaluated for v1 and dropped. See "What we verified" below for the full evidence trail. Nothing pretends to support it.
  • No invented fields. Every value comes straight from the platform's own response. The two fields that are lightly derived, not invented, are documented: remote (Ashby returns it directly as isRemote; Greenhouse and Lever do not expose a boolean at all, so it is set from whether the platform's own location/workplace text says "remote", and left null when there is nothing to check) and Greenhouse employmentType (Greenhouse's API has no standard field for it; if the company published a custom metadata field literally named "Employment Type" it is used, otherwise the field is null, never guessed).
  • No guarantee on contact-info stripping. It is a regex courtesy, not a compliance control: common email and phone shapes are caught, unusual formats might not be. Read it as "we strip what we find," not "we guarantee none remains."
  • No candidate or applicant data, ever. These endpoints cannot return it even if asked; see Ethics below.

What we verified (2026-08-25)

Every platform below was hit live before any code was written, against real company boards, not remembered from documentation:

  • Greenhouseboards-api.greenhouse.io/v1/boards/{token}/jobs?content=true, no auth. Verified against gitlab (210 open roles) and robinhood (258). The content=true flag is a live-confirmed, official query parameter that returns each job's departments, offices, and full description HTML in the same list response — no per-job detail request needed.
  • Leverapi.lever.co/v0/postings/{site}?mode=json, no auth. Verified against leverdemo (Lever's own public demo board) and palantir (308 open roles).
  • Ashbyapi.ashbyhq.com/posting-api/job-board/{name}, no auth. Verified against ramp (139 open roles) and notion.
  • Workable — dropped. The documented public endpoint (apply.workable.com/api/v3/accounts/{account}/jobs) returns HTTP 200 with a well-formed but completely empty result ({"total":0,"results":[]}) for every one of 20+ real company accounts tested, including one (Automattic) pulled directly from a live Workable-hosted careers page — its account ID was read straight out of that page's own HTML, and the exact endpoint path (/api/v3/accounts/{id}/jobs) was confirmed by downloading and reading Workable's own careers-page JavaScript bundle. A companion /jobs/filters facet endpoint came back empty for all 20+ accounts too. Twenty-plus real companies all showing zero open roles at once is not a coincidence; it reads as the endpoint no longer serving data to non-browser callers, whatever the underlying reason. Rather than fake support for a platform that does not actually return data, v1 ships three platforms, honestly, and Workable will only be added back if a working keyless path is found.

Ethics and data source

Every field comes from a company's own public job-board API: the same keyless JSON endpoint each platform's "embed our openings on your careers page" widget calls, built by Greenhouse, Lever, and Ashby for exactly this kind of external consumption. This Actor returns job postings, not people — none of these endpoints expose applicant or candidate data, so there is nothing of that kind to fetch even by mistake. If you supply your own company's board identifier, you are pulling your own listings; if you supply a public company's, you are pulling what that company already publishes to every visitor of its careers page and every other tool built on the same API.

Output examples

Real records from a live run, one per platform (maxJobsPerBoard: 1, includeDescription: true), description trimmed for length:

{
"platform": "greenhouse",
"boardId": "gitlab",
"jobId": "8503792002",
"title": "Account Executive - Italy",
"department": "EMEA - Commercial",
"location": "Remote, Italy",
"remote": true,
"employmentType": null,
"postedDate": "2026-04-17",
"url": "https://job-boards.greenhouse.io/gitlab/jobs/8503792002",
"applyUrl": "https://job-boards.greenhouse.io/gitlab/jobs/8503792002",
"description": "GitLab is the intelligent orchestration platform for DevSecOps...",
"fetchedAt": "2026-08-25T03:34:28+00:00"
}
{
"platform": "lever",
"boardId": "leverdemo",
"jobId": "33538a2f-d27d-4a96-8f05-fa4b0e4d940e",
"title": "AbelsonTaylor Writer",
"department": "Professional Services",
"location": "Arlington, TX",
"remote": false,
"employmentType": "Regular Full Time (Salary)",
"postedDate": "2019-03-21",
"url": "https://jobs.lever.co/leverdemo/33538a2f-d27d-4a96-8f05-fa4b0e4d940e",
"applyUrl": "https://jobs.lever.co/leverdemo/33538a2f-d27d-4a96-8f05-fa4b0e4d940e/apply",
"description": "Welcome to the Demo Job Listing for Lever! This is a fictional job created solely for demonstration purposes...",
"fetchedAt": "2026-08-25T03:34:28+00:00"
}
{
"platform": "ashby",
"boardId": "ramp",
"jobId": "34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"title": "Security Engineer, Cloud",
"department": "Engineering",
"location": "New York, NY (HQ)",
"remote": true,
"employmentType": "FullTime",
"postedDate": "2026-04-07",
"url": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245",
"applyUrl": "https://jobs.ashbyhq.com/ramp/34413f8d-26bf-4bbc-8ade-eb309a0e2245/application",
"description": "ABOUT RAMP\n\nRamp is building the smart infrastructure for finance teams...",
"fetchedAt": "2026-08-25T03:34:28+00:00"
}

Typical uses

  • Build one watchlist across every ATS a target company list actually uses, instead of three separate scrapers.
  • Feed an AI agent or job board with a clean, consistent schema regardless of which ATS the employer picked.
  • Monitor a competitor's or portfolio company's hiring by department or location over time.
  • Pull a company's own postings into an internal dashboard without hand parsing three different JSON shapes.

Input

FieldMeaning
greenhouseTokensGreenhouse board tokens, e.g. "gitlab" from boards.greenhouse.io/gitlab.
leverSitesLever site slugs, e.g. "palantir" from jobs.lever.co/palantir. "leverdemo" is Lever's own public demo board.
ashbyJobBoardNamesAshby job board names, e.g. "ramp" from jobs.ashbyhq.com/ramp.
maxJobsPerBoardCap per board, default 200.
includeDescriptionFull description text, default on. Costs no extra requests on any of the three platforms.
stripContactInfoRegex-strip emails and phone-shaped text from descriptions, default on. Courtesy best-effort, not a guarantee.

At least one of greenhouseTokens, leverSites, or ashbyJobBoardNames must be non-empty; mixing all three in one run is the normal case.

Fair pricing

Pay per job record returned, plus a small per-board charge on every board that is queried successfully, once pay-per-event pricing is enabled. Boards that fail (bad token, deleted board, network error) are never charged. No subscription.