Hiring Signals & Salary Data from Greenhouse, Lever, Ashby
Pricing
from $10.00 / 1,000 company signal rows
Hiring Signals & Salary Data from Greenhouse, Lever, Ashby
Hiring velocity, open roles and advertised pay for companies on Greenhouse, Ashby and Lever, tracked daily since Nov 2026. Input a domain, name or careers URL; get one row per company: open jobs, change over time, growing departments, new locations, pay medians.
Pricing
from $10.00 / 1,000 company signal rows
Rating
0.0
(0)
Developer
Signalloom
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Features
Share
Signalloom Hiring Intelligence. One row per company: open roles, hiring velocity, growing departments, new locations and advertised pay ranges. Give it a domain (okta.com), a company name, a careers page or a job-board URL. For companies in our daily-tracked panel, rows carry history and trends; for any other company with a public Greenhouse, Ashby or Lever board, you get a live snapshot.
- Hiring velocity from our own history: we record every tracked company's job board every day, so the change in open roles, the jobs added and removed, and which departments grew all come from real daily snapshots, not guesses.
- Salary data: the company's advertised pay median, p25 and p75 (USD), by role family, plus a pay-benchmark mode with medians by role family, seniority and US state.
- One row per company, flat fields: built for Clay, n8n, Make, Google Sheets and AI agents. Each array also comes as a joined text column (
topDepartmentsText), and every row has a one-sentencesummary. - Fast: lookups take about a second. The 3-company example finishes in about 2 seconds of run time.
Price: $0.01 per company row (company and discover modes), $0.02 per pay-benchmark cell, and $0.002 per job only if you turn on Include open jobs. Rows for companies that can't be found are free.
Use this when…
- you want hiring signals for a list of accounts: who is growing, which teams, where
- you need company job growth (open roles and their change over time) from a domain or company name
- you want salary data from real job postings: what a company advertises, or the market median for a role and state
- you're enriching a CRM or Clay table with open jobs, growing departments and pay per company
- an AI agent needs a one-line, factual hiring summary for a company
Recipes
- Sales (SDR/AE): run your target accounts weekly; keep rows where
hiringTrendissurgingorgrowing, or wherefastestGrowingDepartmentmatches what you sell into. Sendsummaryto Slack. - RevOps and agencies: enrich a company list with
openJobs,openJobsChange30d,topDepartmentsText,payMedianUsdandsummary. - Recruiting and HR: use pay-benchmark mode monthly for your roles and states; use discover mode to find companies hiring in your niche.
Modes and input
| Mode | What you give | What you get |
|---|---|---|
company (default) | companies: domains, names, careers URLs, board URLs or greenhouse:slug / ashby:slug / lever:slug | exactly one row per company |
discover | departmentKeywords, locationContains, minOpenJobs, trend, maxCompanies (default 50) | tracked companies matching the filters, fastest-growing first |
pay-benchmark | roleFamily, seniority, region (US, US-CA, US-remote, GB…), maxCells (default 20) | p25 / median / p75 pay cells |
historyWeeks (default 12) sets how many weekly counts openJobsWeekly holds. includeJobs adds each company's current open jobs as separate rows.
How companies are matched (matchedBy): board-url (you gave the board), directory (our panel or our directory of 8,150 public boards, by domain or name), careers-page (a job-board link on the company's own careers page, with its robots.txt respected) or name-guess (the domain or name tried as a board name). Check matchedBy and boardUrl when a name is ambiguous.
Output
Company row (real record from a run on 2026-11-13, arrays shortened):
{"recordType": "company","input": "okta.com","matchedBy": "directory","platform": "greenhouse","boardSlug": "okta","companyName": "Okta","boardUrl": "https://job-boards.greenhouse.io/okta","domain": "okta.com","coverage": "daily-panel","trackedSince": "2026-11-11","daysTracked": 2,"asOf": "2026-11-12","openJobs": 373,"openJobsChange7d": null,"openJobsChange30d": null,"openJobsChange90d": null,"openJobsChangeSinceStart": -6,"jobsAddedSinceStart": 7,"jobsRemovedSinceStart": 17,"trendWindowDays": 1,"hiringTrend": "steady","growthPercentile": 20,"topDepartments": [{ "department": "SW Eng - Applications-674", "openJobs": 48, "change30d": null },{ "department": "Enterprise Sales-340", "openJobs": 26, "change30d": null }],"fastestGrowingDepartment": "SW Eng - Applications-674","topLocations": [{ "location": "Bengaluru, India", "openJobs": 101 },{ "location": "Toronto, Ontario, Canada", "openJobs": 50 }],"remoteShare": 0,"payTransparencyShare": 0.61,"payMedianUsd": 210750,"payP25Usd": 176938,"payP75Usd": 260000,"payPostingsUsd": 138,"payByRoleFamily": [{ "family": "engineering", "postings": 37, "median": 218500 },{ "family": "sales", "postings": 31, "median": 309000 }],"sampleNewTitles": ["Alliance Partnership Manager", "Principal Software Engineer in Test"],"openJobsWeekly": [{ "weekEnding": "2026-11-12", "openJobs": 373 }],"summary": "Okta: 373 open roles, -6 since tracking began on 2026-11-11, mostly SW Eng - Applications-674 in Bengaluru, India; trend steady (1-day window)."}
A company outside the panel gets coverage: "live-only": current open jobs, departments, locations, remote share and pay (Ashby and Lever publish it in structured form), with every change field null:
{"input": "linear.app", "matchedBy": "directory", "platform": "ashby", "companyName": "Linear","coverage": "live-only", "openJobs": 33, "openJobsChange30d": null, "hiringTrend": null,"topDepartmentsText": "GTM (18); Product (13); Operations (2)", "remoteShare": 0.91,"payTransparencyShare": 0.39, "payMedianUsd": 209500,"summary": "Linear: 33 open roles, live snapshot, no history yet, mostly GTM in North America."}
Pay-benchmark cell (real record):
{"recordType": "pay-benchmark", "roleFamily": "engineering", "seniority": "senior", "region": "US", "currency": "USD","postings": 572, "companies": 130, "p25": 155000, "median": 176250, "p75": 200000,"weeklyMedian": [{ "weekEnding": "2026-11-15", "median": 176250 }], "asOf": "2026-11-12","summary": "engineering senior in US: median USD 176,250 (p25 155,000, p75 200,000) from 572 postings at 130 companies."}
hiringTrend compares open roles now with 30 days ago (or with the first day of tracking, when that's more recent): surging (+20% and at least +3 roles), growing (+5%), steady, slowing (-5%), freezing (-25% and at least -3 roles, or no open roles left). trendWindowDays says how many days it covers.
Use in Clay
- In your Clay table, add an enrichment column and pick Run Apify Actor (Clay's built-in Apify integration; you connect your own Apify account).
- Choose Hiring Signals (
signalloom/hiring-signals). - Set the input to
{"companies": [/Domain], "mode": "company"}, with your Domain column token in place of/Domain, unquoted. - Run it on 50–100 rows at a time. Each row returns exactly one item; map
summary,openJobs,openJobsChange30d,hiringTrend,topDepartmentsTextandpayMedianUsdto columns.
n8n, Make and Zapier
- n8n: use the official Apify node, Run an Actor and get dataset, with Actor
signalloom/hiring-signals. Typical flow: Schedule (Monday) → Google Sheets (accounts) → Hiring Signals → filterhiringTrend→ Slack. - Make: the Apify app's Run an Actor module (synchronous) → map the fields back to your sheet or CRM row.
- Zapier: use Apify's Zapier app to run the Actor with the same input JSON, then fetch the run's dataset items.
Coverage (2026-11-13)
| Companies | Platforms | History | |
|---|---|---|---|
| Daily panel | 500 (300 Greenhouse, 175 Ashby, 25 Lever) | job boards with 10–500 open roles; staffing agencies and aggregators excluded | daily since 2026-11-11; pay since 2026-11-12 |
| Live lookups | any public board; our directory lists 8,150 (4,771 Greenhouse, 3,166 Ashby, 213 Lever) | Greenhouse, Ashby, Lever | current snapshot only |
| Pay | 306 panel companies with at least 3 USD postings with pay; 262 benchmark cells |
Limitations
- Trends need history; we started tracking on 2026-11-11. 7-day fields fill in from about 2026-11-18, 30-day fields from about 2026-12-11, 90-day fields from about 2027-02-09. Until then they are
null, never estimated.openJobsChangeSinceStartshows what we have so far. - Panel data is refreshed once a day, so
asOfcan be a day behind the live board. - Pay is the advertised range (midpoint, annualized), not actual pay. Company pay figures need at least 3 USD postings; benchmark cells need at least 10 postings from at least 5 companies. OTE and total-compensation ranges are excluded.
- Department names are the company's own (Greenhouse departments sometimes carry cost-centre codes).
- Live lookups cover Greenhouse, Ashby and Lever. Workday and other systems aren't covered yet.
Data handling
- Sources: the documented public job-board APIs of Greenhouse (Job Board API), Ashby (Job Postings API) and Lever (Postings API), and companies' own careers pages, read only when their robots.txt allows it. No logins, no browser, no proxies.
- Output: companies, job titles, departments, locations and published pay only. No names of recruiters or employees, no emails, no phone numbers, no job-description text.
- Not affiliated with or endorsed by Greenhouse, Ashby or Lever.
Related
Company Jobs Feed returns every individual job (8 hiring platforms, with new-job alerts), at $2 per 1,000 jobs.
Feedback
Missing a company, or a match looks wrong? Open an issue on the Issues tab.