# LinkedIn Company Employees Scraper (`apt_marble/linkedin-company-employees-scraper`) Actor

Map the workforce of any LinkedIn company. Get a clean roster of names, titles, regions, and profile URLs — either through public Google discovery (no login) or via your LinkedIn session cookie for the complete current employee list.

- **URL**: https://apify.com/apt\_marble/linkedin-company-employees-scraper.md
- **Developed by:** [Hamza](https://apify.com/apt_marble) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 9 total users, 5 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 employee profile scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Linkedin Company Employees Scraper

**Get the people behind any LinkedIn company in one click.** Paste a company link, hit Start, and walk away with a clean spreadsheet of names, job titles, regions, and profile URLs — ready for your CRM, your applicant tracker, or your weekend competitive-research deep-dive.

No browser extensions, no Chrome plugins, no scraping infrastructure to babysit. Just a single Apify actor that runs in the cloud.

---

### What you get back

Every run produces a structured dataset where each row is one person:

```json
{
    "name": "Mira Castellanos",
    "headline": "Staff Product Designer at Anthropic",
    "location": "Brooklyn, NY",
    "profileUrl": "https://www.linkedin.com/in/miracastellanos",
    "companyUrl": "https://www.linkedin.com/company/anthropic/",
    "companyName": "Anthropic",
    "companySlug": "anthropic",
    "source": "voyager",
    "scrapedAt": "2026-05-10T15:23:01.904Z"
}
````

The full field list:

| Field | What it is |
|---|---|
| `name` | The person's full name |
| `headline` | Their LinkedIn headline (typically title + company) |
| `location` | Geographic region (available in Pro Mode only) |
| `profileUrl` | Direct link to the LinkedIn profile |
| `companyUrl` | The source company page you queried |
| `companyName` | The company's display name |
| `companySlug` | LinkedIn URL slug, e.g. `anthropic` |
| `source` | `voyager` (cookie-based) or `serp` (Google-based) |
| `scrapedAt` | ISO 8601 timestamp |

Export it to CSV, JSON, Excel, or pipe it into Zapier, Make, or directly into Apify's HTTP webhook output.

***

### Two ways to run it

#### 🟢 Free Mode — public discovery, no LinkedIn account

Drop a company URL in, run it, get results. Behind the scenes the actor queries Google for profiles indexed under `site:linkedin.com/in` matching the company name, then parses what Google returns.

Yields **roughly 50–100 profiles per company**. Great for previews, quick lead lists, or anything where you don't want to involve a LinkedIn login.

#### 🔑 Pro Mode — paste your `li_at` cookie

When you provide your LinkedIn session cookie, the actor switches to LinkedIn's authenticated Voyager API:

- Returns the **complete current employee roster** (hundreds or thousands of profiles)
- Includes **location data**
- Only **current** employees (Free Mode mixes in former staff)
- Fully paginated — no Google ceiling

Pro Mode uses Apify's residential proxy to keep the session stable.

**How to grab your `li_at` cookie** (takes 30 seconds):

1. Sign into LinkedIn in your browser
2. Open DevTools — `F12` on Windows, `Cmd+Opt+I` on Mac
3. Application tab → Cookies → `https://www.linkedin.com`
4. Find the row named `li_at` and copy the Value column
5. Paste it into the **Session Cookie** field in this actor

Your cookie is encrypted in storage and never written to logs.

***

### Who actually uses this

**Outbound sales reps.** Generate target-account contact lists in seconds instead of clicking through LinkedIn one profile at a time. Plug headlines into your sequencer to personalize at scale.

**Founders and recruiters.** Map the engineering team at the competitor you're trying to poach from, or see who works in design at the agency you're about to hire.

**VC analysts and journalists.** Understand a company's actual headcount and seniority distribution beyond what's on their About page.

**RevOps teams.** Run scheduled scrapes monthly to detect leadership churn or growth signals at strategic accounts.

**Anyone building enrichment pipelines.** Combine `profileUrl` output with Clay, Apollo, or any email-finding service to turn raw rosters into hot leads.

***

### Tips that save you time and money

- **Always preview with a low cap first.** Set "Cap per Company" to 10–20 to verify the company slug is right before you spend on a 500-profile run.
- **Bundle companies into one run.** The start fee is charged once per run, not per company — 10 companies × 50 profiles is cheaper than 10 separate runs.
- **Free Mode includes former employees.** Google's index doesn't distinguish between current and past staff. Use Pro Mode if you need a clean current-roster.
- **Rotate your `li_at` cookie occasionally.** LinkedIn cookies expire after about a year, but suspicious activity can invalidate them earlier. If you suddenly get auth errors, grab a fresh one.
- **Slugs are forgiving.** Both `https://www.linkedin.com/company/google/` and `google` work. The actor extracts the slug either way.

***

### Pricing — pay only for what you extract

This actor uses Apify's **pay-per-event** pricing. You're billed per profile delivered to your dataset, plus a one-time start fee. No charge if a run returns zero results.

| Apify plan    | Start fee | Per profile |
| ------------- | --------- | ----------- |
| Free / Bronze | $0.0035   | $0.0035     |
| Silver        | $0.0035   | ~$0.0030    |
| Gold          | $0.0035   | ~$0.0025    |
| Platinum      | $0.0035   | ~$0.0020    |
| Diamond       | $0.0035   | ~$0.0015    |

**Real-world cost examples:**

- 25 profiles from one company: about $0.09
- 250 profiles across 5 companies: about $0.88
- 2,000 profiles for a deep workforce map: about $7.00

The Free Apify plan ships with $5/month of credit — plenty for several test runs and a few real lists.

***

### Frequently asked

**Do I need a LinkedIn account?**
Not for Free Mode. It runs entirely off Google's public search index. Pro Mode requires you to paste in a `li_at` cookie from a LinkedIn account you already own.

**Why does Free Mode return fewer people than the company headcount?**
Google indexes a slice of LinkedIn's public profiles — typically the most active or visible ones. A company with 50,000 employees might surface 50–100 names through Google. For the complete roster, switch to Pro Mode.

**Is my `li_at` cookie safe to provide?**
Yes, with caveats. Apify stores it as an encrypted secret, the actor never writes it to logs, and runs execute in isolated containers that are wiped after each run. That said, your cookie is the equivalent of a session password — only use it on platforms you trust, and rotate it if you ever have doubts.

**Can I scrape several companies in one go?**
Yes. Add as many URLs or slugs as you want to the **Target Companies** list. They're processed sequentially.

**The actor returned 0 results — what's wrong?**
Check in this order: (1) Is the company slug spelled correctly? Open `linkedin.com/company/SLUG` in a browser to verify. (2) If you're using Pro Mode, did your `li_at` cookie expire? (3) Very small or new companies sometimes have almost no Google-indexed profiles — try Pro Mode. (4) If Free Mode shows a Google rate-limit error, wait a few minutes and retry.

**How fresh is the data?**
Pro Mode hits LinkedIn's API in real-time. Free Mode reflects whatever Google has indexed, which can lag the actual LinkedIn pages by days to weeks for newer profiles.

**Will this get me LinkedIn-banned?**
Free Mode never touches LinkedIn directly, so no. Pro Mode uses your own session and respects normal rate limits — but you are responsible for keeping your account activity reasonable. Apify spreads requests through residential IPs to look like normal browsing.

***

### A note on responsible use

This actor extracts data that is already publicly visible on LinkedIn or in Google's index. It does not bypass authentication, log into accounts on your behalf without permission, or pull anything users have set to private. The legal foundation for scraping public profile data was reinforced in **hiQ Labs v. LinkedIn** (9th Circuit, 2022).

That said: **scraped data is still personal data**. Don't use it for unsolicited mass outreach, spam, harassment, or anything that violates GDPR, CCPA, or comparable laws in your jurisdiction. Treat the people in your dataset the way you'd want to be treated if you were in someone else's CRM.

***

### Need a workflow built on top?

This actor is designed to drop cleanly into automation pipelines:

- **Apify Schedules** → run it weekly on your top accounts to track churn and new hires
- **Zapier / Make** → when a run finishes, push new rows into Google Sheets, Notion, HubSpot, or Salesforce
- **Apify Webhook** → POST results to your own server for custom processing
- **Pair with the LinkedIn Profile Scraper** → use `profileUrl` from each row to enrich profiles with full work history

Run it once to see what you get. The first 20 profiles are usually cheap enough to taste-test before committing.

# Actor input Schema

## `companyUrls` (type: `array`):

Paste one or more LinkedIn company links — or just their slugs. Examples:

- `https://www.linkedin.com/company/anthropic/`
- `anthropic`

Mix and match — every entry is processed in the same run.

## `maxEmployees` (type: `integer`):

Stop collecting after this many profiles for each company. Keep it small for previews, raise it for serious lists. The free mode plateaus near 100 regardless of this value.

## `liAtCookie` (type: `string`):

Paste your LinkedIn `li_at` cookie here to unlock authenticated mode. Without it, the scraper falls back to Google discovery automatically.

**Grab yours in 30 seconds:** Sign in to LinkedIn → DevTools (F12) → Application → Cookies → linkedin.com → copy the `li_at` value.

## Actor input object example

```json
{
  "companyUrls": [
    "https://www.linkedin.com/company/anthropic/"
  ],
  "maxEmployees": 50
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "companyUrls": [
        "https://www.linkedin.com/company/anthropic/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("apt_marble/linkedin-company-employees-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "companyUrls": ["https://www.linkedin.com/company/anthropic/"] }

# Run the Actor and wait for it to finish
run = client.actor("apt_marble/linkedin-company-employees-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "companyUrls": [
    "https://www.linkedin.com/company/anthropic/"
  ]
}' |
apify call apt_marble/linkedin-company-employees-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=apt_marble/linkedin-company-employees-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Company Employees Scraper",
        "description": "Map the workforce of any LinkedIn company. Get a clean roster of names, titles, regions, and profile URLs — either through public Google discovery (no login) or via your LinkedIn session cookie for the complete current employee list.",
        "version": "0.0",
        "x-build-id": "sJIQpxgfPtPQlatTU"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/apt_marble~linkedin-company-employees-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-apt_marble-linkedin-company-employees-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/apt_marble~linkedin-company-employees-scraper/runs": {
            "post": {
                "operationId": "runs-sync-apt_marble-linkedin-company-employees-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/apt_marble~linkedin-company-employees-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-apt_marble-linkedin-company-employees-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "companyUrls"
                ],
                "properties": {
                    "companyUrls": {
                        "title": "🎯 Target Companies",
                        "type": "array",
                        "description": "Paste one or more LinkedIn company links — or just their slugs. Examples:\n- `https://www.linkedin.com/company/anthropic/`\n- `anthropic`\n\nMix and match — every entry is processed in the same run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxEmployees": {
                        "title": "Cap per Company",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Stop collecting after this many profiles for each company. Keep it small for previews, raise it for serious lists. The free mode plateaus near 100 regardless of this value.",
                        "default": 50
                    },
                    "liAtCookie": {
                        "title": "Session Cookie (li_at) — unlocks full rosters",
                        "type": "string",
                        "description": "Paste your LinkedIn `li_at` cookie here to unlock authenticated mode. Without it, the scraper falls back to Google discovery automatically.\n\n**Grab yours in 30 seconds:** Sign in to LinkedIn → DevTools (F12) → Application → Cookies → linkedin.com → copy the `li_at` value."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
