LinkedIn Company Employees Scraper & Email Finder - No Login
Pricing
Pay per event
LinkedIn Company Employees Scraper & Email Finder - No Login
Under maintenanceScrape LinkedIn company employees with emails, job titles, and profiles. No login or cookies required. Export to CSV, JSON, or Excel. 从任何公司的LinkedIn页面提取员工数据。无需登录或Cookie。获取姓名、职位、个人资料链接和电子邮件。353位用户,Apify Rising Star徽章。每次查询仅需$0.005。
Pricing
Pay per event
Rating
0.0
(0)
Developer
George Kioko
Actor stats
8
Bookmarked
833
Total users
367
Monthly active users
1.9 days
Issues response
a day ago
Last modified
Categories
Share
LinkedIn Company Employees Scraper API
The fastest way to get structured employee data from any company on LinkedIn — no login, no cookies, no ban risk.
How It Works
graph LRA[Company URL or Name] --> B[Google SERP Discovery]B --> C[Profile Extraction]C --> D[Data Normalization]D --> E[Structured JSON Output]E --> F[Your CRM / Pipeline]style A fill:#e1f5festyle E fill:#c8e6c9style F fill:#fff9c4
You provide a company LinkedIn URL. The scraper discovers candidate employees through Google search, then uses price-aware LinkedIn verification only when the active PPE price can cover residential proxy cost. If verification is not economically safe, it still returns low-cost discovery results tagged with source: "google-serp-unverified" and confidence: "low".
Pricing is pay per event. The actor checks the active platform price at runtime and disables residential verification before proxy spend if that price is too low for verified mode.
Title targeting is built in: the actor can fan out decision-maker searches across an English/Spanish title set by default for small runs, or you can pass your own targetTitles list for role-specific ICPs. For runs larger than 50 companies, implicit title expansion is skipped unless you opt in explicitly with targetTitles.
Architecture
flowchart TDINPUT["Input: Company URLs + Filters"] --> QUEUE["Request Queue"]QUEUE --> SERP["Google SERP Discovery"]SERP --> VERIFY["Price-Aware LinkedIn Verification"]VERIFY --> PARSE["Profile Parser"]PARSE --> DEDUP["Deduplication Engine"]DEDUP --> OUTPUT["Dataset: JSON / CSV / Excel"]SERP -.-> SERP_PROXY["Apify GOOGLE_SERP Proxy"]VERIFY -.-> VERIFY_PROXY["Apify RESIDENTIAL Proxy"]VERIFY -.-> VPS["Warmed VPS TLS + /crawl Fallback"]SERP -.-> RETRY["Auto-Retry + Backoff"]style INPUT fill:#e3f2fdstyle OUTPUT fill:#e8f5e9style SERP_PROXY fill:#fff3e0style VERIFY_PROXY fill:#fff3e0style VPS fill:#fff3e0style RETRY fill:#fff3e0
For AI Agents & Developers
This API is designed to be called programmatically by AI agents, automation workflows, and developer pipelines.
Quick Integration (JavaScript)
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('george.the.developer/linkedin-company-employees-scraper').call({companies: ['https://www.linkedin.com/company/openai'],targetTitles: ['Director', 'Gerente'],searchQuery: 'supply chain',maxEmployees: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();// items = [{ fullName, headline, profileUrl, location, ... }]
Quick Integration (Python)
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('george.the.developer/linkedin-company-employees-scraper').call(run_input={'companies': ['https://www.linkedin.com/company/openai'],'targetTitles': ['Director', 'Gerente'],'searchQuery': 'supply chain','maxEmployees': 25,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(f"{item['fullName']} - {item['headline']}")
API Endpoint (Direct HTTP)
curl -X POST "https://api.apify.com/v2/acts/george.the.developer~linkedin-company-employees-scraper/runs?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"companies": ["https://www.linkedin.com/company/openai"], "maxEmployees": 25}'
Input / Output Schema
Input
graph TDsubgraph RequiredA["companies: string[]<br/>LinkedIn URLs or company names"]endsubgraph Optional FiltersB["targetTitles: string[]<br/>ICP titles (default EN/ES set for <=50 companies)"]C["searchQuery: string<br/>Extra keyword phrase"]D["location: string<br/>Geographic filter"]E["seniorityFilter: string[]<br/>senior, director, vp, cxo..."]F["maxEmployees: number<br/>Limit per company (1-100)"]endstyle A fill:#e8f5e9style B fill:#f3e5f5style C fill:#f3e5f5style D fill:#f3e5f5style E fill:#f3e5f5style F fill:#f3e5f5
{"companies": ["https://www.linkedin.com/company/openai"],"targetTitles": ["Director", "Gerente"],"searchQuery": "supply chain","location": "San Francisco","seniorityFilter": ["senior", "manager", "director"],"maxEmployees": 25,"maxConcurrency": 3,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["GOOGLE_SERP"]},"verificationProxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"countryCode": "US"}}
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
companies | Array | Yes | — | LinkedIn company URLs or plain company names |
targetTitles | Array | No | Default EN/ES decision-maker set for runs of 50 companies or fewer | ICP titles used for title-specific SERP expansion and verified title matching. Runs with more than 50 companies skip implicit title expansion unless you pass this field explicitly. |
searchQuery | String | No | "" | Optional extra keyword phrase for the base discovery query |
location | String | No | "" | Location filter |
maxEmployees | Integer | No | 25 | Max employees per company (1–100) |
seniorityFilter | Array | No | [] | Filter: owner, partner, cxo, vp, director, manager, senior, entry, training, unpaid. Unknown values are dropped with a warning and the run continues. |
maxConcurrency | Integer | No | 3 | Concurrent requests (1–10) |
proxyConfiguration | Object | No | GOOGLE_SERP | Phase A discovery proxy. Country routing is honored; alternate groups and custom proxy URLs are ignored. |
verificationProxyConfiguration | Object | No | RESIDENTIAL | Phase B LinkedIn verification proxy. Used only when active PPE pricing safely covers residential proxy cost. |
Output
{"publicIdentifier": "thegdb","profileUrl": "https://www.linkedin.com/in/thegdb/","fullName": "Greg Brockman","headline": "OpenAI","matchedTitles": ["President"],"titleMatchType": "partial","location": "San Francisco","company": "openai","scrapedAt": "2026-03-22T09:45:09.102Z"}
| Field | Type | Description |
|---|---|---|
publicIdentifier | string | LinkedIn profile slug |
profileUrl | string | Full LinkedIn profile URL |
fullName | string | Employee full name |
headline | string | Current role / company |
matchedTitles | string[] | Effective target titles that matched the verified headline or job title |
titleMatchType | string | exact, partial, or none based on accent-insensitive title matching |
location | string | Geographic location |
company | string | Normalized company identifier |
scrapedAt | string | ISO 8601 timestamp |
Use Cases
mindmaproot((LinkedIn<br/>Employee<br/>Scraper))SalesLead lists by titleDecision-maker discoveryCRM enrichmentRecruitingTalent mappingCompetitor hiringCandidate sourcingResearchOrg chart analysisHeadcount trackingIndustry compositionAutomationAI agent data layern8n / Make workflowsScheduled monitoring
- Sales teams — Find decision-makers at target accounts filtered by title and seniority
- LATAM agencies — Mix English and Spanish ICP titles such as
Director,Gerente General,Presidente, orDueño - Recruiters — Map talent at competitors by role, location, and level
- Investors — Quick team assessment for due diligence
- AI agents — Reliable structured data source for autonomous prospecting workflows
Pricing
graph LRSTART["Actor Start"] --> PRICE["Runtime Price Check"]PRICE --> SAFE["Verified Mode<br/>Residential Proxy"]PRICE --> DISCOVERY["Discovery Mode<br/>Google SERP Only"]style START fill:#fff9c4style PRICE fill:#e1f5festyle SAFE fill:#c8e6c9style DISCOVERY fill:#f3e5f5
Pay per event pricing is shown in Apify before each run. The actor reads the active platform price at runtime:
- If active pricing safely covers residential verification, the actor verifies candidates before emitting rows.
- If active pricing is too low for residential verification, the actor skips LinkedIn proxy spend and emits low-cost Google SERP discovery rows tagged
confidence: "low". - Unsafe high-cost inputs are rejected before proxy spend.
Integrations
graph TDSCRAPER[LinkedIn Scraper] --> API[Apify API]SCRAPER --> WEBHOOK[Webhooks]SCRAPER --> ZAPIER[Zapier]SCRAPER --> MAKE[Make.com]SCRAPER --> SHEETS[Google Sheets]SCRAPER --> SLACK[Slack]SCRAPER --> AGENTS[AI Agents<br/>Claude / GPT / Cursor]style SCRAPER fill:#e3f2fdstyle AGENTS fill:#f3e5f5
- Apify API — Trigger runs and fetch results programmatically
- Webhooks — Get notified when a run completes
- Zapier / Make — Automate data pipelines to your CRM
- Google Sheets — Export directly to spreadsheets
- AI Agents — Call via tool_use / function_calling from any LLM framework
Why This Scraper
| Feature | This Scraper | DIY Script |
|---|---|---|
| Login required | No | Yes |
| Ban risk | Zero | High |
| Proxy management | Automatic | Manual |
| Anti-bot handling | Built-in | DIY |
| Resume on failure | Yes | No |
| Success rate | 97.8% | Variable |
| Maintenance | Managed | You |
FAQ
Do I need a LinkedIn account? No. Discovery uses Google SERP. When price-aware verification is enabled, it uses warmed anonymous LinkedIn requests from the actor's VPS. No LinkedIn login is required.
Which proxy groups should I use?
Use GOOGLE_SERP for proxyConfiguration. RESIDENTIAL is only used for verificationProxyConfiguration when the runtime price check allows verified mode.
How does targetTitles work?
If you omit targetTitles or pass an empty list, the actor falls back to a built-in English/Spanish decision-maker set for runs of 50 companies or fewer: CEO, CTO, CFO, COO, CMO, President, Founder, Co-Founder, Owner, Managing Director, Director General, Presidente, Vicepresidente, Gerente General, Fundador, Socio, Dueño, Propietario. For runs larger than 50 companies, the actor skips implicit title expansion and relies on the base company query unless you pass targetTitles explicitly. Verified rows always emit, and matchedTitles / titleMatchType tell you how strongly the profile title matched your ICP list.
What happens if I pass an unsupported seniorityFilter value?
The actor logs a prominent warning, drops the unknown values, and continues with the supported subset instead of silently returning an empty dataset.
Can I scrape multiple companies? Yes. Pass an array of URLs or names.
What if a run is interrupted? Built-in state tracking skips already-processed profiles on rerun.
Can AI agents use this? Yes. Designed for programmatic use — structured JSON output, clear schema, API-first.
Support
Questions? Find me on X/Twitter @ai_in_it or open an issue on GitHub.