Greenhouse, Lever & Ashby Jobs Finder by Company Domain avatar

Greenhouse, Lever & Ashby Jobs Finder by Company Domain

Pricing

from $1.20 / 1,000 job results

Go to Apify Store
Greenhouse, Lever & Ashby Jobs Finder by Company Domain

Greenhouse, Lever & Ashby Jobs Finder by Company Domain

Turn company domains into open jobs from public Greenhouse, Lever, Ashby, Workable and Recruitee boards. Normalized fields, salary where the ATS publishes it, remote flag, and an 'only new since last run' monitoring mode. Pay only for matched companies and saved jobs.

Pricing

from $1.20 / 1,000 job results

Rating

0.0

(0)

Developer

Tech Noir Global

Tech Noir Global

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Turn a list of company domains into their open jobs from Greenhouse, Lever, Ashby, Workable and Recruitee. Run it weekly to get only the new roles at the companies you watch: hiring signals for sales, job alerts for recruiters, or one clean jobs table for analysis.

You give itCompany domains (stripe.com), job-board URLs, or ats:slug (greenhouse:datadog)
You getOne row per open job (title, department, location, remote flag, posted date, apply link; salary and description where the board provides them), plus a status row per company: matched, unverified, not found or error, and why
You pay$0.005 per matched company + $0.0012 per job delivered ($1.20 per 1,000). No start fee. Companies with no board cost $0

Quick start

  1. Paste your company domains into Companies.
  2. Optional: add Title or department keywords such as sales or account executive.
  3. Click Start, then open the Output tab. To monitor, turn on Only new jobs since last run and add a weekly Schedule.

Weekly hiring-signal monitor

Watch target accounts for new sales roles every Monday:

{
"companies": ["stripe.com", "datadoghq.com", "notion.so", "ramp.com", "gitlab.com"],
"titleKeywords": ["sales", "account executive"],
"onlyNewJobs": true,
"stateKey": "target-accounts-sales"
}
  1. Save this input as an Apify Task and add a Schedule (for example 0 8 * * 1, Mondays 08:00 in the schedule's time zone).
  2. The first run returns every open job whose title or department contains a keyword. Later runs return only jobs not delivered before. Use one stateKey per watchlist.
  3. The Company summary shows, per company: status, board, open roles, jobs delivered, new since last run.

What you can use it for

  • Hiring signals for sales and GTM: know when target accounts open roles like "Head of Security".
  • Job alerts: new roles at the companies you care about.
  • Recruiting and market maps: where competitors hire and which teams grow.
  • Salary benchmarking: collect published pay ranges from Ashby, Lever and Recruitee boards.

How much does it cost to scrape Greenhouse, Lever and Ashby jobs?

EventPriceCharged when
Company matched$0.005Once per company whose board was accepted and read
Job delivered$0.0012Once per job saved to the dataset

Per run: $0.005 × matched companies + $0.0012 × jobs delivered. No start fee, no charge for summary records.

  • Unmatched, unverified and errored companies cost nothing, and so do jobs your filters drop.
  • Monitoring reruns still cost $0.005 per matched company, even with no new jobs: 50 matched companies with nothing new cost $0.25.
  • Cap any run with Apify's Max cost per run setting.

Real example (20 well-known companies, no filters, Oct 18, 2026): 16 matched × $0.005 = $0.08, plus 3,652 jobs × $0.0012 = $4.38, for about $4.46 total. The other 4 (Google, Apple, Shopify, Revolut) don't hire through a supported system. Lookalike boards exist under their names, so they came back unverified, and cost $0.

Input

companies takes domains, board URLs (https://jobs.ashbyhq.com/ramp) or ats:slug (lever:palantir). Known boards skip detection.

FieldWhat it does
titleKeywordsKeep jobs whose title or department contains any keyword
excludeKeywordsDrop jobs whose title contains any of these
locations, remoteOnlyLocation text match, or remote jobs only
postedWithinDaysDrop older jobs (where the ATS gives a date)
onlyNewJobs + stateKeyMonitoring mode
maxJobsPerCompanyJobs per company (0 = no limit)

Output example

One dataset item per job (real item, description shortened):

{
"company": "ramp", "ats": "ashby", "companySlug": "ramp",
"title": "Security Engineer, Cloud", "department": "Engineering", "team": "Backend",
"location": "New York, NY (HQ)", "allLocations": ["New York, NY (HQ)", "Remote (Canada)", "Remote (US)", "Miami, FL"],
"isRemote": true, "employmentType": "FullTime",
"salary": {"min": 211400, "max": 290600, "currency": "USD", "interval": "1 YEAR"},
"postedAt": "2026-04-07T17:12:35+00:00",
"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...",
"input": "ramp.com", "detectionMethod": "slug-guess-verified", "isNewSinceLastRun": null
}

Company summary (record COMPANY_SUMMARY, one row per input company, not billed; real row from a test run):

{"domain": "ramp.com", "status": "matched", "boards": ["ashby/ramp"], "ats": "ashby", "slug": "ramp",
"openRoles": 167, "jobsDelivered": 71, "newSinceLastRun": null, "reason": ""}

status is matched, unverified, not_found, error, or skipped (cost limit reached). Unverified rows list candidateBoards; pass one as ats:slug if it's right. The SUMMARY record lists every board checked.

How it works

For each domain, the Actor runs the same deterministic check:

  1. Links on the company's site. It reads the homepage, /careers, /jobs, the careers. and jobs. subdomains, and careers links one hop deeper. A linked board is used unless its own details name a different company (for example, a parent linking a subsidiary's board).
  2. Board names derived from the domain. datadoghq.com gives datadoghq and datadog, checked on all 5 systems. A derived board is accepted only if its own details point to the company's domain; a matching name isn't enough, because parents, subsidiaries and country entities share names. Empty derived boards are never accepted: empty accounts can name any website (in testing, an empty Workable account named apple.com).
  3. Honest result. If nothing is accepted, the company is unverified (a board exists but couldn't be confirmed; it's named as a candidate) or not found (with every board checked). If a check failed, for example an ATS server error, it's reported as error, not "not found".

Jobs are read through each system's public job-board endpoint and normalized into one schema. Workable jobs listed once per location are merged into one row.

Accuracy: how it was measured

Blind test, Oct 18, 2026, 100 companies. One AI agent picked the companies; a second labeled each company's correct board from its own careers page, and the first cross-checked 28. Neither was the agent that built this Actor. Answers were frozen before any of the tested tools ran; a script scored them.

  • 40 companies used one of our 5 systems: 32 matched (80%), 0 wrong boards. (One claimed board was a second name for the same board, serving identical job IDs; it was counted as correct after review, for us and one other tool alike.) All 8 misses were reported as "unverified", none silently. In 4 of them the right board was found but rejected because it lists no website. We trade that coverage for not returning the wrong company's jobs.
  • 60 companies had no supported board: 0 false matches on our five systems (the other two tools also had 0 there).
  • On the 40, two other Apify Actors matched 29 and 23, with 0 and 1 wrong boards on our five systems. Across all 100, the first also returned 3 wrong-company results on systems outside our five, which it covers and we don't. Both were capped at 1 job per company, so this compares board finding, not job-list completeness.

Limits: AI-labeled, not human; 40 positives is a small sample (roughly ±13 points at 95% confidence, an estimate); one local run of build 1.2.3's source. Later builds changed only how unmatched companies are reported, not which boards are accepted.

Limits

  • Only Greenhouse, Lever, Ashby, Workable and Recruitee. Companies on Workday, iCIMS, SuccessFactors, SmartRecruiters or their own career sites come back as "not found" or "unverified" and cost $0.
  • This Actor reads structured salary only from Ashby, Lever and Recruitee, when the company publishes it.
  • Workable's public endpoint has no job descriptions.

Data sources and compliance

Job data comes only from public, no-login job-board endpoints: the Greenhouse Job Board API, Lever Postings API, Ashby Public Job Posting API, Recruitee Careers Site API and Workable's public jobs widget endpoint. Company websites are read only to find board links. At most 1 request per second per host. It honors robots.txt (an unreachable robots.txt counts as "do not fetch") and doesn't export recruiter contact fields.

FAQ

Is there a Greenhouse, Lever or Ashby jobs API for many companies at once?

Each system has a public job-board API per company, but you need each company's board name. This Actor finds the board from the domain and returns all companies in one schema. Like any Apify Actor, you can run it through the Apify API, on a schedule, with integrations, or from AI agents via the Apify MCP server.

A company I know uses Greenhouse came back "not found". Why?

Its board name may differ from its domain, and its site may not link the board where we look. Add it as greenhouse:<board-name>. The SUMMARY shows which names were tried.

If I add keywords later, do old jobs come back?

Yes. Jobs your filters dropped were never delivered, so they aren't remembered: widening titleKeywords delivers older matching roles as "new". postedAt shows when each was actually posted.