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
Blynx
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
🚀 Turn public hiring activity into job data, company buying signals, decision-maker contacts, business emails, phone numbers, reviews, and trackable changes — in one structured dataset.
Finding an open role is useful. Knowing which company is hiring, what team is growing, who may own the decision, and how to reach the business is much more useful.
This Actor connects those pieces for sales teams, recruiters, agencies, founders, and market researchers. Start with job keywords, LinkedIn job URLs, or company URLs, then export clean records to JSON, CSV, Excel, or your own workflow.
✨ Why run this Actor?
- Find companies with active demand instead of working from a static company list.
- Prioritize accounts by hiring momentum using open-role counts, locations, departments, and a hiring-signal score.
- Turn job posts into lead context with company details, relevant decision makers, and evidence-backed contact data.
- Collect emails and phones honestly: public, generated, deliverable, catch-all, unavailable, and other statuses stay clearly separated.
- Add company reputation context from publicly visible rating and review sources when available.
- Monitor a market continuously and receive new, changed, and no-longer-observed job events.
- Audit every result with source URLs, confidence, completeness, unavailable fields, and timestamps.
No LinkedIn login or Sales Navigator account is required for public results.
🎯 Popular use cases
| Goal | How this Actor helps |
|---|---|
| B2B lead generation | Discover companies that are hiring for technologies or teams related to your offer. |
| Recruiting intelligence | Track employers, job titles, locations, seniority, and hiring departments. |
| Agency prospecting | Exclude staffing intermediaries and focus on direct employers with active demand. |
| Account scoring | Compare companies using open jobs, remote roles, salary visibility, locations, and hiring-signal scores. |
| Contact research | Find relevant public decision makers, company mailboxes, business emails, and phone evidence. |
| Market monitoring | Save a baseline and detect jobs that appeared, changed, or disappeared. |
| Employer research | Combine hiring activity with public company details and review signals. |
🧭 Choose a workflow
| Mode | Best for | Primary output |
|---|---|---|
jobs | Clean job search and export | One normalized record per public job |
signals | Account research and company scoring | Aggregated company hiring signals and enrichment |
contacts | Lead generation and outreach research | Jobs, companies, relevant people, emails, phones, and reviews |
monitor | Recurring market or competitor tracking | New, changed, and no-longer-observed job events |
selfTest | Scheduled Actor health checks | Machine-readable checks and diagnostics |
📦 What data do you get?
💼 Job records
- search query and search location;
- job ID, title, company, location, and canonical URL;
- published date and source date text;
- description, seniority, employment type, function, industry, and department;
- applicant count and benefits when publicly shown;
- application mode: external application, LinkedIn Apply, or sign-in required;
- first-seen and last-seen timestamps;
- availability, completeness, and unavailable-field markers.
📈 Company and hiring-signal records
- company name and public LinkedIn company URL;
- website, domain, legal name, description, and address when available;
- open-job, remote-job, and salary-visible-job counts;
- hiring locations, departments, and sample titles;
- hiring-signal score, label, and human-readable reasons;
- public company email and phone evidence;
- source, confidence, completeness, and timestamp fields.
🎯 Contact records
- decision-maker name, title, department, persona, and public profile URL;
- company-level public mailboxes and phone numbers;
- generated business email patterns kept explicitly labeled as
guessed; - syntax, mail-routing, and mailbox-acceptance signals when a check is possible;
- normalized E.164 phones when the country context is sufficient;
- evidence URL, confidence, verification time, and unavailable fields.
⭐ Review records
- source and review type;
- rating, rating scale, and review count;
- public title, excerpt, author, and date when exposed by the source;
- review URL, evidence type, source warnings, confidence, and timestamp.
Reviews are naturally optional. If a supported public source has no matching company or exposes no rating, the Actor reports the gap instead of inventing a value.
⚡ Ready-to-run examples
1. Export jobs with full descriptions
{"scrapeType": "jobs","queries": ["backend engineer", "data engineer"],"locations": ["Berlin", "Remote"],"includeDetails": true,"includeCompanyEnrichment": false,"includeContacts": false,"includeEmails": false,"includePhones": false,"includeReviews": false,"maxResults": 100,"maxPages": 5}
2. Build a full hiring-intent lead list
{"scrapeType": "contacts","queries": ["machine learning engineer", "head of data"],"locations": ["United States"],"targetPersonas": ["recruiter","hiring_manager","vp_engineering","head_of_data"],"includeDetails": true,"includeCompanyEnrichment": true,"includeContacts": true,"includeEmails": true,"verifyGeneratedEmails": true,"includePhones": true,"includeReviews": true,"excludeStaffingAgencies": true,"maxResults": 250,"maxContactsPerCompany": 5,"maxReviewsPerCompany": 5}
3. Enrich a list of known companies
No job query is required when you already have company URLs.
{"scrapeType": "contacts","queries": [],"companyUrls": ["https://www.linkedin.com/company/example-company/","https://example.org"],"targetPersonas": ["founder", "sales_leader", "marketing_leader"],"includeCompanyEnrichment": true,"includeContacts": true,"includeEmails": true,"verifyGeneratedEmails": true,"includePhones": true,"includeReviews": true,"maxContactsPerCompany": 5}
4. Use exact job or search URLs
{"scrapeType": "jobs","queries": [],"startUrls": [{"url": "https://www.linkedin.com/jobs/view/1234567890/"},{"url": "https://www.linkedin.com/jobs/search/?keywords=product%20manager"}],"includeDetails": true,"maxResults": 50}
5. Monitor a niche every day
Reuse the same input and watchlistName on every scheduled run.
{"scrapeType": "monitor","watchlistName": "germany-ai-hiring","queries": ["AI engineer", "machine learning engineer"],"locations": ["Germany"],"excludeStaffingAgencies": true,"maxResults": 500,"maxPages": 10}
The first run creates a baseline. Later runs emit change records for newly observed, updated, and no-longer-observed jobs.
🛠️ Input guide
You can combine discovery sources. The Actor merges and deduplicates them before producing results.
🔎 Discovery
| Field | What to enter |
|---|---|
queries | Job titles, skills, technologies, or keywords. Examples: React developer, VP Sales, SAP consultant. |
locations | Cities, regions, or countries applied to every query. Leave empty for unrestricted public results. |
startUrls | Public LinkedIn job pages or job-search URLs. |
companyUrls | Public LinkedIn company pages or official company websites for direct enrichment. |
targetPersonas | Roles to prioritize: recruiter, hiring manager, founder, engineering, data, sales, or marketing leadership. |
✨ Enrichment switches
| Field | What it controls |
|---|---|
includeDetails | Full available job description and structured job attributes. |
includeCompanyEnrichment | Company identity, website, domain, and hiring signals. |
includeContacts | Relevant public people and company contact records. |
includeEmails | Public emails and clearly labeled generated business patterns. |
verifyGeneratedEmails | Deliverability signals for emails when the receiving server permits a check. |
includePhones | Public phone numbers with source evidence. |
includeReviews | Public company rating or review evidence when available. |
🧰 Strict filters
Allowlist filters run first. Denylist filters always win. Text matching is case-insensitive.
| Field | Behavior |
|---|---|
includeTitles / excludeTitles | Keep or remove jobs by title text. |
includeCompanies / excludeCompanies | Keep or remove normalized company names. |
includeCountries / excludeCountries | Keep or remove countries by name or two-letter ISO code. |
excludeStaffingAgencies | Remove likely staffing, recruiting, and outsourcing intermediaries. |
📏 Limits
| Field | Behavior |
|---|---|
maxResults | Primary job, company, or contact limit. Enrichment can add related dataset rows. |
maxPages | Maximum result pages processed for each query/location pair. |
maxConcurrency | Number of independent public pages processed at once. The default is a balanced choice. |
maxContactsPerCompany | Contact-record limit for each company. |
maxReviewsPerCompany | Review-record limit for each company; use 0 to disable review rows. |
watchlistName | Stable snapshot name used by monitor mode. |
Fast 50-job recipe
Use this jobs-only configuration when you want to search many roles while keeping the returned dataset and runtime compact:
{"scrapeType": "jobs","queries": ["Software Engineer", "Data Engineer", "Product Manager"],"locations": ["United States"],"includeDetails": true,"maxResults": 50,"maxPages": 1,"maxConcurrency": 50}
maxResults controls the number of returned jobs. The Actor keeps extra candidates internally so strict filters can still produce a full result set, but it does not fetch detail pages for an unbounded number of jobs. For a full export of hundreds or thousands of detailed jobs, increase maxResults and expect a proportionally longer run.
🧠 Evidence-first data model
The Actor separates where a value came from from whether it appears deliverable today.
| Email status | Meaning |
|---|---|
public | Published on a public source. This confirms provenance, not current delivery. |
smtp_valid | A mailbox-level check was accepted at verification time. |
catch_all | The domain accepts arbitrary recipients, so this mailbox cannot be confirmed individually. |
mx_only | The domain can receive email, but the specific mailbox was not confirmed. |
guessed | Generated from a likely company pattern; never presented as a verified source. |
invalid | Available checks indicate the address should not be used. |
error | Verification could not be completed. Do not treat the address as verified. |
Use emailStatus, emailDeliveryStatus, emailConfidence, emailEvidenceUrl, and emailVerifiedAt together. Delivery is always a point-in-time signal and can change later.
Phone records include the public value, phoneE164 when normalization is possible, an inferred type when available, and phoneEvidenceUrl.
📤 Output and exports
Every dataset item is a flat record with a recordType. The default dataset keeps the complete, backwards-compatible export, while the Output tab exposes six clean type-specific datasets plus the overview:
- Overview — the most useful identity, status, evidence, and timestamp columns.
- Jobs — normalized public job records.
- Companies — company identity, enrichment, and aggregate hiring signals.
- Contacts — people, mailboxes, emails, phones, evidence, and confidence.
- Reviews — public company rating and review evidence.
- Changes — monitoring additions, updates, and removals.
- Diagnostics — empty, skipped, failed, or partially enriched work with a reason.
Export any view as JSON, CSV, Excel, XML, or RSS, or read the default dataset through the Apify API and integrations.
Example job record
{"recordType": "job","query": "machine learning engineer","searchLocation": "United States","jobId": "1234567890","title": "Senior Machine Learning Engineer","company": "Example Company","location": "New York, NY","jobUrl": "https://www.linkedin.com/jobs/view/1234567890/","postedAt": "2026-07-15","seniority": "Mid-Senior level","employmentType": "Full-time","applicationMode": "external","applyUrl": "https://jobs.example.com/roles/123","availabilityStatus": "available","dataCompleteness": 0.91,"unavailableFields": ["benefits"],"scrapedAt": "2026-07-17T12:00:00Z"}
Example contact record
{"recordType": "contact","contactType": "decision_maker","fullName": "Example Person","jobTitle": "VP Engineering","targetPersona": "vp_engineering","linkedinUrl": "https://www.linkedin.com/in/example-person/","company": "Example Company","email": "person@example.com","emailStatus": "guessed","emailDeliveryStatus": "mx_only","emailConfidence": 0.72,"emailEvidenceUrl": "https://example.com/team","phone": "+1 202 555 0100","phoneE164": "+12025550100","phoneEvidenceUrl": "https://example.com/contact","evidenceUrl": "https://example.com/team","confidence": 0.84,"availabilityStatus": "partial","scrapedAt": "2026-07-17T12:00:00Z"}
The records above are illustrative. Real rows keep the complete view-specific column contract.
✅ Complete fields without fake data
Every row includes all fields declared by its record-specific view:
not_availablemeans the field is relevant, but the public source did not provide it;not_applicablemeans the field does not apply to that record subtype;availabilityStatussummarizes whether the record is complete, partial, or unavailable;dataCompletenessprovides a comparable coverage score;unavailableFieldslists source gaps explicitly.
This makes CSV and Excel exports stable while preventing a missing value from being mistaken for an extraction error.
💡 Recommended settings
| Scenario | Suggested mode and settings |
|---|---|
| Fast job export | jobs, details on, all other enrichment off |
| Company prioritization | signals, company enrichment on, contacts optional |
| Full lead research | contacts, emails + phones + reviews on, 3–5 contacts per company |
| Exact account list | contacts or signals with companyUrls |
| Recurring alert | monitor with a stable watchlistName and unchanged search scope |
| First trial | 1 query, 1 location, maxPages: 1, maxResults: 10 |
💰 Cost and run size
Usage depends mainly on the number of query/location combinations, pages, jobs, companies, and optional enrichment steps.
For a predictable first run:
- Start with one query and one location.
- Set
maxPagesto1andmaxResultsto10. - Inspect the Output and Diagnostics views.
- Enable only the enrichment you need, then scale the limits.
For large lead-generation runs, company/contact/review enrichment naturally does more work than a jobs-only export. Limits always give you a clear way to control the run size.
🔄 Monitoring tips
- Keep the same
watchlistName, queries, locations, URLs, and filters across runs. - Use a new watchlist name when the scope changes materially.
- Schedule the Actor at the interval that matches your market: daily for active niches, weekly for slower ones.
- Treat “no longer observed” as a source observation, not guaranteed proof that an employer closed the role.
🧪 Scheduled health check
selfTest performs a deliberately small end-to-end run and writes a machine-readable SELF_TEST report plus diagnostics. It is suitable for recurring platform tests.
{"scrapeType": "selfTest","queries": ["software engineer"],"locations": ["United States"],"includeEmails": true,"includePhones": true,"includeReviews": true,"maxResults": 3,"maxPages": 1,"maxConcurrency": 2}
⚖️ Data coverage and responsible use
Results depend on what is publicly visible at run time. Some jobs, profiles, contacts, ratings, or review excerpts may be absent, localized, delayed, or changed by their publishers. Evidence URLs and timestamps help you assess freshness and confidence.
Use the Actor only for lawful purposes. You are responsible for applicable privacy, employment, marketing, data-protection, and website rules, including required notices and opt-out mechanisms. Do not use contact data for spam, harassment, sensitive profiling, or automated decisions about people.
This Actor is not affiliated with, endorsed by, or sponsored by LinkedIn.
❓ FAQ
Does every contact include an email and phone?
No. A real source gap is better than invented data. Emails can be public or clearly labeled generated patterns. Phone numbers require public evidence.
Is a public email the same as a verified email?
No. public describes provenance. Deliverability is reported separately, and even a positive mailbox signal is a point-in-time result rather than a guarantee.
Can I run it with company URLs and no job query?
Yes. Add companyUrls and use signals or contacts. The Actor will enrich those companies directly; contact and review coverage still depends on public evidence.
Can I combine queries, job URLs, and company URLs?
Yes. All supplied discovery sources are processed together and deduplicated.
Why did I receive fewer records than expected?
The source may expose fewer public results, strict filters may remove items, duplicates are consolidated, and optional enrichment can be unavailable. Open the Diagnostics view for run-specific counts and reasons.
Why is applyUrl unavailable for some jobs?
applyUrl is reserved for a real external application destination. LinkedIn Apply and sign-in-required flows are identified in applicationMode without inventing an external URL.
How do I avoid duplicate monitoring events?
Reuse the same watchlistName and unchanged search definition. Use a new name when you change the monitored market significantly.
What should I do with guessed or catch-all emails?
Use them as research leads, not as verified delivery guarantees. Apply your own outreach policy, suppression list, and consent or legitimate-interest assessment before contact.