
Linkedin Company Employees
io.github.johnisanerdv1.0.0更新于 Oct 5, 2026
Company employee lists from LinkedIn public pages, by job title and city, via a hosted MCP server.
概览
通过托管的 Apify MCP 服务器,让助手根据公开 LinkedIn 页面生成公司员工名单,可按职位和城市筛选。
- 功能
- 输入公司名称或 LinkedIn 公司链接后,服务器为每个人返回一行数据,包括姓名、职位或简介、地点和公开个人资料链接。可用职位关键词和地点缩小范围;默认会打开每个人的公开资料,只保留显示当前在该公司任职的人。每次运行还会写入汇总,将找到并验证的人数与 LinkedIn 自身的员工数对比。结果可下载为 JSON、CSV 或 Excel。
- 适用场景
- 适合人才地图、客户账户梳理和 CRM 数据维护:查看某公司或竞争对手当前有哪些人、某城市有哪些职位,或确认联系人是否仍显示为在职。它面向公开页面调研,不用于背景调查或雇佣验证。大公司覆盖度有限。一次验证运行每家公司约需 3 到 10 分钟。需要 Apify 账号和 API 密钥,按事件计费,建议设置费用上限。
- 运行要求
- 远程 MCP 端点 mcp.apify.com,无需本地运行时。需要 Apify 账号和 API 密钥(例如 APIFY_API_TOKEN 环境变量或客户端配置中的 Apify 令牌)。需要访问 Apify 和 LinkedIn 公开页面的网络连接。不需要 LinkedIn 登录、Cookie 或席位。
安装
在 SourceWeft 中
- 打开 控制台中的 Linkedin Company Employees,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。
其他 MCP 客户端
把它添加到你客户端的 mcpServers 配置中。
{
"mcpServers": {
"linkedin-company-employees": {
"type": "http",
"url": "https://mcp.apify.com/?tools=johnvc/linkedin-company-employees-api"
}
}
}README
👥 LinkedIn Company Employees API: Company Employee List from Python and MCP
Get a company employee list from LinkedIn as JSON: name, job title, location and public profile URL for the people who work at a company, each checked against their own public profile.
- Actor: LinkedIn Company Employees API on Apify
- Input schema: input parameters
- Get a free API token: apify.com
This repo is a Python and MCP quick-start for the LinkedIn Company Employees API on Apify. Give it company names or LinkedIn company URLs and it returns a list of employees at each company, one row per person, with name, job title, headline, location and profile URL. By default it opens each person's public profile and keeps only the people who show a current role at the company, so a LinkedIn employee list from this API leaves out the people who have moved on. It needs no LinkedIn login, cookie or seat. Expect a partial list: the API can only find people whose public profiles show up in search results, which in testing was roughly 10 to 45% of a small company, 7 to 19% of a mid-size one and under 1% of a very large one. A fresh run with profile checks takes about 3 to 10 minutes per company.
Responsible use: the API returns only what LinkedIn shows signed-out visitors and collects no contact details such as emails or phone numbers, and you are responsible for using the data lawfully.
Video Walkthrough
Text walkthrough
The LinkedIn Company Employees API turns a company name or a LinkedIn company URL into a company employee list. You pass companies (up to 50 per run) and can narrow the list with titleKeywords such as "engineer" or "head of" and locations such as "New York". Each row carries fullName, currentTitle, headline, location, profileUrl and companyName, plus verified and matchReason, which record whether the person's public profile shows a current role at the company, and foundBy, the public search that found them. For talent mapping, a recruiter can pass Datadog's LinkedIn URL with titleKeywords: ["engineer"] and locations: ["New York"] and get the engineers there who are confirmed as current staff, with title and location. The run's RUN_SUMMARY record compares what was found with LinkedIn's own employee count, so you always know how much of the company a run reached. The default run in this repo asks for three people at one small company and costs well under a cent; a fresh verified run takes 3 to 10 minutes per company, and results served from the shared cache come back much faster.
Quick Start
Prerequisites
- Python 3.11 or higher
- An Apify account and API key (get a free key here)
-
Clone the repository
-
Install dependencies with UV
-
Configure your API key
-
Run the example
The script starts one run for Firecrawl with maxResultsPerCompany: 3, prints the run id, waits for the run to finish, then prints each person and the company's coverage line from RUN_SUMMARY. To try another input, replace RUN_INPUT at the top of the script with any JSON input from this README; the optional knobs are already there as comments.
The script starts a run and then reads the dataset instead of making one synchronous call on purpose. Apify's synchronous run endpoints stop waiting after 300 seconds, and a verified run for one company can take longer than that.
Alternative: set the API key directly
Why Use This LinkedIn Company Employees API?
No LinkedIn login, cookie or seat
The API reads only what LinkedIn shows a signed-out visitor. There is no field for an account, a password or a session cookie, so no LinkedIn account is ever at risk, and anyone with a free Apify token can run it.
Each person checked against their public profile
With verifyEmployment on (the default), the API opens each person's public profile and keeps them only if it shows a current role at the company you asked about. A person whose profile shows another employer, or whose own headline says "Former" or "Retired", is dropped and never charged.
Rows you can audit
matchReason says how employment was decided and foundBy records the exact public search that found each person (or company-page for people listed on the company's own page), so any list can be checked and reproduced.
Coverage in every run
Every run writes RUN_SUMMARY with the people found and verified per company, LinkedIn's own employee count and the coverage ratio between the two.
Pay per person, never per search
Search requests and profile page reads are never charged on their own. You pay one small event per person delivered, plus one per stored row and one per run start (see Pricing).
Get a company employee list from LinkedIn
Paste company names straight from a CRM or a spreadsheet, or use LinkedIn company URLs. A URL is exact. A name is matched to its LinkedIn company page first, and a name that cannot be matched with confidence returns a CompanyNotFound error row instead of another company's people, so you can retry with the URL. One run takes up to 50 companies and returns a list of employees at each one:
Each person comes back once per company with their name, title or headline, location and profile URL. Download the dataset as JSON, CSV or Excel, or open the run's Employees view for a flat LinkedIn employee list (name, title, company, location, verified, profile URL).
How to find employees of a company
By hand, you would open the company's LinkedIn page and scroll its People tab while signed in, or search the web for site:linkedin.com/in "Company Name" and open the profiles one at a time. The API runs those public searches for you, across about a dozen role slices for a company of up to 500 people and about 30 above that, then opens each profile and keeps only current employees.
To search employees of a company by role or by place, add titleKeywords and locations. Both narrow the list and add searches that surface more people: each title keyword is its own search, which reaches people that a plain company search ranks too deep to find, and every search names the place. For a large company, raise maxSearchQueriesPerCompany (up to 100) to reach more of it.
Talent mapping: see who works on a competitor's team
Talent mapping means charting who holds which roles at the companies you hire from, before you start sourcing. If you are comparing talent mapping tools or software, this one is a pay-per-person API you can call from a script, a spreadsheet workflow or an AI agent. One function in one city at a competitor:
Each verified row gives the person's title or headline, location and how the match was made. Work history appears only on the few profiles that show it to signed-out visitors, so read the result as a map of who is on the team now, not of where they came from. A large company returns a slice of its staff; titles and cities pick which slice.
Account mapping: the decision makers at each target account
In sales, account mapping means listing the people who make or shape buying decisions at each target account. Pass your accounts and the seniority words you care about:
Seniority comes from title words only, because LinkedIn's internal seniority and function filters are not public. Title keywords match anywhere on a person's public page, so scan the titles in the result before you hand the list to outreach. The API returns no reporting lines and no emails.
CRM hygiene: confirm your contacts still work at the account
Contact records go stale as people change jobs. List who works at each account now, then match the result against your CRM by profileUrl or slug:
A contact who appears in the list is confirmed as current staff. A contact who is missing may simply not be indexed by search, so a missing name is not proof that the person left. There is no contact-list input: the API takes companies, not people.
Features
Core Capabilities
- A company employee list for up to 50 companies per run, from LinkedIn company URLs or plain company names
- Narrow by
titleKeywords(up to 20) andlocations(up to 10); both also add searches that surface more people verifyEmploymenton by default; off for a faster, search-level list- Up to 1,000 people per company with
maxResultsPerCompany, and up to 100 search slices per company withmaxSearchQueriesPerCompany - A shared cache for recent profiles, company pages and searches, with
maxAgeDaysto tighten it or switch it off - Datasets download as JSON, CSV or Excel, with a ready-made Employees view
- Works as an MCP tool in Claude, Cursor and ChatGPT (see the install sections below), and as an n8n community node (see Use from n8n)
Data Quality
verifiedandmatchReasonon every employee row; people whose profile shows no current role at the company are never returnedfoundByon every employee row, so each person can be traced to the search that found them- People whose own headline says "Former" or "Retired" are dropped
fromCacheandfetched_atshow whether a row came from the shared cache and when it was fetched- A company that cannot be matched or searched produces an error row (
CompanyNotFound,CompanyPageUnavailable,SearchUnavailableorInvalidInput), never a person charge RUN_SUMMARYreports found, verified, LinkedIn's employee count and coverage for every company
It pairs with the rest of the LinkedIn suite: the LinkedIn Company API for company size, industry and headquarters (Python example repo), the LinkedIn Profile API for full profiles from URLs you already have (Python example repo), and the LinkedIn People Search API to find people by name, job title, school or location across every company.
Coverage, speed and limits
- Partial coverage. The API finds people through public search results, so it returns the people search engines have indexed, not a full headcount. In testing that was roughly 10 to 45% of a small company, 7 to 19% of a mid-size one and under 1% of a very large one. Check
coverageinRUN_SUMMARYfor every run. - Speed. A fresh verified run takes about 3 to 10 minutes per company. Rows served from the shared cache, and runs with
verifyEmploymentoff, finish much sooner. - Long runs. Apify's synchronous run endpoints give up after 300 seconds, so for verified runs start a run, wait for it to finish, then read the dataset. The Python client does this with
start()andwait_for_finish()(see the example script); over plain HTTP, use the asynchronous Run Actor endpoint described in the Apify API reference and fetch the dataset items once the run has succeeded. - Fields can be empty. LinkedIn hides much of a profile from signed-out visitors.
currentTitleandheadlineare left out when neither the profile nor the search result shows them, and work history (positions) is rare. Fields with no value are left out of the row; onlyverifiedis always present (nullwhen the profile was not checked), so read every other field as optional. - Not available. Emails, phone numbers, reporting lines, LinkedIn's internal seniority and function filters, and former employees.
Pricing
The API is priced per event. At the time of writing (2026-10-03) every event costs $0.00001; check the Pricing tab on the Actor page for current rates.
The default run in this repo (three verified people) comes to 7 events, or $0.00007. A run that returns 100 verified people at one company comes to 201 events, about $0.002. People dropped as former employees produce no row and no charge. You can set a maximum cost per run in the Apify Console, or pass max_total_charge_usd to start() in Python; the run stops cleanly when it reaches the cap, and a very small cap also means fewer searches per company.
Usage Examples
Basic Example
The default run in the example script:
Advanced Example
Engineers and recruiters at two companies in Dublin, using every input parameter:
Fast list without profile checks
With verifyEmployment off the API skips the profile pages and returns only people whose search result lists the company as their experience. Rows have verified set to null, matchReason set to search-experience and no location, and some of those people may have left since. In testing, a run like this for one company finished in under a minute.
From an AI agent over MCP
When an assistant calls the API, pass a company name and keep the cap small, because a verified run takes minutes:
Input Parameters
Only companies is required. Everything else narrows or limits the run.
Output Format
The examples below use a synthetic person ("Jane Doe") and a made-up company. A verified row:
A found row, from a run with verifyEmployment off:
An error row, which is never charged as a person:
The RUN_SUMMARY record in the run's key-value store, trimmed to the coverage fields:
Fields you will use most:
🤖 Ask an AI assistant about this Actor
Open a ready-to-send prompt about the LinkedIn Company Employees API in the AI of your choice:
- 💬 ChatGPT
- 🧠 Claude
- 🔍 Perplexity
- 🅒 Copilot
People also search for
How can I find a list of employees at a company?
Add the company's LinkedIn URL or name to companies and run the API. It searches for the company's people, opens each public profile, and returns the ones whose profile shows a current role there, with name, title, location and profile URL. The result is a partial list: only people whose public profiles appear in search results can be found, and RUN_SUMMARY tells you what share of LinkedIn's employee count a run reached.
How do I find out who works at a company?
The manual route is a web search for site:linkedin.com/in "Company Name", then opening each profile to check it is current. The API runs those searches across role slices for you, checks every profile, and drops anyone who has moved on.
How can I verify that someone currently works for a company?
The API checks every person it finds against their public profile and returns them only when the profile shows a current role at the company you asked about. verified is true for those rows, and matchReason says how the match was made (current-position, current-company or the weaker company-name). It takes companies, not people, so it lists who works at an account; it is not a background check or an employment verification service.
Can I find company employees without a LinkedIn account?
Yes. The API reads only LinkedIn's public pages, the same ones a signed-out visitor sees. It never asks for an account, a password or a session cookie.
Can I filter LinkedIn employees by job title, location or seniority?
Yes, by title words and places. titleKeywords narrows the list to job titles such as engineer, recruiter, director or head of, and locations keeps only people in the cities, regions or countries you name. LinkedIn's internal seniority and function codes are not public, so seniority comes from title words.
Is there a way to export a company's LinkedIn employee list?
Yes. Every run writes a dataset you can download as JSON, CSV or Excel from the Apify Console or read from Python, as the example script does. The Employees view gives a flat table of name, title, company, location, verified and profile URL.
Are there free tools to find a company's employees on LinkedIn?
If you are looking for a free LinkedIn scraper for this job: Apify's free plan includes monthly platform credit, which covers small runs like the default one in this repo many times over, and free-plan accounts have a monthly cap on how many people this API returns. A paid Apify plan lifts that cap.
How can I see all the employees of a company on LinkedIn?
Not all of them, from public pages. The API returns the people search engines have indexed: in testing roughly 10 to 45% of a small company, 7 to 19% of a mid-size one and under 1% of a very large one. Add titleKeywords and locations, or raise maxSearchQueriesPerCompany, to reach more people at a large company, and check coverage in RUN_SUMMARY.
Is there a way to find out how many employees a company has?
RUN_SUMMARY shows the employee count LinkedIn lists for each company (employeesInLinkedin). For company size, industry and headquarters as their own rows, use the LinkedIn Company API.
Will LinkedIn ban you for scraping?
This API uses no LinkedIn account, so there is no account for LinkedIn to restrict. It reads only the public pages a signed-out visitor can see.
Can ChatGPT or Claude list a company's employees?
Yes, once the API is connected as an MCP tool. Use the install sections below for Claude Code (free trial), Claude Cowork (free trial), Claude on the web, Cursor or ChatGPT, then ask in plain language, for example "list the engineers at Notion". If you were looking for a LinkedIn scraper MCP server, this one runs on the hosted Apify MCP server and needs no LinkedIn login. Keep maxResultsPerCompany small in agent calls, because a verified run takes minutes.
Is this a LinkedIn employee scraper or an API?
This repo teaches the LinkedIn Company Employees API on Apify. People also search for "linkedin employee scraper", "linkedin company employees scraper" or "scrape linkedin company employees"; the same Actor covers that need and returns structured JSON you can call from Python or over MCP.
What is the difference between verified and found?
A verified person's public profile shows a current role at the company. A found person comes from search results without that check, because verifyEmployment was off, a per-company limit was reached or the profile could not be opened, and only when the search result lists the company as their experience. Each person is charged once, as found or as verified, never both.
How do I use the company employee list API from Python?
Clone this repo, run uv sync, put your Apify token in .env, and run uv run python linkedin-company-employees-api-example.py. The script shows the whole pattern: start a run with a run_input dictionary, wait for it to finish, read the default dataset, then read RUN_SUMMARY from the default key-value store.
Can I run it on a schedule?
Yes. Save your input as a task in the Apify Console and schedule it monthly. Compare runs by slug to spot new names; a person missing from a later run may simply not have been found that time, so absence is not proof that they left.
Use from n8n
Available as an n8n community node, n8n-nodes-linkedin-company-employees-api. In n8n: Settings, Community Nodes, install n8n-nodes-linkedin-company-employees-api, then use it in any workflow (it also works as an AI Agent tool). Add your Apify API token as the credential. The source is on GitHub, with example workflows for account mapping, talent mapping and a monthly CRM contact check. n8n Cloud only allows verified community nodes, so install it on a self-hosted n8n.
Install in Claude Cowork Desktop
[Install in Claude Cowork Desktop]
Cowork is the desktop app's automation mode. To give it the LinkedIn Company Employees API as a tool, add the Apify MCP server as a connector.
- Open the Claude desktop app and go to Settings → Connectors (or Settings → Developer → Edit Config to edit
claude_desktop_config.jsondirectly).- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- Add the Apify MCP server, preloaded with only this Actor:
- Restart the app. When Cowork first calls the tool, complete the OAuth prompt in your browser, or add your Apify API token in the connector settings to skip OAuth.
- In a Cowork chat, confirm the tool is available and ask it to run the LinkedIn Company Employees API.
Download the desktop app and start a free trial: https://claude.ai/referral/uIlpa7nPLg More help: https://docs.apify.com/platform/integrations/claude-desktop
Install in Claude Code
Claude Code is the command-line tool. Add the Actor's MCP server with one command:
To use a token instead of browser OAuth:
Then verify with claude mcp list, or run /mcp inside a session. Ask Claude Code to call the LinkedIn Company Employees API.
Try Claude Code free: https://claude.ai/referral/uIlpa7nPLg Claude Code MCP docs: https://code.claude.com/docs/en/mcp
Install in Claude (website)
On claude.ai you add Apify as a connector, then enable just this Actor's tool.
- Go to Settings → Connectors → Browse connectors and search for Apify MCP server. Install it (enable or update if prompted).
- When connecting, authenticate with your Apify API token, and enable the tool
johnvc/linkedin-company-employees-api. - In any chat, open + → Connectors and turn on Apify.
- Alternatively, choose Add custom connector and paste the full MCP URL
https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-company-employees-api, using OAuth when prompted. - Ask Claude to run the LinkedIn Company Employees API.
Open Claude on the web: https://claude.ai
Install in Cursor
Cursor reads MCP servers from a project file at .cursor/mcp.json.
- In your project, create
.cursor/mcp.json:
- If you prefer token auth over browser OAuth, add a header:
- Open Cursor → Settings → MCP and confirm the apify server is connected (green dot).
- In Composer or Chat, ask Cursor to call the LinkedIn Company Employees API.
New to Cursor? Get it here: https://cursor.com/referral?code=XQP4VBLI3NNX
Install in ChatGPT
ChatGPT connects to the Apify MCP server through Developer mode (available on ChatGPT Pro, Plus, Business, Enterprise, and Education plans).
- Click your profile icon, then go to Settings > Apps. If you do not see a Create app button, open Advanced settings and enable Developer mode.
- Click Create app and fill out the form:
- Name: Apify
- MCP Server URL:
https://mcp.apify.com/?tools=actors,docs,johnvc/linkedin-company-employees-api - Authentication: OAuth
- Click Create and authorize the connection with Apify.
- To use the app in a conversation, click + in the chat, choose Developer mode, and select Apify.
More help: https://docs.apify.com/platform/integrations/mcp
🌐 About Alpha OSINT
This example repo is part of Alpha OSINT, toolset of financial and operations data sources and APIs. See the LinkedIn Company Employees API source page for related tools and use cases. For support or requests for this actor, please start a ticket directly on our support page.
Use the LinkedIn Company Employees API to power your talent mapping, account mapping and CRM hygiene workflows with reliable, structured results.
Last Updated: 2026.10.04
来源:README.md,提交 9ab06df
工具
0版本历史
1- v1.0.0最新Oct 5, 2026
