LinkedIn Company Employees Scraper + Email Finder avatar

LinkedIn Company Employees Scraper + Email Finder

Pricing

Pay per usage

Go to Apify Store
LinkedIn Company Employees Scraper + Email Finder

LinkedIn Company Employees Scraper + Email Finder

Extract employees from LinkedIn companies and find their verified email addresses. Perfect for lead generation, recruitment, and B2B sales outreach.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

The Profesor Baltazar

The Profesor Baltazar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Turn a list of company names into a lead list of their publicly visible employees from LinkedIn, with work-email discovery for cold outreach, recruitment, and market research.

No login. No cookies. No account risk. The actor only reads pages that are already public to logged-out visitors โ€” the same pages Google indexes.


๐Ÿงญ How it works

StepWhat happensSource
1. Company resolutionFetches the public linkedin.com/company/<slug> page and parses its schema.org JSON-LD (name, description, website)Public company page
2. Employee discoveryFinds public linkedin.com/in/<profile> URLs tied to the company via search-engine results (site:linkedin.com/in "Company" + your job-title/location terms)Public SERP
3. Profile scrapingEach public profile page โ†’ name, headline, job title, location, employer (JSON-LD Person)Public profile page
4. Email findingExtracts emails the company publishes on its own website (contact/team pages), infers the company's email format, generates candidates per namePublic company website
5. Email labelingDomain MX check; optional SMTP probe. Statuses are honest: listed_on_profile, verified, pattern_match, mx_ok, invalid_domain, not_foundDNS / SMTP

โš ๏ธ Honesty note: LinkedIn does not expose emails to logged-out visitors. Emails returned are either publicly listed on a profile/company page or pattern-generated candidates. A pattern_match email is a best guess that has not been proven deliverable โ€” verify before sending at scale. Only verified means the mail server accepted the mailbox on a live probe.


๐Ÿ“ฅ Input

FieldTypeRequiredDefaultDescription
companiesstring[]โœ…โ€”One per line: LinkedIn slug (stripe), company URL (https://www.linkedin.com/company/stripe), or domain (stripe.com)
maxEmployeesinteger 1โ€“200โŒ50Cap per company
findEmailsbooleanโŒtruePattern + public-email discovery from the company site
verifyEmailsbooleanโŒfalseSMTP RCPT probe per candidate (slower, +status verified)
jobTitlesstring[]โŒโ€”Filter, e.g. ["CFO", "VP Finance"]
locationsstring[]โŒโ€”Filter, e.g. ["San Francisco", "London"]
departmentstringโŒanyKeyword filter on title/headline
decisionMakersOnlybooleanโŒfalseKeep only C-Level / Director / Manager
proxyConfigurationobjectโŒApify ProxyRESIDENTIAL recommended โ€” LinkedIn aggressively blocks datacenter IPs

Example

{
"companies": ["stripe", "https://www.linkedin.com/company/plaid"],
"maxEmployees": 30,
"findEmails": true,
"verifyEmails": false,
"jobTitles": ["engineer"],
"decisionMakersOnly": false,
"proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"]}
}

๐Ÿ“ค Output โ€” one row per employee

FieldExampleMeaning
fullNameJane SmithFrom public profile
jobTitleStaff Software EngineerHeadline / jobTitle JSON-LD
companyNameStripeMatched public company
companyDomainstripe.comFrom company page website field
linkedinUrlhttps://www.linkedin.com/in/...Source profile
locationSan Francisco Bay AreaPublic profile location
senioritySeniorClassified from title: C-Level/Director/Manager/Senior/Mid/Other
emailjane.smith@stripe.comBest candidate (or listed email)
email_statuspattern_matchSee honesty note above
email_confidence60listed_on_profile=99, verified=95, pattern_match=60
email_candidates[...]Up to 4 generated candidates
dataSourcepublic linkedin waybackHow the profile was fetched (direct/proxy/wayback)
scrapedAtISO UTC

Export as JSON / CSV / Excel from the Output tab, or pull the dataset via API. Failed pages are skipped (not billed, not returned).


๐Ÿš€ Run it

  1. Console โ€” open the actor, paste companies, Start, watch the run log, export the dataset.
  2. API
    curl -X POST "https://api.apify.com/v2/acts/sitcod3.lab~linkedin-company-email-scraper/runs?token=$APIFY_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{"companies":["stripe"],"maxEmployees":10}'
  3. Python
    from apify_client import ApifyClient
    client = ApifyClient("YOUR_TOKEN")
    run = client.actor("sitcod3.lab/linkedin-company-email-scraper").call(
    run_input={"companies": ["stripe"], "maxEmployees": 10})
    items = client.dataset(run["defaultDatasetId"]).list_items().items

โš–๏ธ Compliance

This actor reads only public, logged-out-visible pages. You are the data controller for anything you collect. Bulk personal data falls under GDPR/CCPA โ€” establish a lawful basis and honor opt-outs before outreach. Output may not be resold as a database. The tool is not affiliated with or endorsed by LinkedIn. Respect applicable laws and terms when using the data.

๐Ÿ›  Troubleshooting

ProblemFix
no profiles discoveredSearch-engine result blocked this IP โ€” re-run (proxy group rotates) or check RESIDENTIAL is selected
Profile rows missing emailfindEmails off, or company domain has no MX โ€” status tells you which
pattern_match only, never verifiedTarget mail servers reject RCPT probes (common, by design) โ€” set verifyEmails:false to save time
Slow runsverifyEmails costs 5โ€“15 s/contact; disable unless deliverability matters