Skip to main content
ClaudeWave
johnisanerd avatar
johnisanerd

Apify-LinkedIn-Company-Employees-API

View on GitHub

Company employee list: Python + MCP quick-start for the LinkedIn Company Employees API on Apify. Call it from Python (uv) or as an MCP tool in Claude and Cursor. Returns structured JSON for talent mapping, account mapping and CRM hygiene.

MCP ServersOfficial Registry0 stars0 forks● PythonUpdated today
ClaudeWave Trust Score
62/100
· OK
Passed
  • ✓Actively maintained (<30d)
  • ✓Clear description
  • ✓Topics declared
  • ✓Documented (README)
Flags
  • !No standard license detected
  • !Install pipes a remote script into a shell (curl | sh)
Last scanned: 10/5/2026
Install in Claude Code / Claude Desktop
Method: UVX (Python) · apify-linkedin-company-employees-api
Claude Code CLI
claude mcp add apify-linkedin-company-employees-api -- uvx apify-linkedin-company-employees-api
claude_desktop_config.json (Claude Desktop)
{
  "mcpServers": {
    "apify-linkedin-company-employees-api": {
      "command": "uvx",
      "args": ["apify-linkedin-company-employees-api"],
      "env": {
        "APIFY_API_TOKEN": "<apify_api_token>"
      }
    }
  }
}
1. Run the command above in your terminal (Claude Code), or paste the JSON config into claude_desktop_config.json (Claude Desktop).
2. Replace any <placeholder> values with your API keys or paths.
3. Restart Claude. The MCP server and its tools appear automatically.
💡 Package name inferred from the repository name. Verify it exists on PyPI, or clone https://github.com/johnisanerd/Apify-LinkedIn-Company-Employees-API and follow its README.
Detected environment variables
APIFY_API_TOKEN
Use cases

MCP Servers overview

# 👥 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](https://apify.com/johnvc/linkedin-company-employees-api?fpr=9n7kx3)
- Input schema: [input parameters](https://apify.com/johnvc/linkedin-company-employees-api/input-schema?fpr=9n7kx3)
- Get a free API token: [apify.com](https://apify.com?fpr=9n7kx3)

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

[![Watch the walkthrough](https://img.youtube.com/vi/jREWahDGhJM/maxresdefault.jpg)](https://www.youtube.com/watch?v=jREWahDGhJM)

### 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](https://apify.com?fpr=9n7kx3))

1. **Clone the repository**
   ```bash
   git clone https://github.com/johnisanerd/Apify-LinkedIn-Company-Employees-API.git
   cd Apify-LinkedIn-Company-Employees-API
   ```

2. **Install dependencies with UV**
   ```bash
   # Install UV if you do not have it:
   curl -LsSf https://astral.sh/uv/install.sh | sh

   # Install project dependencies:
   uv sync
   ```

3. **Configure your API key**
   ```bash
   cp .env.example .env
   # Edit .env and add your Apify API key
   # Get your free API key at: https://apify.com?fpr=9n7kx3
   ```

4. **Run the example**
   ```bash
   uv run python linkedin-company-employees-api-example.py
   ```

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
```bash
export APIFY_API_TOKEN="your_api_key_here"
uv run python linkedin-company-employees-api-example.py
```

## 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](#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:

```json
{
  "companies": [
    "https://www.linkedin.com/company/stripe",
    "Datadog",
    "https://www.linkedin.com/company/vercel"
  ],
  "maxResultsPerCompany": 25
}
```

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:

```json
{
  "companies": ["https://www.linkedin.com/company/datadog"],
  "titleKeywords": ["engineer"],
  "locations": ["New York"],
  "maxResultsPerCompany": 30,
  "verifyEmployment": true
}
```

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:

```json
{
  "companies": ["Ramp", "Deel", "Vercel"],
  "titleKeywords": ["vp", "head of", "director"],
  "maxResultsPerCompany": 15,
  "verifyEmployment": true
}
```

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`:

```json
{
  "companies": [
    "https://www.linkedin.com/company/stripe",
    "https://www.linkedin.com/company/microsoft"
  ],
  "titleKeywords": ["procurement", "accounts payable"],
  "maxResultsPerCompany": 30,
  "verifyEmployment": true
}
```

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) and `locations` (up to 10); both also add searches that surface more people
- `verifyEmplo
account-mappingaccount-mapping-salesapiapifyclaudecompany-employee-listcrm-data-hygienecrm-hygienecursorhow-to-find-employees-of-a-companylinkedin-company-employeesmcppythontalent-mappingtalent-mapping-toolsuv

What people ask about Apify-LinkedIn-Company-Employees-API

What is johnisanerd/Apify-LinkedIn-Company-Employees-API?

+

johnisanerd/Apify-LinkedIn-Company-Employees-API is mcp servers for the Claude AI ecosystem. Company employee list: Python + MCP quick-start for the LinkedIn Company Employees API on Apify. Call it from Python (uv) or as an MCP tool in Claude and Cursor. Returns structured JSON for talent mapping, account mapping and CRM hygiene. It has 0 GitHub stars and its last recorded update is dated 2026-10-05.

How do I install Apify-LinkedIn-Company-Employees-API?

+

You can install Apify-LinkedIn-Company-Employees-API by cloning the repository (https://github.com/johnisanerd/Apify-LinkedIn-Company-Employees-API) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.

Is johnisanerd/Apify-LinkedIn-Company-Employees-API safe to use?

+

Our security agent has analyzed johnisanerd/Apify-LinkedIn-Company-Employees-API and assigned a Trust Score of 62/100 (tier: OK). See the full breakdown of passed checks and flags on this page.

Who maintains johnisanerd/Apify-LinkedIn-Company-Employees-API?

+

johnisanerd/Apify-LinkedIn-Company-Employees-API is maintained by johnisanerd. The last recorded GitHub activity is dated 2026-10-05, with 0 open issues.

Are there alternatives to Apify-LinkedIn-Company-Employees-API?

+

Yes. On ClaudeWave you can browse similar mcp servers at /categories/mcp, sorted by popularity or recent activity.

Deploy Apify-LinkedIn-Company-Employees-API to your cloud

Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.

Maintain this repo? Add a badge to your README

Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.

Featured on ClaudeWave: johnisanerd/Apify-LinkedIn-Company-Employees-API
[![Featured on ClaudeWave](https://claudewave.com/api/badge/johnisanerd-apify-linkedin-company-employees-api)](https://claudewave.com/repo/johnisanerd-apify-linkedin-company-employees-api)
<a href="https://claudewave.com/repo/johnisanerd-apify-linkedin-company-employees-api"><img src="https://claudewave.com/api/badge/johnisanerd-apify-linkedin-company-employees-api" alt="Featured on ClaudeWave: johnisanerd/Apify-LinkedIn-Company-Employees-API" width="320" height="64" /></a>