Hiring Signals — Sales Leads from Live Job Postings avatar

Hiring Signals — Sales Leads from Live Job Postings

Pricing

Pay per event

Go to Apify Store
Hiring Signals — Sales Leads from Live Job Postings

Hiring Signals — Sales Leads from Live Job Postings

Turn job postings into B2B sales leads. Name the roles your buyers hire for and get every company that opened one in the last N days: new roles, sample titles, seniority mix, remote share, a strong/moderate/weak signal score and an outreach angle. 2,200+ live company boards built in.

Pricing

Pay per event

Rating

0.0

(0)

Developer

daehwan kim

daehwan kim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Give it a few job titles and it reads up to 1,000 of 2,200+ live company job boards (300 by default) and returns 1 row per company that started hiring for those roles inside your time window, plus 1 summary row per keyword. Each company row carries a signal score, sample titles, the seniority mix and an outreach angle.

A job posting is a funded budget with a date on it. When a company opens four data-engineering roles in nine days, somebody just approved a data budget — and that company is a far warmer account than one that merely matches your firmographics.

This Actor turns that into a lead list. Give it the job titles your buyers hire for, and it reads hundreds of live company job boards and returns every company that started hiring for those roles inside your window — with a signal score, the sample titles, the seniority mix, and an outreach angle you can paste into a first line.


What you get

Two kinds of result row.

hiring-signal — one row per company × keyword

Mixpanel opened 21 account executive roles in 10 days (17 senior+, 76% remote) — strong buying signal

FieldWhat it is
companyName, domain, careersUrlThe account, and where the postings live
keyword, roleCategoryWhich of your keywords fired, and the function it belongs to
newRolesInWindowMatching roles first published inside your window — the signal itself
matchedRolesEvery matching role open right now, new or not
oldestNewPostedAt, newestNewPostedAtWhen the hiring wave started and how recent it is
sampleTitles, sampleApplyUrlsThree real postings, so the lead is checkable in one click
seniorityMixintern / junior / senior / principal / manager / director / executive counts
remoteShare, locationsWhere the team is being built
signalStrengthstrong · moderate · weak
signalScore, signalReasonsThe score and the plain-English rules that produced it
whyItMattersWhat a hire in this function means for a seller
suggestedOutreachAn angle for the first line of the email
totalOpenRoles, atsLabel, sourceUrlCompany context and provenance

keyword-summary — one row per keyword

Is this a market that is hiring at all, and who is loudest?

"data engineer": 57 of 299 companies are hiring (7 strong, 111 new roles in 14d) — hot

Carries companiesScanned, companiesWithSignal, signalSharePercent, strongSignals, totalNewRolesInWindow, momentum (hot / warm / cool / cold) and topCompanies — the five best accounts with their careers URLs.

Rows carrying a noticeCode are status messages, not results.

Invalid input ends the run as SUCCEEDED with a notice row.


Why this beats a job-posting database

Most "hiring intent" products sell you a snapshot of somebody's crawl, capped at a few thousand rows and days old.

  • Read live, at request time. Every company board is fetched when you press run. Nothing is served from a cached job database, so a role posted this morning is in this afternoon's run.
  • No row ceiling. There is no 5,000-record cap. On a paid plan you get every signal the run finds.
  • 2,200+ company boards built in. Every one was verified with a real request when the directory was built — no dead slugs padding the count. Leave companies empty and the Actor uses it; fill it in to watch your own target accounts instead.
  • One request per company, however many keywords. Searching ten keywords costs the same requests as searching one.

Input

FieldDefaultWhat it does
jobKeywords["data engineer", "account executive"]The roles your buyers hire for. Multi-word keywords match whole words, so account executive will not match Executive Assistant. Up to 20 per run.
postedWithinDays14How fresh a posting has to be to count as a signal.
minNewRoles1How many new roles a company needs before it counts as a lead. Raise it to keep only companies building a whole function.
companies(empty)Your own account list — slugs or careers-page URLs. Empty means use the built-in directory.
maxCompanies300How many directory boards to read, busiest boards first.
locations(empty)Keep only roles whose location mentions one of these.
remoteOnlyfalseCount only roles the board marks as remote.

Roles with no published posting date count towards matchedRoles but never towards newRolesInWindow — a signal you cannot date is a signal you cannot act on.

Example

{
"jobKeywords": ["data engineer", "analytics engineer", "head of data"],
"postedWithinDays": 21,
"minNewRoles": 2,
"maxCompanies": 500
}

Every company that opened at least two of those roles in the last three weeks, ranked by how loud the signal is.


Pricing

EventPriceWhen
run-started$0.005Once per run, when the boards start being read
hiring-signal$0.02Each company × keyword lead written to the dataset
keyword-summary$0.02Each keyword's market summary row

A typical run of 2 keywords across 300 companies returns around 130 rows.

Notice rows — no keywords supplied, no signal found, free-plan cap, charge-limit reached — are not charged.

Free Apify plans receive up to 25 rows per run and finish successfully with a note; there is no per-run lead limit on a paid plan.


Where the data comes from

The public, unauthenticated job-board JSON that each applicant tracking system serves to a company's own careers page:

ATSEndpoint
Greenhouseboards-api.greenhouse.io/v1/boards/<slug>/jobs
Leverapi.lever.co/v0/postings/<slug>
Ashbyapi.ashbyhq.com/posting-api/job-board/<slug>
Workableapply.workable.com/api/v1/widget/accounts/<slug>

No login, captcha or anti-bot measure is bypassed. Requests identify themselves honestly as ntriq-hiring-signals/1.0, run four at a time with a pause between them, and cost each company exactly one request per run.

Rebuilding the built-in directory: scripts/fetch_sources.shpython3 scripts/extract.pypython3 scripts/probe.pypython3 scripts/enrich.pypython3 scripts/fix_names.py (every candidate is re-verified against its live ATS endpoint; only a real HTTP 200 survives).


Terms, scope and responsibility

Read this before you run it.

  • This Actor is unofficial and is not affiliated with, endorsed by or sponsored by Greenhouse, Lever, Ashby, Workable, or any employer whose board it reads.
  • It reads only publicly available job postings — the same pages any visitor to the company's careers site can see. It collects no candidate data and no data from behind a login.
  • You are responsible for complying with the terms of service of each applicant tracking system and each employer whose board you read, and with the laws that apply to you.
  • You are the data controller for everything you collect with it, including any GDPR, CCPA or equivalent obligations that follow from using it for outreach.
  • Company names, domains and postings are facts published by the companies themselves. Signal scores, whyItMatters and suggestedOutreach are our rule-based interpretation, shown with their reasons on every row so you can judge them — they are commentary, not a claim about anyone's finances or intentions.

Ticking "I understand how this Actor sources data" confirms you have read this section.


Next steps

  • ATS Jobs Scraper — pull every open role at a company that signalled here, with full titles, locations, salary and descriptions from the same live board.
  • theHarvester OSINT — turn a signalling company's domain into public contact points so the lead becomes an outreach list.

Built by ntriqpro. Found it useful, or found a gap? A line in the reviews helps the next person decide.