LinkedIn Company Employees Scraper & Email Finder — No Login
Pricing
from $4.00 / 1,000 employee profiles
LinkedIn Company Employees Scraper & Email Finder — No Login
Find a company's employees on LinkedIn without login. Pass company names or URLs, filter by title & seniority, and get verified profiles — name, current title, location, profile URL — plus an optional email finder. Each match is confirmed against its public result, not a SERP guess.
Pricing
from $4.00 / 1,000 employee profiles
Rating
5.0
(1)
Developer
Muhamed Didovic
Maintained by CommunityActor stats
2
Bookmarked
318
Total users
157
Monthly active users
a day ago
Last modified
Categories
Share
LinkedIn Company Employees Scraper & Email Finder — No Cookies, Verified
Find a company's employees on LinkedIn without logging in — names, current titles, headlines, locations, and profile URLs — filtered by ICP title and seniority, with an optional contact-email finder. Pass a company name or a LinkedIn URL (mix freely), and every match is verified against its own public web result, so you get confirmed current employees — not raw search-engine guesses.
No login. No cookies required. No ban risk. Pay only for the profiles you get.
Fair billing: you pay only per delivered profile. Empty searches, failed pages, and duplicates are never charged — and the email fee applies only when a contact email is actually found.
Why use this scraper
- Verified, not guessed. Most "LinkedIn employee" tools dump whatever a search returns and tag it
low confidence. This actor reads each result's current employer, title, and location, cross-checks the employer against your target company, and labels each row high / medium / low — with a plain-English reason. Former employees and lookalikes are flagged, not sold to you as current staff. - No login, no cookie, no ban risk. Discovery runs entirely over the public web index. Your LinkedIn account is never touched. (An optional cookie mode exists for power users who want the full authenticated roster.)
- Names or URLs. Don't have the LinkedIn company URL? Just type the company name. Mix names and URLs in one run.
- ICP targeting built in. Filter by explicit titles (CEO, Head of Sales, Recruiter…) or by seniority buckets (owner, CxO, VP, director, manager…). Leave it empty and a built-in English/Spanish decision-maker set is used automatically.
- Contact emails, optional. Turn on the email finder to attach a contact email per company.
- Pay per result. Transparent pay-per-event pricing — a small run-start fee plus a flat price per profile, and a slightly higher price only when an email is found.
What it does
Give it one or more companies and, optionally, the titles/seniority you care about. The actor:
- Discovers public LinkedIn profiles associated with each company via the public web index.
- Verifies each match from its own public result — pulling current title, employer, and location, and confirming (or refuting) that the person currently works at the target company.
- Optionally finds a contact email per company.
- Returns one clean, de-duplicated row per person, each tagged with a confidence level.
No LinkedIn login is used or required in the default mode.
Supported inputs
| You provide | Example |
|---|---|
| Company name | OpenAI |
| LinkedIn company URL | https://www.linkedin.com/company/stripe/ |
| A mix of both | ["OpenAI", "https://www.linkedin.com/company/stripe/"] |
| A different search phrase for one company | { "notionhq": "Notion", "105621": "Anthropic" } |
| Target titles (ICP) | ["CEO", "Head of Sales", "Recruiter"] |
| Seniority buckets | ["cxo", "vp", "director"] |
| Location hint | "San Francisco" |
Use cases
- Sales & lead-gen — build decision-maker lists at target accounts, filtered by title and seniority, ready for your CRM.
- Recruiting & talent mapping — see who works where by role and level; map a competitor's team.
- LATAM outreach — the built-in title set includes Spanish decision-maker titles (Gerente General, Presidente, Dueño, Fundador…) so Spanish-language headlines actually match.
- Market & competitive research — headcount by function, org composition, and hiring signals.
- AI agents & automation — a clean, structured, verified data source for autonomous prospecting via the Apify API.
How it works
- Discover — for each company × target title, the actor queries the public web index for LinkedIn profiles and parses them into a unified row shape (name, headline, profile URL).
- Verify — each row is confirmed from its own public result: the current title, employer, and location are extracted and the employer is cross-checked against the target company. Confidence is high (employer confirmed as your company AND the requested title matches), medium (works there but the heading does not carry the requested title, or the employer only resembles your company — "Stripe Media Inc." for a Stripe search — or the company is merely mentioned), or low (no trace of the company at all). "Former"/"ex-" roles are detected and never sold as current.
mediumis the normal good outcome, not a weak one — see below. - Enrich (optional) — one contact email per company is discovered and stamped onto its rows.
- Return & bill — one de-duplicated row per person is written to the dataset, billed per profile (with an email premium only when an email was actually found).
An advanced deep-verify option additionally fetches each public profile page; because LinkedIn heavily gates those pages it is slow and best-effort, so it's off by default — snippet verification already confirms the current employer without it.
Input configuration
| Field | Type | Default | Description |
|---|---|---|---|
companies | array | — | Company names and/or LinkedIn company URLs, mixed. |
companySearchTerms | object | {} | Optional. Search a different phrase for one company: key = the company as you supplied it (handle, URL, typed name, or numeric id), value = the phrase to search. Your rows keep the key you supplied as their company value. |
targetTitles | array | built-in EN/ES set | ICP titles to target. Empty = built-in decision-maker set (skipped for >50 companies unless you set titles). |
seniorityFilter | array | [] | Seniority buckets expanded into titles: owner, partner, cxo, vp, director, manager, senior, entry, training, unpaid. |
location | string | "" | Optional location hint to improve relevance. |
maxItems | integer | 50 | Max employees returned per company. |
verifyProfiles | boolean | true | Confirm each row's employer/title/location from its own public result (free, recommended). |
enrichEmails | boolean | false | Find one contact email per company. |
deepVerify | boolean | false | Advanced: also fetch each public profile page (slow / best-effort). |
googlePages | integer | 3 | Result pages per company × title (more = more candidates, higher cost). |
startUrls | array | — | Advanced: LinkedIn company URLs via a request list / Google Sheet. |
cookies | array | — | Optional: li_at + JSESSIONID to enable authoritative cookie mode. |
Output
One row per person. Example (no-cookie, verified):
{"fullName": "Fidji Simo","firstName": "Fidji","lastName": "Simo","headline": "CEO, AGI Deployment at OpenAI","currentTitle": "CEO, AGI Deployment","currentEmployer": "OpenAI","location": "Palo Alto","company": "openai","profileUrl": "https://www.linkedin.com/in/fidjisimo/","publicIdentifier": "fidjisimo","source": "GS","verified": true,"confidence": "high","confidenceReason": "Confirmed from the public result — current employer matches \"openai\" and the target title matches.","matchedTitles": ["CEO"],"titleMatchType": "exact","scrapedAt": "2026-07-19T00:00:00.000Z","snippet": "CEO, AGI Deployment at OpenAI · Experience: OpenAI · Location: Palo Alto","profileDepth": "short","image": null,"connectionDegree": null,"insights": [],"contactInfo": null}
Every row carries all of the above. image, connectionDegree, insights and contactInfo
are populated only in cookie mode and are null/empty on the no-login path, where the public
web index does not expose them.
Key output fields
| Field | Description |
|---|---|
fullName / firstName / lastName | Person's name |
headline | Profile headline as indexed |
currentTitle | Current job title (parsed & verified) |
currentEmployer | Current employer (verified against the target company) |
location | Location, when available from the public result |
profileUrl / publicIdentifier | LinkedIn profile URL and slug |
company | Target company key the row was discovered under |
verified | true only when the employer is an exact match for your target company. A near-miss like "Stripe Media Inc." for a Stripe search stays false — see confidenceReason |
confidence | high / medium / low |
confidenceReason | Plain-English explanation of the confidence |
matchedTitles / titleMatchType | Which requested titles matched, and how (exact / partial / none) |
contactEmail / contactWebsite | Present only when the email finder is enabled |
source | GS (public web index) or linkedin-voyager (cookie mode) |
snippet | The search result text the verification was read from — the evidence behind confidence |
profileDepth | short from the search result, full when deepVerify fetched the profile page |
image / connectionDegree / insights / contactInfo | Cookie-mode extras; null/empty on the no-login path |
FAQ
Do I need a LinkedIn account or cookie? No. The default mode uses only the public web index — no login, no cookie, no ban risk. Cookie mode is an optional power-user feature.
How is this different from other LinkedIn employee scrapers? Most return raw search matches tagged "low confidence." This actor verifies each match against its own public result, confirms the current employer and title, flags former employees, and tells you why each row got its confidence level.
Will it include people who don't actually work there?
Discovery can surface lookalikes and former staff — that's exactly why verification exists. Every row carries a confidenceReason saying what was and was not confirmed.
Which confidence level should I filter on?
confidence != "low" — not high. high additionally requires the search result's heading to contain the title you asked for, and whether headings do that varies by company rather than by data quality: asking for "CEO" at OpenAI returns 0 high out of 20, because those people write "OpenAI" in their headline rather than their title, while the same query against Stripe returns a few, because Stripe-adjacent people write "CEO at …". Filtering to high can therefore discard an entire good run. low is the meaningful cut: it means the company appears nowhere in the result.
Can I search by company name instead of URL? Yes. Type the name directly; URLs and names can be mixed in one run.
A company URL returned far fewer people than it should — why?
A LinkedIn URL carries a handle, not always the company name, and the search uses whatever the URL gives it: notionhq returned 2 profiles where Notion returned 20. Set companySearchTerms to search the name instead — { "notionhq": "Notion" } — and every row still comes back with company: "notionhq", so nothing downstream changes. The run log names any company whose yield looks thin for this reason.
Can I use a numeric company URL like linkedin.com/company/105621/?
Yes, with companySearchTerms. The id carries no name to search, so on its own it is skipped. Map it — { "105621": "Anthropic" } — and the search runs on the name while your rows keep company: "105621", the key your own system already stores. That means the company column can legitimately hold a numeric id; it is always the key you supplied, never a name we invented. Note the phrase is also what results are verified against, and the optional email finder still looks the company up by your key rather than by the phrase.
How do I get contact emails?
Enable the email finder (enrichEmails). It's best-effort and adds contactEmail / contactWebsite.
Can AI agents call it? Yes — structured JSON output and an API-first design. Call it from any LLM/automation framework via the Apify API.
Support
Questions, edge cases, or a custom field you need? Open an issue on the Apify actor page and we'll help.
Explore More Scrapers
Building a full lead-gen or recruiting pipeline? These pair well with this actor:
- LinkedIn Company Employees — Cookie / Full-Roster Mode — the authoritative version: paste a cookie to pull a company's complete employee roster from LinkedIn's own API.
- LinkedIn Jobs Scraper — job postings by keyword, location, and company. No cookies.
- LinkedIn Profiles Scraper — full profile detail (experience, education, skills) for a list of profile URLs.
- LinkedIn Company About Scraper — company size, industry, HQ, website, and overview.
- LinkedIn Posts Scraper — profile and company posts, no cookies.
- Email Finder & Verifier — find and verify person/company emails and phone numbers.
- Crunchbase Scraper — company profiles, funding rounds, and investors for account research.
🤖 For AI Agents & LLM Apps
Compact reference for AI agents calling this actor via the Apify MCP server or the Apify API (actor: memo23/linkedin-company-employees-scraper).
Purpose: Find a company's employees on LinkedIn (name, title, employer, location, profile URL) with no login, filtered by ICP title/seniority, with each match verified against its own public web result.
Minimal input:
{"companies": ["OpenAI"],"maxItems": 25}
Add "targetTitles": ["CEO", "Head of Sales"] to filter by ICP title, or pass LinkedIn company URLs directly in companies (e.g. "companies": ["https://www.linkedin.com/company/stripe/"]).
Output: one row per person — fullName, firstName, lastName, headline, currentTitle, currentEmployer, location, company, profileUrl, publicIdentifier, source, verified, confidence, confidenceReason, matchedTitles, titleMatchType, scrapedAt; plus contactEmail and contactWebsite only when enrichEmails is on.
Behaviors an agent should know:
maxItemsis per company (default 50); always set it — an uncapped multi-company run can return hundreds of rows.targetTitlesempty = built-in EN/ES decision-maker set; that default is skipped for runs of >50 companies unless you set titles.verifyProfiles(default true) confirms employer/title from each public result for free, and withholds rows that come backlow— a search engine answers a company it cannot match by relaxing the query and returning unrelated people, and those are whatlowcatches. Set it tofalseto receive the raw matches instead. Filter onconfidence != "low"; see the note above on whyhighis the wrong cut.- Billing is pay-per-event: a run-start fee plus a flat price per delivered profile; empty/failed/duplicate results are never charged, and the email premium applies only when
enrichEmailsfinds an email. - Default mode uses only the public web index (no login/cookie); paste
li_at+JSESSIONIDincookiesfor authoritative full-roster mode.deepVerifyfetches each gated profile page (slow, best-effort) and is off by default.
⚠️ Disclaimer
This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or Microsoft. All trademarks mentioned are the property of their respective owners.
The scraper accesses only publicly available information — public web-index results and public profile data — with no authenticated LinkedIn endpoints, paid features, or content behind the LinkedIn login wall used in the default mode. Users are responsible for ensuring their use complies with LinkedIn's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organization. Scraped personal data must be processed on a lawful basis and used only for legitimate purposes.
SEO Keywords
LinkedIn company employees scraper, LinkedIn employee finder, scrape LinkedIn employees no login, LinkedIn people scraper no cookies, company employee list LinkedIn, LinkedIn lead generation scraper, LinkedIn decision maker finder, LinkedIn email finder, find employees by company, LinkedIn recruiter sourcing tool, LinkedIn org chart scraper, LinkedIn sales prospecting, LinkedIn ICP scraper, verified LinkedIn profiles, LinkedIn company people export, Apify LinkedIn scraper, LinkedIn B2B contact scraper, LinkedIn talent mapping, no-login LinkedIn scraper, LinkedIn employees email