LinkedIn Jobs + Recruiter Email Enrichment avatar

LinkedIn Jobs + Recruiter Email Enrichment

Pricing

from $20.00 / 1,000 job + recruiter enrichment (premium tier)s

Go to Apify Store
LinkedIn Jobs + Recruiter Email Enrichment

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

Sami

Maintained by Community

Actor stats

0

Bookmarked

9

Total users

5

Monthly active users

3 days ago

Last modified

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

  1. Go to the LinkedIn Jobs + Recruiter Enrichment page on Apify and click "Try for free"
  2. Enter a job-title keyword and a location (e.g. software engineer in United States, or nurse practitioner in New York) — keep includeRecruiterEnrichment: true for the premium tier
  3. 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

⚠️ Read this before you run it. The premium-tier recruiter extraction requires you to paste a cookieString from 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 cookieString is 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: false to 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 guesshigh / medium / low / none. Feed high-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

ActorReturns 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-scraperPPE — $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-scraperPPE — $0.0004/result
worldunboxer/rapid-linkedin-scraperFREE

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 profileUse caseTypical monthly spend
Independent technical recruiterPull 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 intelligenceTrigger 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 founderBulk pull for product seed data, demo content, vertical analysis$750–$4,500 per pull
VC associate / market intelWeekly hiring pulse on portfolio cos + thesis-relevant categories$100–$600/mo
AI / LLM training data teamPeriodic 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-basic event: $0.003 per job (basic tier — set includeRecruiterEnrichment: false)
  • job-scraped-with-recruiter event: $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

WorkflowVolumeTierCost
Solo recruiter, daily 250 jobs in 5 metros7,500 jobs/mopremium~$150/mo
Staffing agency, 12 roles × 4 metros daily48,000 jobs/mopremium~$960/mo
SDR team, hiring-intent monitoring (600 jobs/mo)600 jobs/mopremium~$12/mo
ABM team, VP-hire monitoring on top-200 accounts200 jobs/mopremium~$4/mo
Basic-tier job feed (no recruiter), 10K/day300,000 jobs/mobasic~$900/mo
AI training corpus, one-time bulk50,000 jobs one-timebasic~$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 ApifyClient
client = 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 digests
  • 0 */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

FieldTypeNotes
jobIdstringLinkedIn's numeric job id — unique across all runs
jobUrlstringCanonical public job-detail URL
titlestringJob title as posted
companyNamestringHiring company name
companyDomainstring|nullDerived from company website when available; falls back to guesser inferred domain when enrichment is on
companyLinkedinUrlstring|nullCanonical public company URL when the card carries it
locationstringFree-text city / region / "Remote" as posted
isRemoteboolTrue when "remote" tokens detected in location or description
datePostedISO 8601UTC; empty string when LinkedIn didn't render a timestamp
employmentTypestring"Full-time" / "Part-time" / "Contract" / "Internship" — passes through what LinkedIn renders
experienceLevelstring"Internship" / "Entry level" / "Associate" / "Mid-Senior level" / "Director" / "Executive"
descriptionstringFull job description text
skillsstring[]Skills surfaced in the dedicated section (empty for jobs that don't render one)
applyUrlstring|nullExternal apply URL when posted; otherwise null (apply on LinkedIn)
recruiter.namestring|nullRecruiter or hiring-team member name
recruiter.titlestring|nullRecruiter's title at the company
recruiter.linkedinUrlstring|nullCanonical public profile URL
recruiter.emailGuessesstring[]Ranked email pattern guesses (most-likely first)
recruiter.emailConfidenceenumhigh / medium / low / none
scrapedAtISO 8601When 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):

  1. Sign in to LinkedIn in your browser
  2. Open DevTools → Application tab → Cookies → https://www.linkedin.com
  3. Copy the full Cookie header value, or at minimum the primary session cookie set by LinkedIn for your logged-in session
  4. Paste it into the cookieString field 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: true was 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.

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.

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; cookieString is 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:

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.