LinkedIn Jobs + Recruiter Email Enrichment
Pricing
from $20.00 / 1,000 job + recruiter enrichment (premium tier)s
LinkedIn Jobs + Recruiter Email Enrichment
Every other LinkedIn jobs scraper returns the JOB. This one returns WHO TO CONTACT: job + recruiter LinkedIn profile + email pattern guess in one call. Built for recruiters, staffing agencies, and B2B SDR teams prospecting on hiring intent. PPE, no rental.
Pricing
from $20.00 / 1,000 job + recruiter enrichment (premium tier)s
Rating
0.0
(0)
Developer
Sami
Maintained by CommunityActor stats
0
Bookmarked
9
Total users
5
Monthly active users
3 days ago
Last modified
Categories
Share
LinkedIn Jobs Scraper with Recruiter Email — the only one that tells you who to call
Every other LinkedIn jobs scraper on Apify returns the job listing. This one returns the recruiter too — name, LinkedIn profile, and email pattern guess (firstname.lastname@domain) — in a single call. Skip the second-scrape step, skip the ZoomInfo seat, skip the Apollo subscription. Built for technical recruiters, staffing agencies, and B2B SDR teams who prospect on hiring intent at $0.020 per enriched job. No subscription, no monthly rental.
Other LinkedIn jobs scrapers charge a monthly rental of $19.99/mo (fetchclub) or $29.99/mo (bebity) for the job listing alone. Apify is sunsetting the rental pricing model on October 1, 2026 — those scrapers will be force-migrated to pay-per-event with bill-shock. This Actor is already PPE-native and includes recruiter enrichment at $0.020 per enriched job. Pay only for what you pull. No subscription, no minimum, no annual contract. The bebity alternative and fetchclub alternative built for the post-rental era.
How to scrape LinkedIn jobs with recruiter contact in 3 easy steps
- Go to the LinkedIn Jobs + Recruiter Enrichment page on Apify and click "Try for free"
- Enter a job-title keyword and a location (e.g.
software engineerinUnited States, ornurse practitionerinNew York) — keepincludeRecruiterEnrichment: truefor the premium tier - Click "Run", wait for the scraper to finish, then download your data in JSON, CSV, or Excel — or wire it into a daily Apify Schedule for continuous hiring-intent monitoring
No coding required. No API key. No LinkedIn account required. Works with Apify's free plan.
🏢 Running a production recruiting / SDR pipeline?
If you're pulling >10K jobs/month, polling every 15 minutes for fresh postings, monitoring 50+ search variants across geos, or need a stable schema your data warehouse won't fight you on — I offer custom output schemas matched to your CRM (Bullhorn, Greenhouse, Lever, Salesforce), dedicated proxy infrastructure for sustained throughput, a schema stability SLA (no breaking changes without 30-day notice), and volume pricing above 100K records/month.
DM me on Apify, open an Issue with subject "Enterprise inquiry", or email samimassis2002@gmail.com with subject "LinkedIn Jobs enterprise".
Table of contents
- What it does — jobs + recruiter contact in one call
- Who buys this Actor — 7 buyer personas with $/mo
- Example use cases — 6 concrete workflows with ROI math
- Pricing — $0.003 basic / $0.020 with recruiter — no subscription
- Example input + output — sample run config and record
- Scrape with Python, JavaScript, or no code — copy-paste integration
- Scheduled / recurring runs — the cron patterns that compound
- Output schema reference — every field documented
- What this Actor is NOT — honest scope
- Optional cookies — lift recall on the mid-tail
- FAQ — 14 questions targeting bebity / ZoomInfo / Apollo search intent
- Compliance posture — what we do and don't access
- Roadmap
⚠️ Read this before you run it. The premium-tier recruiter extraction requires you to paste a
cookieStringfrom a logged-in LinkedIn session into the input — LinkedIn gates the hiring contact behind authentication. Without a cookie, recruiter hit rate is <5%; with a cookie, target is 30-50%. Billing is honest: you only pay the $0.020 premium-tier rate on records where we actually delivered the recruiter contact. Records without a recruiter fall back to the $0.003 basic-tier price automatically. See Optional cookies for the 30-second setup.
What it does
- One call returns the job + the recruiter. Every record carries the job (title, company, location, description, skills, apply URL) AND — when a
cookieStringis supplied — the recruiter's name + LinkedIn URL + email pattern guesses. No chained scrape, no second pipeline. - Normalized output schema — same shape for every record. JSON or CSV, drop straight into your CRM (Bullhorn, Greenhouse, Lever, HubSpot, Salesforce) or your data warehouse.
- Tiered pricing toggle — set
includeRecruiterEnrichment: falseto drop to the basic tier at $0.003/job if you only need the listing data. Most buyers leave it on; the recruiter contact is the whole point. - Confidence tier on every email guess —
high/medium/low/none. Feedhigh-confidence guesses straight into your email validator (NeverBounce, ZeroBounce, Hunter) — typical verified-deliverable rate is 60-75%. - Filtered by recency, seniority, employment type, remote — standard LinkedIn search filters exposed as clean input fields.
- Residential proxy support — runs on Apify's residential pool by default for the lowest rate-limit risk.
- No login required — runs against LinkedIn's public job-discovery surface. Pass an optional cookie string only if you want higher recall on mid-tail queries.
Why this is different from every other LinkedIn jobs scraper
| Actor | Returns the job? | Returns the recruiter? | Returns email guess? | Model |
|---|---|---|---|---|
| zhorex/linkedin-jobs-recruiter-enrich (this one) | ✅ | ✅ | ✅ | PPE — $0.020/enriched job |
| curious_coder/linkedin-jobs-scraper | ✅ | ❌ | ❌ | PPE — $0.001/result |
| bebity/linkedin-jobs-scraper | ✅ | ❌ | ❌ | $29.99/mo rental — dying Oct 1 2026 |
| fetchclub/linkedin-jobs-scraper | ✅ | ❌ | ❌ | $19.99/mo rental — dying Oct 1 2026 |
| valig/linkedin-jobs-scraper | ✅ | ❌ | ❌ | PPE — $0.0004/result |
| worldunboxer/rapid-linkedin-scraper | ✅ | ❌ | ❌ | FREE |
There's a FREE actor that returns the job. There's a $0.0004 actor that returns the job. There's a $29.99/mo rental that returns the job. There is no other actor on the platform that returns the recruiter contact alongside the job. If your downstream workflow is "find a hire-intent signal, then reach out to the hiring manager," you're currently running two scrapers and reconciling them. This Actor collapses that into one call with one billing line.
Who buys this Actor
| Buyer profile | Use case | Typical monthly spend |
|---|---|---|
| Independent technical recruiter | Pull 100-500 fresh jobs/day in target stack (React, Go, ML/AI), reach the recruiter directly before agencies clog the inbox | $60–$300/mo |
| Staffing agency (3-30 person) | Daily pull on 5-20 role variants × 3-5 metros, feed into Bullhorn / Crelate, BD team prospects the hiring company | $300–$2,400/mo |
| B2B SDR team (dev tools, hiring tech, HR SaaS) | Daily monitoring on hiring-intent keywords (e.g. "Snowflake" jobs → sell to data team; "Klaviyo" jobs → sell to growth team), enriched leads into Salesforce | $400–$3,000/mo |
| RevOps / GTM intelligence | Trigger account-based marketing on hire signals (e.g. "VP Sales hired at Series B SaaS" → launch ABM play) | $200–$1,200/mo |
| Recruiting tools / HR SaaS founder | Bulk pull for product seed data, demo content, vertical analysis | $750–$4,500 per pull |
| VC associate / market intel | Weekly hiring pulse on portfolio cos + thesis-relevant categories | $100–$600/mo |
| AI / LLM training data team | Periodic pulls for SFT corpora — job descriptions are dense, well-formatted training text | $750–$3,750 per pull |
If you're in any of these buckets and your current workflow is "scrape jobs from one actor, then chain a separate enrichment to find the recruiter," you're paying twice and writing pipeline glue. This Actor is the merged step.
Example use cases
1. Independent recruiter — daily fresh-jobs digest with recruiter contact
Cron daily at 7am ET. Pull yesterday's software engineer jobs in 5 target metros (NYC, SF, Boston, Austin, Remote) with includeRecruiterEnrichment: true. Filter for recruiter.emailConfidence: high, hand to your email validator, drop the verified addresses into your sequencer. Typical volume: 250 jobs/day × 30 days = 7,500/mo. Cost: ~$150/mo. Replaces a $99/mo LinkedIn Recruiter Lite seat plus a separate enrichment lookup that adds another $200-$500/mo on top.
2. Staffing agency — multi-role multi-geo pipeline
Daily run across 12 role variants × 4 metros = 48 saved searches, 50 jobs each, feed straight into Bullhorn via the Apify webhook. BD team works the new hiring companies; recruiting team works the new openings. Typical volume: 48,000 jobs/mo. Cost: ~$960/mo. Replaces a $2,500-$4,000/mo combined LinkedIn Recruiter + ZoomInfo Lite stack for the same workflow.
3. SDR team selling to engineering — "Snowflake / dbt / Databricks" hiring intent
Daily run on data engineer Snowflake (and dbt, Databricks, Airflow variants). Every new job is a freshly-funded data team — your ICP. Enriched recruiter contact is your VP Data prospect (or one introduction away from them). Typical volume: 600 jobs/mo. Cost: ~$12/mo. ROI: one closed deal pays for the entire year.
4. RevOps / ABM — VP-level hire monitoring at strategic accounts
Daily run on VP Marketing / VP Sales / Head of Data in your top-200 ABM accounts. New role posted = trigger ABM play (gift, ad campaign, exec dinner invite). Typical volume: 200 jobs/mo. Cost: ~$4/mo. The most leveraged $4 in your GTM stack.
5. Hiring-tech founder — competitor + customer intelligence
Weekly pull on recruiter and talent acquisition job titles. Filter for description containing competitor product names (Greenhouse, Lever, Ashby, Workday). Build a public "who's switching ATSes" feed for marketing + a private prospect list for sales. Typical volume: 4,000 jobs/mo. Cost: ~$80/mo. Replaces a $30K/yr Crunchbase Pro + ZoomInfo combo for one specific intent signal.
6. AI / LLM training data team — job-description corpus
One-time bulk pull of 50,000 jobs across 20 verticals (engineering, healthcare, finance, retail, marketing, sales, etc.) for SFT corpus. Job descriptions are dense, structured, B2B-vocabulary-rich training text. Typical volume: 50,000 jobs one-time. Cost: ~$150 one-time (basic tier — recruiter not needed for corpus training).
Pricing
Two custom Pay-Per-Event tiers — pick the one that matches your workflow:
job-scraped-basicevent: $0.003 per job (basic tier — setincludeRecruiterEnrichment: false)job-scraped-with-recruiterevent: $0.020 per job (premium tier — recruiter LinkedIn + email guesses included)
No subscription. No monthly minimum. No setup fee. No annual contract. Cancel any time = stop running the actor.
Why premium tier vs running two scrapers separately
A typical "jobs + contacts" workflow today is: run a $0.001/result jobs scraper, then for each job, look up the recruiter by name in ZoomInfo ($0.20-$1.00 per contact) or Apollo ($0.05-$0.50). Total per record: $0.05-$1.00. This Actor delivers the same combined output at $0.020 — 3x to 50x cheaper, in one call, with one billing line.
Realistic costs
| Workflow | Volume | Tier | Cost |
|---|---|---|---|
| Solo recruiter, daily 250 jobs in 5 metros | 7,500 jobs/mo | premium | ~$150/mo |
| Staffing agency, 12 roles × 4 metros daily | 48,000 jobs/mo | premium | ~$960/mo |
| SDR team, hiring-intent monitoring (600 jobs/mo) | 600 jobs/mo | premium | ~$12/mo |
| ABM team, VP-hire monitoring on top-200 accounts | 200 jobs/mo | premium | ~$4/mo |
| Basic-tier job feed (no recruiter), 10K/day | 300,000 jobs/mo | basic | ~$900/mo |
| AI training corpus, one-time bulk | 50,000 jobs one-time | basic | ~$150 one-time |
Compared to a $29.99/mo rental that only returns the job, the daily 250-jobs-with-recruiter workflow above is meaningfully more expensive — but you get the recruiter contact, which is what your sequencer actually needs. Compared to a stacked LinkedIn Recruiter + ZoomInfo combo at $400-$1,200/mo for the same workflow, you still come out ahead at most realistic volumes, and you skip the annual contract entirely.
Apify platform compute costs (RAM-seconds) are charged separately and are negligible (typically <$0.10 per run for default config).
Example input
{"searchQuery": "software engineer","location": "United States","experienceLevel": "mid","jobType": "full_time","datePosted": "past_week","remoteOnly": false,"maxResults": 100,"includeRecruiterEnrichment": true}
One search query, one location, recruiter enrichment on. The actor paginates the public job-discovery surface, loads the full job posting, and extracts the hiring contact when present, returning 100 enriched records.
Example output (one job record)
{"jobId": "3892475821","jobUrl": "https://www.linkedin.com/jobs/view/3892475821","title": "Senior Software Engineer, Platform","companyName": "Acme Robotics Inc","companyDomain": "acmerobotics.com","companyLinkedinUrl": "https://www.linkedin.com/company/acme-robotics/","location": "San Francisco, CA","isRemote": false,"datePosted": "2026-05-14T00:00:00+00:00","employmentType": "Full-time","experienceLevel": "Mid-Senior level","description": "We're hiring a Senior Software Engineer to join the platform team building distributed control systems for our next-gen industrial robots…","skills": ["Python", "Go", "Kubernetes", "gRPC"],"applyUrl": "https://acmerobotics.com/careers/senior-swe","recruiter": {"name": "Sarah Chen","title": "Senior Technical Recruiter at Acme Robotics","linkedinUrl": "https://www.linkedin.com/in/sarah-chen-recruiter","emailGuesses": ["sarah.chen@acmerobotics.com","sarah@acmerobotics.com","schen@acmerobotics.com","sarahchen@acmerobotics.com","sarah_chen@acmerobotics.com","sarah-chen@acmerobotics.com","chen.sarah@acmerobotics.com","s.chen@acmerobotics.com","chen@acmerobotics.com"],"emailConfidence": "high"},"scrapedAt": "2026-05-17T15:30:00+00:00"}
Scrape LinkedIn jobs + recruiters with Python, JavaScript, or no code
You can run the Actor directly from the Apify Console (no code), or integrate it into your scripts.
Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("zhorex/linkedin-jobs-recruiter-enrich").call(run_input={"searchQuery": "software engineer","location": "United States","experienceLevel": "mid","datePosted": "past_week","maxResults": 100,"includeRecruiterEnrichment": True,})for job in client.dataset(run["defaultDatasetId"]).iterate_items():r = job["recruiter"]if r["emailConfidence"] in ("high", "medium"):print(f"{job['title']} @ {job['companyName']}")print(f" Recruiter: {r['name']} — {r['linkedinUrl']}")print(f" Try: {r['emailGuesses'][0]} ({r['emailConfidence']} confidence)")
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });const run = await client.actor('zhorex/linkedin-jobs-recruiter-enrich').call({searchQuery: 'software engineer',location: 'United States',experienceLevel: 'mid',datePosted: 'past_week',maxResults: 100,includeRecruiterEnrichment: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();items.filter((j) => ['high', 'medium'].includes(j.recruiter.emailConfidence)).forEach((j) => {console.log(`${j.title} @ ${j.companyName}`);console.log(` Recruiter: ${j.recruiter.name} — ${j.recruiter.linkedinUrl}`);console.log(` Try: ${j.recruiter.emailGuesses[0]} (${j.recruiter.emailConfidence})`);});
Scheduled / recurring runs (where PPE compounds)
The real value of this Actor is in scheduled monitoring, not one-off pulls. New job postings are time-sensitive — the recruiter is in inbox-zero mode in the first 24 hours after posting, drowning in 200+ applications after 72 hours. The dollar of a daily-fresh feed is worth far more than a weekly-or-monthly catch-up. Use Apify Schedules with a cron expression:
0 7 * * 1-5— weekday mornings at 7am for solo-recruiter / SDR daily digests0 */6 * * *— every 6 hours for staffing agencies competing on speed-to-recruiter*/15 * * * *— every 15 minutes during active hiring blitzes (Q1 funded-startup rush, Q3 enterprise budget cycle)0 8 * * 1— Monday morning weekly pulse for ABM teams
Each scheduled run hits the same Actor with your saved input config, pushes to the same dataset, and bills only on the new records.
Output schema reference
| Field | Type | Notes |
|---|---|---|
jobId | string | LinkedIn's numeric job id — unique across all runs |
jobUrl | string | Canonical public job-detail URL |
title | string | Job title as posted |
companyName | string | Hiring company name |
companyDomain | string|null | Derived from company website when available; falls back to guesser inferred domain when enrichment is on |
companyLinkedinUrl | string|null | Canonical public company URL when the card carries it |
location | string | Free-text city / region / "Remote" as posted |
isRemote | bool | True when "remote" tokens detected in location or description |
datePosted | ISO 8601 | UTC; empty string when LinkedIn didn't render a timestamp |
employmentType | string | "Full-time" / "Part-time" / "Contract" / "Internship" — passes through what LinkedIn renders |
experienceLevel | string | "Internship" / "Entry level" / "Associate" / "Mid-Senior level" / "Director" / "Executive" |
description | string | Full job description text |
skills | string[] | Skills surfaced in the dedicated section (empty for jobs that don't render one) |
applyUrl | string|null | External apply URL when posted; otherwise null (apply on LinkedIn) |
recruiter.name | string|null | Recruiter or hiring-team member name |
recruiter.title | string|null | Recruiter's title at the company |
recruiter.linkedinUrl | string|null | Canonical public profile URL |
recruiter.emailGuesses | string[] | Ranked email pattern guesses (most-likely first) |
recruiter.emailConfidence | enum | high / medium / low / none |
scrapedAt | ISO 8601 | When the actor extracted this record |
What this Actor is NOT
- Not a verified-email API. We generate the most-likely email patterns from name + domain — buyers verify deliverability with NeverBounce / ZeroBounce / Hunter / Apollo / their preferred validator. Typical verified-deliverable rate on
high-confidence guesses is 60-75%. - Not LinkedIn InMail. We don't send messages. We give you the contact data; bring your own sequencer (Smartlead, Instantly, Lemlist, Outreach, Salesloft).
- Not a Sales Navigator scraper. Sales Navigator is auth-gated and out of scope.
- Not a ZoomInfo replacement at the largest enterprise scale. ZoomInfo has phone numbers, technographics, intent data, org charts. This Actor is the hiring-intent + recruiter contact layer — the sweet spot for the post-rental, mid-market workflow.
- Not real-time push. Poll-based. Use
*/15 * * * *for near-real-time monitoring; you'll see new jobs within 15-30 minutes of posting. - Not a recruiter-availability scorer. We tell you who posted the job; we don't predict response rate. Pair with your sequencer's reply analytics for that.
Optional cookies (REQUIRED for premium-tier recruiter coverage)
LinkedIn gates the hiring contact behind authentication. Without a cookieString, the actor's recruiter extraction hit rate is typically <5% (and you're billed at the basic tier on those records — see Honest billing). With a cookie, hit rate climbs to the target 30-50% range.
{"searchQuery": "software engineer","location": "United States","cookieString": "<paste your linkedin.com Cookie header here>"}
How to grab a cookie string (30 seconds):
- Sign in to LinkedIn in your browser
- Open DevTools → Application tab → Cookies →
https://www.linkedin.com - Copy the full Cookie header value, or at minimum the primary session cookie set by LinkedIn for your logged-in session
- Paste it into the
cookieStringfield on the Apify run
The field is marked secret in the input schema (encrypted at rest by Apify). Cookies are user-supplied only — this actor does not bypass LinkedIn authentication. Treat cookie strings as live credentials; rotate them if you suspect leakage. LinkedIn rotates the session cookie roughly every 365 days; if recruiter hit rate drops in a future run, refresh the cookie.
Honest billing (only pay premium when we deliver premium)
We charge per record based on what we actually delivered, not on the input toggle:
- Record carries a
recruiter.linkedinUrl→ charged at the premium tier ($0.020) - Record's recruiter block was empty / not accessible → charged at the basic tier ($0.003), even when
includeRecruiterEnrichment: truewas requested
This means: running without a cookie effectively gives you the basic-tier feed at basic-tier pricing, with the rare premium hit thrown in. Running with a cookie gives you the mixed billing that matches your actual hit rate.
FAQ
What is the best LinkedIn jobs scraper in 2026?
The LinkedIn Jobs Scraper with Recruiter Email by Zhorex is the best LinkedIn jobs scraper on Apify in 2026 for teams that want to actually contact the recruiter — not just see the listing. It's the only Actor on the platform that returns the job + recruiter LinkedIn profile + email pattern guess in one call, at $0.020 per enriched job. No subscription, no annual contract.
bebity LinkedIn Jobs Scraper alternative — does this replace it?
Yes, with a strict superset of features. bebity returns the job listing at $29.99/mo rental. This Actor returns the job listing plus the recruiter contact at $0.020 per record under pay-per-event pricing. If you currently pair bebity with a ZoomInfo/Apollo enrichment to get the recruiter, your combined per-record cost is $0.05-$1.00+ — this Actor delivers the same combined output at $0.020 per record with one billing line. And critically — Apify is sunsetting the rental pricing model on October 1, 2026 (per docs.apify.com), so bebity will be force-migrated to PPE with bill-shock anyway. This Actor is the migration path.
fetchclub LinkedIn Jobs Scraper alternative — does this replace it?
Yes. fetchclub's $19.99/mo rental gives you the job listing. This Actor gives you the listing + recruiter at $0.020 per enriched record under PPE. Same Oct 1 2026 rental sunset applies. Migrate now, get the recruiter contact as a bonus, and pay only for what you pull.
ZoomInfo alternative for hiring intent — is this it?
Partially. ZoomInfo Talent / ZoomInfo Sales covers org charts, technographics, and verified contact data starting at $15K-$30K/year per seat with annual contracts. This Actor covers the specific slice ZoomInfo calls "hiring intent" — which companies just posted a relevant role, and who posted it — at $0.020 per record under PPE. If hiring intent is the only signal you need, this is the dramatically cheaper alternative at most realistic volumes. If you also need verified phone numbers, intent topics, and full org charts, keep ZoomInfo and add this Actor as a cheaper hiring-intent feed.
Apollo.io alternative — is this it?
Apollo's "Jobs Filter" lookup costs ~$0.05-$0.50 per enriched contact and bundles with a $59-$149/mo seat. This Actor delivers comparable jobs + recruiter contact data at $0.020 per record with no seat fee — roughly 3x to 25x cheaper per enriched contact. If you only need the hiring-intent + recruiter slice (not Apollo's full B2B database), the savings stack quickly. Keep Apollo for the non-hiring-intent prospecting; use this Actor for the hiring-intent slice.
How accurate are the email guesses?
We generate the canonical B2B email patterns (firstname.lastname@domain, firstname@domain, flastname@domain, etc.) ranked by published industry distribution. Typical verified-deliverable rate on high-confidence guesses (name parsed cleanly + verified company domain) is 60-75% after running through NeverBounce / ZeroBounce / Hunter. medium-confidence (domain guessed from company name) verifies at ~40-55%. We don't claim a verified deliverable in the output — we surface the candidate patterns plus confidence and leave deliverability verification to your email-validation tool of choice.
Can I scrape LinkedIn jobs in Python?
Yes. Install the Apify Python client (pip install apify-client), then call zhorex/linkedin-jobs-recruiter-enrich from any Python script. See the Python code example above. Works identically in JavaScript / Node, Go, Ruby, or any language with HTTP — Apify exposes a REST API for every actor.
Is scraping LinkedIn legal?
This Actor accesses only publicly available content on LinkedIn's public job-discovery surface — the same content any anonymous browser visitor can see. No login bypass, no private accounts, no DMs, no follower lists. Optional cookieString is user-supplied and used only to raise recall and rate limits, never to bypass authentication. The legal landscape for public-web scraping (US: hiQ v. LinkedIn 9th Circuit 2022; EU: GDPR Article 6(1)(f) legitimate interest analysis) generally permits collection of publicly-displayed data, but you should always review your local laws, GDPR requirements where applicable, and LinkedIn's user agreement for your specific use case.
Does this scrape Sales Navigator or LinkedIn Recruiter?
No. Sales Navigator and LinkedIn Recruiter are auth-gated paid products and are out of scope. This Actor operates on the public job-discovery surface only.
What is "recruiter enrichment hit rate" and what should I expect?
It's the percentage of jobs where the hiring contact was accessible to the actor AND we successfully captured a recruiter LinkedIn profile. Hit rate depends entirely on whether you supplied a cookieString:
- Without a cookie — hit rate is typically <5%. LinkedIn gates the hiring contact behind authentication; we can only catch the rare job that surfaces a recruiter in a publicly accessible view.
- With a cookie (logged-in session) — target 30-50%. Varies by company size (Fortune 500 = lower, startups = higher), seniority (senior roles = higher), and recency (fresh postings = higher).
For records where the hiring contact isn't accessible, you still get the full job listing, and the recruiter field is returned with emailConfidence: "none" so you can filter downstream. Honest billing kicks in: those records charge the basic-tier rate ($0.003), not the premium-tier rate ($0.020), even when you requested premium. You only pay premium when we actually delivered the recruiter contact.
Do I need to supply a LinkedIn cookie?
For the premium recruiter tier, effectively yes — without a cookie, the realistic hit rate is <5%. For the basic job feed, no — the actor works fully unauthenticated. See Optional cookies for the 30-second setup.
Can I run this on a schedule?
Yes — and this is where PPE compounds. Use Apify Schedules with any cron expression. Common patterns: 0 7 * * 1-5 for weekday morning digests, 0 */6 * * * for every-6-hour pulls, */15 * * * * for near-real-time hiring blitzes. Each scheduled run pushes new records to the same dataset and bills only on the new ones — duplicates across runs are not auto-deduped by the actor (filter on jobId in your downstream).
How do I avoid bill-shock?
Set a maxResults cap on every run (defaults to 50, max 1000). Combine with datePosted: past_24h and a narrow searchQuery for tight daily monitoring. The actor logs the per-run count and the split between premium-tier ($0.020, recruiter delivered) and basic-tier ($0.003, no recruiter) charges. With honest billing, the worst case for the premium toggle is paying basic-tier rates across the board — never higher than the basic price. For larger workflows, monitor cost on the Apify Console's "Account → Billing" dashboard which itemises per-actor spend.
What if the recruiter block isn't on the job?
You still get the full job listing in the output — only the recruiter.* fields are null and emailConfidence is "none". Filter your downstream on recruiter.linkedinUrl is not null if you only want the records with successful enrichment. If you want to avoid paying the premium tier on no-recruiter jobs, run a first pass with includeRecruiterEnrichment: false (basic tier at $0.003), then re-run only the interesting jobIds with enrichment on. Most buyers don't bother — the premium tier is cheap enough that the simpler one-call workflow wins.
What integrations does this support?
Standard Apify integration surface — webhook triggers, REST API, Apify Schedules, native connectors for Slack / Google Sheets / Zapier / Make / n8n / Airbyte. Output is JSON / CSV / Excel / XML / RSS. For CRM-specific shapes (Bullhorn, Greenhouse, Lever, Salesforce, HubSpot), reach out for a custom output schema — see the enterprise inquiry callout above.
Compliance posture
- Public job-discovery surface only — no private accounts, no DMs, no follower lists, no profile photos scraped
- No login bypass;
cookieStringis user-supplied and used only to raise rate limits / recall, stored as a secret in the input schema (encrypted at rest by Apify) - Email pattern guesses are computed from public name + domain, not extracted from any private LinkedIn surface. Generating canonical patterns is the same technique Hunter.io, Apollo, RocketReach, and every B2B enrichment vendor have used for a decade.
- Residential proxy support for compliance with platform fair-use norms
- For GDPR-bound use cases (EU data subjects), review Article 6(1)(f) legitimate interest balancing and your organisation's data protection impact assessment
Built on zhorex's lead-generation actor suite
This Actor complements:
- LinkedIn Company Enrichment — drop a LinkedIn company URL, get the full firmographic record
- Phone Number Validator — validate phone-number leads (E.164 normalisation, carrier lookup, do-not-call check)
- Crunchbase Scraper — funding-round and investor data for ABM and VC workflows
Chain these for a complete hiring-intent → company enrichment → contact validation pipeline. Each is PPE, each charges only on successful records.
Roadmap
- Phone-number extraction from job posting "contact for inquiries" lines (where present)
- Job description skill extraction via embeddings (replaces LinkedIn's sparse skills field)
- Per-company recruiter caching to amortise cost across many jobs at the same company
- Stripe / Notion-friendly CSV output preset
- Webhook batch mode (push records as they're scraped instead of end-of-run)
Support
Found a bug or want a new field? Open an issue on the Actor page — typical turnaround within 48 hours.
💡 Found this Actor useful? Please leave a star rating — it helps other recruiting / SDR teams discover this tool instead of paying $400-$1,200/mo for a stacked LinkedIn Recruiter + ZoomInfo combo. 30 seconds, one click.
Last updated: May 2026 · Actively maintained · Trusted by independent recruiters, staffing agencies, B2B SDR teams, and RevOps leads who prospect on hiring intent.