LinkedIn Hiring Signals & B2B Leads
Pricing
from $2.50 / 1,000 job results
LinkedIn Hiring Signals & B2B Leads
Find companies hiring right now and turn public LinkedIn jobs into actionable B2B leads. Get decision-makers, business emails, phone numbers, reviews, hiring signals, and change alertsโall in one export.
Pricing
from $2.50 / 1,000 job results
Rating
0.0
(0)
Developer
DataForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
๐ LinkedIn Hiring Signals & B2B Leads
Most LinkedIn scrapers hand you a pile of job titles and stop. This one keeps going โ from a public job page all the way to a named decision-maker with a business email you can actually send to, and it shows its work at every step.
This page is built around that output. We start with the record you came for, then explain exactly how each value in it is earned.
๐ผ Jobs ยท ๐ Hiring signals ยท ๐ฏ Decision-makers ยท ๐ง Evidence-backed emails ยท ๐ Phones ยท โญ Reviews ยท ๐ Change alerts
Here's the chain โ a run stops at whichever scrapeType you pick:
๐ queries ยท ๐ locations ยท ๐ URLsโโผโโโโโโโโโโโโโโโโโโโโโ ๐ผ Public jobs โ โโโโ scrapeType: jobs โโโโโโถ ๐ผ Job recordsโโโโโโโโโโโโโโโโโโโโโ roll roles up per companyโผโโโโโโโโโโโโโโโโโโโโโ ๐ข Company + โ โโโโ scrapeType: signals โโโถ ๐ Ranked accountsโ ๐ hiring score โ (hiringSignalScore)โโโโโโโโโโโโโโโโโโโโโ match decision-makers to personasโผโโโโโโโโโโโโโโโโโโโโโ ๐ฏ Contact โโ ๐ง email ๐ phoneโ โโโ scrapeType: contacts โโโถ โญ Scored leadโ โ MX/SMTP check โ (email + confidence)โโโโโโโโโโโโโโโโโโโโ๐ scrapeType: monitor โโ new / closed roles vs. the last snapshot
โญ The record everything leads to
A single contact row ties together the whole chain โ who, at which hiring company, with what email, and how sure we are:
{"recordType": "contact","contactType": "decision_maker","fullName": "Jordan Lee","jobTitle": "Head of Talent Acquisition","targetPersona": "recruiter","company": "Acme Robotics","companyLinkedinUrl": "https://www.linkedin.com/company/acme-robotics","linkedinUrl": "https://www.linkedin.com/in/โฆ","email": "jordan.lee@acme.com","emailStatus": "generated","emailConfidence": 0.72,"emailDeliveryStatus": "accepted","emailMxValid": true,"emailSmtpAccepted": true,"phone": "+1 415-555-0142","phoneE164": "+14155550142","evidenceUrl": "https://โฆ","confidence": 0.81,"scrapedAt": "2026-08-07T18:30:02Z"}
Three things make this row worth more than a scraped name. Here's each one, and where it comes from.
๐ฆ Spotlight 1 โ The email carries its own proof
The email field is never a naked string. It ships with a provenance label and a deliverability verdict that are kept deliberately separate, so you always know both where an address came from and whether mail routes to it.
| Field | What it tells you |
|---|---|
emailStatus | Provenance โ public (found in the open) vs generated (a likely company pattern, always labeled as guessed) |
emailConfidence | 0โ1 confidence in the address itself |
emailMxValid | The domain actually accepts mail (MX check) |
emailSmtpChecked ยท emailSmtpAccepted | A mailbox-acceptance probe, when the receiving server allows it |
emailDeliveryStatus | The routing verdict โ e.g. accepted |
emailCatchAll | Flags catch-all domains where acceptance means less |
emailVerificationSource ยท emailVerifiedAt | What ran the check, and when |
emailEvidenceUrl | The public source, for anything not generated |
Why the split matters: a generated address that passes MX + SMTP is a confident send; a public address on a catch-all domain is not. Two different fields, two different decisions โ nothing is collapsed into a single misleading "verified โ
".
Turn this on with includeEmails and verifyGeneratedEmails (both on by default). Phones follow the same rule: returned only when public evidence exists, with a normalized phoneE164 and phoneEvidenceUrl alongside.
๐ฆ Spotlight 2 โ Companies ranked by how hard they're hiring
Before you ever look at a person, signals mode tells you which companies deserve the attention. Each company row rolls up its live roles into an explainable score:
| Field | What it measures |
|---|---|
hiringSignalScore | The prioritization number for the account |
hiringSignalLabel | The plain-language band for that score |
signalReasons | The specific reasons behind it โ no black box |
openJobs ยท remoteJobs ยท salaryVisibleJobs | Volume and quality of current demand |
departmentBreakdown ยท sampleTitles | Where they're growing and for what |
Paired with identity fields โ websiteUrl, domain (with domainStatus, domainConfidence, domainEvidenceUrl), companyLegalName, companyAddress โ a signals run is a ranked account list, not a job dump. Flip excludeStaffingAgencies on (default) to keep it to direct employers.
๐ฆ Spotlight 3 โ Every row admits what it doesn't know
The killer feature isn't a field โ it's the honesty layer wrapped around all of them. Each record carries:
confidenceโ how much to trust this row overallavailabilityStatus,dataCompleteness,unavailableFieldsโ a per-row completeness report- Missing source values written as
not_available; fields that don't apply to a mode written asnot_applicable
Nothing is invented to fill a gap. A blank is labeled as a blank, and you can filter on it. That's what makes the emails above safe to act on.
๐งญ Getting the record you want
scrapeType picks how far down the chain a run goes. Same searches and toggles, different destination:
| Mode | Ends at |
|---|---|
jobs | Clean, structured job records โ the fastest export |
signals | Companies ranked by hiringSignalScore |
contacts | Decision-makers with evidence-backed emails & phones |
monitor | New / closed roles vs. the last watchlist snapshot |
selfTest | An Actor health check + diagnostics |
Go straight to leads:
{"scrapeType": "contacts","queries": ["SAP consultant"],"targetPersonas": ["recruiter", "hiring_manager"],"includeEmails": true,"includePhones": true,"verifyGeneratedEmails": true,"maxContactsPerCompany": 5}
Rank accounts by hiring intent:
{"scrapeType": "signals","queries": ["backend engineer", "VP Sales"],"locations": ["Germany", "Remote"],"excludeStaffingAgencies": true}
Just the jobs, fast:
{"scrapeType": "jobs","queries": ["software engineer"],"locations": ["New York"],"includeDetails": true,"maxResults": 100}
Watch for changes on a schedule:
{"scrapeType": "monitor","queries": ["data engineer"],"watchlistName": "data-team-watch"}
Runs read public LinkedIn pages request-only โ no login, no cookies.
maxResultscaps the primary records (jobs, companies, or contacts); related company, contact, review and diagnostic rows can add to the final item count.
๐๏ธ Where the records land
Every row is tagged with recordType and routed to its own tab:
| Tab | Holds |
|---|---|
| Overview | One quick-scan line per record โ type, status, confidence, completeness |
| Jobs | Full job records: seniority, employment type, function, applicants, benefits, apply mode |
| Companies | Hiring signals + identity, domain, address, public emails/phones |
| Contacts | Decision-makers, deliverability-checked emails, phones, evidence |
| Reviews | Public company rating / review evidence from supported sources |
| Changes | New and closed roles vs. the previous watchlist snapshot |
| Diagnostics | Per-run counts, timings, error breakdown โ never charged |
๐ Full field reference
๐๏ธ Input reference
| Field | Type | Default | Purpose |
|---|---|---|---|
scrapeType | enum | jobs | jobs ยท signals ยท contacts ยท monitor ยท selfTest |
queries | array | ["software engineer"] | Titles / skills / keywords; each combines with every location |
locations | array | [] | Cities, regions, countries (New York, Germany, Remote) |
startUrls | array | [] | Exact public LinkedIn job / search URLs |
companyUrls | array | [] | LinkedIn company pages or websites to enrich directly |
targetPersonas | array | ["recruiter","hiring_manager"] | Roles prioritized in Contacts mode |
includeDetails | bool | true | Full description, seniority, type, function, benefits, applicants |
includeCompanyEnrichment | bool | true | Website, domain, legal identity, address, hiring-signal score |
includeContacts | bool | true | Find public decision-makers matching the personas |
includeEmails | bool | true | Public + patterned business emails (guessed ones labeled) |
verifyGeneratedEmails | bool | true | Syntax + MX + optional SMTP acceptance checks |
includePhones | bool | true | Public phones, with E.164 when possible |
includeReviews | bool | true | Public company rating / review evidence |
includeTitles ยท excludeTitles | array | [] | Allow/deny jobs by title substring |
includeCompanies ยท excludeCompanies | array | [] | Allow/deny by company name |
includeCountries ยท excludeCountries | array | [] | Allow/deny by country name or ISO code |
excludeStaffingAgencies | bool | true | Drop staffing / recruiting intermediaries |
maxResults | int | 100 | Max primary job / company / contact records |
maxPages | int | 5 | Result pages per query/location combo |
maxReviewsPerCompany | int | 5 | Review rows per company (0 = none) |
maxContactsPerCompany | int | 5 | Contacts per company |
watchlistName | string | default | Snapshot name Monitor compares against |
maxConcurrency | int | 10 | Public pages processed at once (1โ100) |
maxRetries | int | 5 | Attempts for a temporarily unavailable request |
proxyConfiguration | object | Residential | Connection settings (Residential recommended) |
๐ฌ Common questions
Do I need a LinkedIn login or cookies? No โ public pages are read request-only.
What separates a generated email from a public one? Provenance. public was found in the open; generated is a likely company pattern, always labeled as guessed and never dressed up as evidence. Deliverability (emailDeliveryStatus) is scored independently either way.
Do I pay for blocked or empty pages? You're charged per saved result โ jobs, signals, contacts, reviews, changes. Diagnostics rows aren't charged, and a run that hits its charge limit stops early and says so.
How do I track hiring over time? Run scrapeType: "monitor" with a stable watchlistName and search scope on a schedule; new and closed roles appear in the Changes tab from the second run on.
Pick a scrapeType, add a search or a company URL, and press Start โ the record at the top of this page is what comes back.
๐ฌ If a run turned into a lead you could actually send to, leaving a review on the Apify Store is the best way to support it โ a rating lifts the Actor in search and tells me where to aim next.
๐ท๏ธ Tags: linkedin ยท linkedin jobs ยท lead generation ยท b2b leads ยท sales intelligence ยท hiring signals ยท recruiting ยท email finder ยท contact enrichment ยท jobs scraper