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

Find public employees of any company on LinkedIn by link or name. Get name, headline, title, seniority, department, location and followers, plus full profiles and work emails as an option. Filter by title, seniority and location. No login or cookies needed.

- **URL**: https://apify.com/insights_data/linkedin-company-employees-scraper.md
- **Developed by:** [Insights Data](https://apify.com/insights_data) (community)
- **Security:** Limited permissions
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### 👥 What is LinkedIn Company Employees Scraper (No Cookies)?

**LinkedIn Company Employees Scraper (No Cookies)** helps sales, marketing and recruiting teams turn a list of target companies into a list of people for B2B lead generation, account research and talent sourcing. Add LinkedIn company links or plain company names, and get each public employee's name, headline, job title, seniority, department and location, with no LinkedIn account, login or cookies. The $5 monthly credit on the Apify Free plan pays for a first test run. Start with the prefilled company and the default limit of 10 people.

You get the people the search can find with a public profile. That is usually fewer than the employee count LinkedIn shows, so plan on a sample of a company's team, not the full headcount.

- **Build a B2B prospect list:** collect the people at your target accounts with title, seniority, department and company details, ready for your CRM.
- **Find decision makers:** keep only Directors, Vice Presidents (VPs), CXOs (chief-level and President titles such as CEO, CTO or President) or Owners / Partners in the departments you sell to.
- **Support sales prospecting and account based marketing (ABM, selling to a short list of named companies):** run many target companies in one go, with a limit per company.
- **Source talent:** find engineers, designers or sales staff at chosen companies by job title and location for talent sourcing and recruiting.
- **Run competitor analysis and market research:** see how a company's public team splits across departments, seniority levels and locations.

In short, it is a LinkedIn company people scraper. It works like a visitor looking through public pages, only it saves the results as structured data.

#### What can LinkedIn Company Employees Scraper (No Cookies) do?

As a LinkedIn employees extractor, it starts from company pages, not from a list of profile links.

- 🏢 **Search companies in bulk:** paste many company links, handles or names in one run.
- 🎯 **Filter people** by job title, location, keywords, seniority and department. Filters are strict: a person is saved only when every filter you set is confirmed.
- 🔬 **Pick a detail level:** Quick (main details), Full (complete public profile) or Full + emails (profile plus contact details and work email candidates).
- 🗂️ **Get separate tables** for companies, emails, contacts, recent activity, experience, education and credentials, next to the main People table.
- 📦 **Export** to JSON, CSV, Excel, XML or HTML.
- 🔌 **Automate** with the Apify API, schedules, webhooks, Make, Zapier, Google Sheets and MCP for AI agents.

***

### 📋 LinkedIn Company Employees Scraper (No Cookies) data fields

Every saved person is one row of LinkedIn employee data. What you get depends on the **Detail level** you choose.

| Data | Field names | Detail level |
|---|---|---|
| 👤 Name | `fullName`, `firstName`, `lastName` | All |
| 🔗 Profile link | `linkedinUrl`, `publicIdentifier` | All |
| 📰 Headline | `headline` | All |
| 🏷️ Current title and employer | `currentTitle`, `currentCompany` | All |
| 📈 Seniority | `seniority` | All |
| 🧭 Department | `department` | All |
| 📍 Location | `location` (text plus city, state and country) | All |
| 🤝 Connections | `connectionsCount` (500 means 500 or more) | All |
| 📣 Followers | `followerCount` | All |
| 🏢 Company | `company` (name, link, website, industry, size, headquarters; Full adds employee count on LinkedIn, followers, type and logo) | All |
| 🔬 Detail level | `detailLevel` (`short`, `full` or `full_email`) | All |
| 🎯 Filters matched | `filtersMatched` (only when you use filters) | All |
| 📝 About and photo | `about`, `photo` | Full |
| 🎓 Education | `education` | Full |
| 📜 Credentials | `certifications`, `courses`, `languages`, `projects`, `volunteering`, `publications`, `patents`, `testScores`, `honorsAndAwards`, `receivedRecommendations` | Full |
| 🌐 Websites | `websites` | Full |
| 🗞️ Recent posts | `recentActivity` | Full |
| 🧾 Match details | `profileOpened`, `employmentStatus`, `companyMatch`, `currentPosition`, `yearsAtCompany` | Full |
| ✉️ Emails | `emails`, `emailNote` | Full + emails |
| ☎️ LinkedIn contact details | `contactDetails` (work emails, emails and phones written on the profile, websites, social profiles, company website) | Full + emails |

The Full levels add LinkedIn profile data from each public profile page. Fields the page doesn't show stay empty; nothing is made up.

> **Note:** `experience`, `skills` and `organizations` appear only when LinkedIn shows them to visitors who are not signed in. Usually it doesn't, so they are often missing.

> ⚠️ **Emails may be guesses. Verify every address before you send anything.** When the profile shows no address at the company's domain, Full + emails adds up to two guessed work addresses at that domain. They are checked only for format and domain mail servers, never the mailbox, and the output does not mark them as guesses (all are labelled `work`).

#### What data can't LinkedIn Company Employees Scraper (No Cookies) extract?

- Data that only signed-in members see, such as most work histories and skills
- Verified email addresses, or a phone number for every person
- People without a public LinkedIn profile, or profiles the search can't reach
- Former employees (they are left out)
- Search by industry (the company's industry is shown for each person instead)

For a full profile from a known profile link, use [LinkedIn Profile Extractor & Enricher (No Login Required)](https://apify.com/insights_data/linkedin-profile-extractor-enricher).

***

### 🚀 How to scrape LinkedIn company employees

LinkedIn Company Employees Scraper (No Cookies) is built for an easy start, even if you have never extracted data from the web before. If you've been wondering how to scrape LinkedIn data without writing code, these are the steps:

1. [Create a free Apify account](https://console.apify.com/sign-up) with your email.
2. Open [LinkedIn Company Employees Scraper (No Cookies)](https://apify.com/insights_data/linkedin-company-employees-scraper).
3. **Companies** is prefilled with `https://www.linkedin.com/company/stripe`. Keep it, or add your own company links or names, one per line. Then check **Detail level**: the default is **Full + emails**, which opens every public profile and adds email addresses that may be guesses (see the email warning above). For a lighter first test, choose **Quick**, which returns the main details only and reads fewer pages.
4. Click **Start** and wait for the run to finish. People appear in the **Output** tab while the run is going.
5. Download your data in JSON, CSV, Excel, XML or HTML: go to **Storage → Datasets**, pick the table and click **Export**.

That's all you need to find employees on LinkedIn for one company. Add more companies, filters or a higher limit once you've seen the first results.

***

### 💲 How much does it cost to scrape LinkedIn?

LinkedIn Company Employees Scraper (No Cookies) uses **pay-per-event** pricing: you pay for specific events, not a monthly rent. Your bill has three parts:

1. **Results:** one charge for each person saved to the People table. Rows in the other tables (companies, emails, contacts and so on) are not charged.
2. **Start fee:** $0.00005 per run at the default 1 GB memory. It's $0.00005 per GB of memory you choose.
3. **Platform usage:** the compute (and any proxy traffic) the run uses, at your Apify plan's rates.

| Apify plan | Price per person | Price per 1,000 people |
|---|---|---|
| 🆓 Free | $0.0025 | $2.50 |
| ⭐ Starter | $0.0022 | $2.20 |
| 📊 Scale | $0.002 | $2.00 |
| 🏦 Business and higher | $0.0018 | $1.80 |

The plan discount applies to the result price only. The start fee is the same on every plan, and platform usage is billed at your Apify plan's own rates.

For example, the default input (one company, 10 people) costs 10 × $0.0025 = **$0.025 in result charges** on the Free plan, plus the start fee and platform usage. Saving 1,000 people on the Starter plan costs **$2.20 in result charges**, plus the start fee and platform usage. Full + emails uses more platform usage than Quick, because more pages are read for each person. Platform usage depends on your companies and settings, so this README gives no fixed number for it. A small test run shows the full cost on the run page.

> ⚠️ **People per company `0` can cost more.** With `0`, the Actor saves everyone the search can find at each company, and each saved person is one result charge. Set a number, or set a maximum charge limit (see below).

**What a failed run costs:** result charges apply only to people actually saved. The start fee and the platform usage the run used are charged for every run, including one that stops early or saves nobody.

See the [pricing tab](https://apify.com/insights_data/linkedin-company-employees-scraper/pricing) for the current prices.

#### Is scraping LinkedIn free?

You can start for free. The [Apify Free plan](https://apify.com/pricing) gives you $5 in monthly credit, which pays for both result charges and platform usage. Free plan runs work exactly like paid runs: no extra caps. Do a small test run and read the cost on the run page to see what your setup costs.

To control spending, set a **maximum charge limit** in the run options when you start a run. It caps the result charges only. The start fee and platform usage come on top, so it is not a cap on your total bill. When the limit is reached, the Actor stops and keeps every person it has saved.

***

### ⬇️ LinkedIn Company Employees Scraper (No Cookies) input

The input works like a LinkedIn employee search for the companies you choose. You only need one field, **Companies**. Everything else is optional.

#### Settings most people change

| Setting | What it does | Default |
|---|---|---|
| 🏢 **Companies** (`urls`) | LinkedIn company links, company handles or plain company names, one per line. Required. | Prefilled with `https://www.linkedin.com/company/stripe` |
| 👥 **People per company** (`maxItems`) | The most people to save for **each** company. `0` saves everyone the search can find. | `10` |
| 🔬 **Detail level** (`profileScraperMode`) | `short` = Quick (main details), `full` = Full (complete public profile), `full_email` = Full + emails | `full_email` |

#### Filters

| Filter | What it does |
|---|---|
| 🏷️ **Job titles** (`jobTitles`) | Only people whose headline (where the current title is shown) contains one of these, exactly as written |
| 📍 **Locations** (`locations`) | Only people located here, for example `San Francisco` or `United Kingdom` |
| 🔑 **Keywords** (`searchQuery`) | Words every person must match on their profile |
| 📈 **Seniority** (`seniorityLevelIds`) | Only people at these levels |
| 🧭 **Departments** (`functionIds`) | Only people in these departments |
| 🛡️ **Proxy configuration** (`proxyConfiguration`) | Optional. The default needs no setup, so you can leave it as it is. |

Here's an example that saves up to 10 public Stripe employees with full profile details:

```json
{
  "urls": ["https://www.linkedin.com/company/stripe"],
  "maxItems": 10,
  "profileScraperMode": "full"
}
```

See the [input tab](https://apify.com/insights_data/linkedin-company-employees-scraper/input-schema) for every field.

#### People per company

`maxItems` is a limit **per company**, not per run. Three companies with `50` can give up to 150 people, and 150 result charges. `0` means everyone the search can find. That is often fewer people than the employee count LinkedIn shows, because only public profiles the search can reach are found. It can still mean many result charges at a large company, so prefer a number or a maximum charge limit.

- ✅ Good: `25` for a first look at each company
- ❌ Bad: `50` when you want 50 people in total across five companies

#### Detail level and emails

The default is **Full + emails** (`full_email`), set by the input form. Change it on each run if you need less.

- **Quick** (`short`) returns the main details without opening each profile.
- **Full** (`full`) opens every public profile and adds the profile sections.
- **Full + emails** (`full_email`) also adds `emails` and `contactDetails`.

**Quick and filters:** filters are strict at every level. A person is saved only when every filter you set is confirmed. In Quick, profiles are not opened, so filters are checked only against the details seen before a profile is opened, such as the headline and location. People whose filters can't be confirmed from those details are left out. Quick with several filters can therefore save fewer people than Full.

- ✅ Good: `short` for a list of names and titles
- ❌ Bad: `short` when you need contact details

Emails may be guesses (see the email warning in the data fields section). If the company website is unknown, no guesses are made and `emailNote` says why.

#### Job titles

Titles are matched against the person's headline, where the current title is shown, exactly as written. Words elsewhere in the headline can match too. `Software Engineer` also matches `Senior Software Engineer`.

- ✅ Good: `Head of Sales`
- ❌ Bad: `sales leaders` (not a title people write on their profile)

#### Seniority and departments

Seniority and department are worked out from each person's job title. Here are the **Seniority** options (API value in brackets) and the `seniority` value each one matches:

| Form option | Matches `seniority` value |
|---|---|
| 📈 In Training (`100`) | `Training / Intern` |
| 📈 Entry Level (`110`) | `Entry` |
| 📈 Senior (`120`) and Strategic (`130`) | `Senior` (both options are the same) |
| 📈 Entry Level Manager (`200`) and Experienced Manager (`210`) | `Manager` (both options are the same) |
| 📈 Director (`220`) | `Director` |
| 📈 Vice President (`300`) | `VP` |
| 📈 CXO (`310`) | `CXO` (chief-level and President titles, such as CEO, CTO, CFO, President or a spelled-out "Vice President") |
| 📈 Owner / Partner (`320`) | `Owner / Partner` |

> ⚠️ Titles that spell out "Vice President" or "President" are classed as `CXO`. Only short forms such as VP, SVP or EVP give `VP`. To get all vice presidents, pick both **Vice President** and **CXO**.

A title with no level word gets `Individual Contributor`, and a person without a title gets `null`. There is no form option for `Individual Contributor`, so you can't filter for it.

**Departments** (API value in brackets): Accounting (`1`), Administrative (`2`), Arts and Design (`3`), Business Development (`4`), Consulting (`6`), Education (`7`), Engineering (`8`), Entrepreneurship (`9`), Finance (`10`), Healthcare Services (`11`), Human Resources (`12`), Information Technology (`13`), Legal (`14`), Marketing (`15`), Media and Communication (`16`), Operations (`18`), Product Management (`19`), Program and Project Management (`20`), Purchasing (`21`), Quality Assurance (`22`), Real Estate (`23`), Research (`24`), Sales (`25`), Customer Success and Support (`26`). The `department` field uses these names, or `null` when the title gives no department.

> ⚠️ Two departments never match any title: **Community and Social Services** (`5`) and **Military and Protective Services** (`17`). If you pick only these, you get 0 people.

#### Locations

Use full place names, for example `United Kingdom` rather than an abbreviation. Leave the field empty to search everywhere.

***

### ⬆️ LinkedIn Company Employees Scraper (No Cookies) output

Results are stored in a **dataset** (Apify's table of results for a run). Open the **Output** tab to browse the **People** table and the extra tables: Companies, Emails, Contacts, Recent activity, Experience, Education and Credentials. The run totals are in **Run summary** (a `RUN_SUMMARY` record in the run's **key-value store**, Apify's file storage for a run). Use the **Output** tab to browse. To download, there is one path: go to **Storage → Datasets**, pick the table and click **Export**.

The People table lists LinkedIn company employees one per row. Each Companies row shows how many people were found in the search for that company (`peopleFound`, counted before the Full levels re-check each profile) and how many were saved (`peopleSaved`), with a `note` when no matching profiles were found.

#### JSON example

An example row for the input above (values are illustrative, and long lists are shortened):

```json
{
  "publicIdentifier": "jane-doe-example",
  "linkedinUrl": "https://www.linkedin.com/in/jane-doe-example",
  "fullName": "Jane Doe",
  "firstName": "Jane",
  "lastName": "Doe",
  "headline": "Software Engineer at Stripe",
  "currentTitle": "Software Engineer",
  "currentCompany": { "name": "Stripe", "linkedinUrl": "https://www.linkedin.com/company/stripe" },
  "seniority": "Individual Contributor",
  "department": "Engineering",
  "location": {
    "linkedinText": "San Francisco, California, United States",
    "parsed": { "city": "San Francisco", "state": "California", "country": "United States" }
  },
  "connectionsCount": 340,
  "followerCount": 1200,
  "company": {
    "name": "Stripe",
    "universalName": "stripe",
    "linkedinUrl": "https://www.linkedin.com/company/stripe",
    "website": "https://stripe.com",
    "industry": "Technology, Information and Internet",
    "sizeRange": "5,001-10,000 employees",
    "linkedinEmployeeCount": 10000,
    "followers": 1000000
  },
  "detailLevel": "full",
  "profileOpened": true,
  "employmentStatus": "current",
  "companyMatch": "confirmed",
  "about": "I build payment infrastructure ...",
  "currentPosition": [
    { "companyName": "Stripe", "companyLinkedinUrl": "https://www.linkedin.com/company/stripe", "companyUniversalName": "stripe", "position": "Software Engineer" }
  ],
  "education": [
    { "schoolName": "Example University", "degree": "BSc", "fieldOfStudy": "Computer Science", "period": "2014 - 2018" }
  ],
  "languages": [{ "name": "English", "proficiency": null }],
  "recentActivity": [
    { "type": "post", "url": "https://www.linkedin.com/posts/example", "text": "Excited to share ...", "postedAgo": "2w" }
  ]
}
```

#### Detail levels at a glance

| Detail level | What each row holds |
|---|---|
| ⚡ **Quick** (`short`) | The main details: name, profile link, headline, title, employer, seniority, department, location, connections, followers and a short company block |
| 📖 **Full** (`full`) | Everything in Quick, plus the public profile: about, photo, education, credentials, websites, recent posts, match details and a full company block |
| ✉️ **Full + emails** (`full_email`) | Everything in Full, plus `emails`, `emailNote` and `contactDetails` |

The People table also has ready-made views: Short - main details, Full - profile details, Full - websites and recent activity, Full + email - contact details, Role and company, Location and reach, and Company. Each one is a LinkedIn employees list with only the columns you need.

***

### 💡 Tips and advanced usage

#### How many results can you scrape with LinkedIn Company Employees Scraper (No Cookies)?

You set the number with **People per company**. With `0`, the Actor saves everyone the search can find. Can you find all employees of a company that way? Only those with a public profile the search can reach, which is often fewer than LinkedIn's employee count. People are also left out when:

- they can't be matched to the company with confidence, or they are former employees
- a filter you set can't be confirmed for them
- LinkedIn doesn't show their full profile (they keep their main details, and `profileOpened` is `false`)

A small test run shows the numbers for your companies.

#### How to get cheaper results

- Use **Quick** when names, titles and locations are enough. It reads fewer pages, so platform usage is lower.
- Add filters so you only pay for the people you need.
- Start with a small **People per company**, then raise it.

#### Find decision makers and hiring managers

- To **find decision makers**, set **Seniority** to Director, Vice President, CXO and Owner / Partner, and add the departments you sell to.
- To reach **hiring managers** in one team, set **Seniority** to Experienced Manager and Director and **Departments** to that team, for example Engineering.

Unlike a LinkedIn people search inside the app, you don't need an account, and the results arrive as a table.

#### ⏰ Run it on a schedule

You can keep a prospect list or talent map fresh:

1. Set up your companies, filters and a limit such as `25` people per company, then save the input as a **task** (a saved input you can run again).
2. In the task, click **Schedule** and choose weekly.
3. Each run creates a new dataset. Export two runs and compare `linkedinUrl` values to see who joined, and `currentTitle` and `headline` to see who changed title.

The Actor doesn't flag changes between runs itself, so the comparison happens in your sheet or CRM.

#### If something goes wrong

- **Billing:** result charges apply only to people saved to the People table. The start fee and platform usage apply to every run, even one that fails. Check **Run summary** for `peopleSaved` and `peopleCharged`.
- **Early stops:** if a run stops near its timeout or because memory is almost full, everything saved so far stays in the dataset. Raise **Timeout** or **Memory** in the run options, or lower **People per company**.
- **Large runs:** at the default 1 GB memory, long Full runs can stop when memory is almost full. You keep the saved rows. Give the next run more memory, for example 4 GB, in the run options (the start fee is then $0.0002).
- **No people:** if nothing is saved, the status message says so. Check the company link or name, loosen your filters and run again.
- **LinkedIn can't be reached:** if LinkedIn can't be reached and nobody was saved, the run ends as failed with the message "LinkedIn could not be reached (blocked or changed). Try again later." Wait a while and start the run again.

#### Known issues

- Work histories and skills are usually hidden from visitors, so `experience` and `skills` are often missing.
- Email addresses may be guesses (see the email warning in the data fields section). When none is listed, `emailNote` always mentions the company website, even when the domain check was the reason.
- Two departments (Community and Social Services, Military and Protective Services) never match.
- Spelled-out "Vice President" and "President" titles are classed as `CXO`, not `VP`. To get all vice presidents, pick both Vice President and CXO.
- A plain company name that can't be matched to a company page is searched by name only, so matching is looser. Use the company link when you can.

***

### 🔌 LinkedIn Company Employees Scraper (No Cookies) integrations and API

#### Can I use it as a LinkedIn company employees API?

Yes. The [Apify API](https://docs.apify.com/api/v2) lets you start runs, schedule them and fetch results, so you can use this Actor as a LinkedIn scraper API. Use the `apify-client` [NPM package](https://apify.com/insights_data/linkedin-company-employees-scraper/api/javascript) for Node.js or the `apify-client` [PyPI package](https://apify.com/insights_data/linkedin-company-employees-scraper/api/python) for Python. The [API tab](https://apify.com/insights_data/linkedin-company-employees-scraper/api) has ready-to-use code.

#### LinkedIn scraper Python example

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("insights_data/linkedin-company-employees-scraper").call(run_input={
    "urls": ["https://www.linkedin.com/company/stripe"],
    "maxItems": 10,
    "profileScraperMode": "full",
})

for person in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(person["fullName"], person.get("currentTitle"), person.get("seniority"))
```

#### Can I integrate LinkedIn Company Employees Scraper (No Cookies) with other apps?

Yes. Connect it through [Apify integrations](https://apify.com/integrations) with Make, Zapier, Slack, Google Sheets, Google Drive, Airbyte and LangChain. Two workflows that fit LinkedIn lead generation:

- **Google Sheets:** add the Google Sheets integration to your scheduled task, so each finished run adds the new People rows to a sheet your sales team works from.
- **Slack or your CRM:** add a [webhook](https://docs.apify.com/integrations/webhooks) (a message Apify sends to a URL when a run event happens, such as a run finishing). Use it in Make or Zapier to post a Slack note and push the dataset into your CRM.

Webhooks fire on run events, such as a run succeeding. They don't fire for each new person.

#### Can I use LinkedIn Company Employees Scraper (No Cookies) with AI agents (MCP)?

Yes. **MCP** (Model Context Protocol) lets AI assistants such as Claude call tools. With the Apify MCP server, an agent can use this Actor as a LinkedIn scraper MCP tool and run it with your input. Open the [MCP tab](https://apify.com/insights_data/linkedin-company-employees-scraper/api/mcp) for setup steps.

***

### 🧰 Other LinkedIn scrapers

These Actors cover other parts of LinkedIn and work well next to this employee list:

- 📇 [LinkedIn Profile Extractor & Enricher (No Login Required)](https://apify.com/insights_data/linkedin-profile-extractor-enricher): full public profiles from profile links or IDs, including experience, education, skills and certifications.
- 📢 [LinkedIn Company Posts Scraper (No Cookies)](https://apify.com/insights_data/linkedin-company-posts-scraper-no-cookies): the latest public posts of a company, with reactions, comments and dates.
- 🔍 [LinkedIn Post Search Scraper (No Cookies)](https://apify.com/insights_data/linkedin-post-search-scraper-no-cookies): public posts by keyword, author or company.
- 🗣️ [LinkedIn Posts Search Scraper](https://apify.com/insights_data/posts-search-scraper-for-linkedin-no-cookies): public posts by keyword, phrase or hashtag, with emails found in the post text.
- 💼 [Advanced LinkedIn Job Search API](https://apify.com/insights_data/advanced-linkedin-job-search-api): public LinkedIn jobs with salary, seniority and applicants.
- 🦄 [Y Combinator Scraper](https://apify.com/insights_data/y-combinator-scraper): YC company profiles, founders and open roles for lead generation and recruiting.

***

### ❓ FAQ

#### Is it legal to scrape LinkedIn?

Scraping publicly available data is generally legal, but this data is about people. Respect personal-data laws such as GDPR, collect personal data only with a legitimate reason, and keep LinkedIn's [User Agreement](https://www.linkedin.com/legal/user-agreement) in mind. This is not legal advice; ask a lawyer about your use case.

#### How does LinkedIn Company Employees Scraper (No Cookies) work?

It works like a visitor browsing public pages, only it saves the results. For each company, it reads the public LinkedIn company page and looks for the company's public employee profiles. It checks each person against the company and your filters. In the Full levels, it also opens each public profile to add details and check the filters again. Each person is saved, and charged, as soon as they are ready.

#### How to find employees of a company on LinkedIn?

Add the company's LinkedIn link to **Companies** and click **Start**. You get a table of public employees with their titles, seniority and locations. Add **Job titles**, **Seniority** or **Departments** to narrow it down.

#### How is it different from LinkedIn Profile Extractor & Enricher?

| | LinkedIn Company Employees Scraper (No Cookies) | LinkedIn Profile Extractor & Enricher |
|---|---|---|
| Starts from | Company links or names | Profile links or IDs |
| Finds new people | ✅ Yes, the public employees of each company | ❌ No, you bring the profiles |
| Experience and skills | Only when LinkedIn shows them to visitors | Listed in its Store summary (experience, education, skills and more) |

Use this Actor as a LinkedIn company employees finder, then [LinkedIn Profile Extractor & Enricher (No Login Required)](https://apify.com/insights_data/linkedin-profile-extractor-enricher) when you need a person's full profile, including experience and skills.

#### Why scrape LinkedIn company employees?

- **Lead lists:** turn target accounts into named contacts for outreach.
- **Talent mapping:** see which roles and seniority levels a company has in each location.
- **Competitor analysis:** compare team sizes across departments at competing companies.
- **Market research:** study where an industry's talent is based and how teams are built.

#### Why am I getting fewer results than expected?

- **People per company** is set to `10` by default. Raise it, or set `0` for everyone the search can find.
- Filters are strict, so every filter must be confirmed. Remove one and compare.
- Former employees, and people who can't be matched to the company, are left out.
- Check that a department you picked isn't one of the two that never match.
- For a plain company name, try the company's LinkedIn link instead.

#### Are the work emails verified?

No. A tool sold as a "LinkedIn profile scraper email" finder usually promises found addresses. This Actor is more like a small email permutator (a tool that builds possible addresses from a name and a company domain) that tries only two common name patterns. It uses addresses written on the profile first. When none of them is at the company's domain, it adds up to two guessed work addresses there. Every address is checked for format and domain mail servers only. The output doesn't say which ones are guesses, so verify addresses before outreach.

#### Is this a LinkedIn scraper without login?

Yes. You don't connect a LinkedIn account, so no account of yours is used for the runs. It only reads what LinkedIn shows to visitors who are not signed in.

#### Do I need to copy cookies or set up a session?

No. People often search for a "LinkedIn scraper no cookies" option because cookie-based tools run on their own account. Here there are no cookies to copy and no session settings to fill in. Add your companies and click **Start**.

#### Can it work as a LinkedIn contact info scraper?

Partly. In Full + emails, `contactDetails` holds what the person wrote on their public profile (emails, phones, websites and social profiles), the company website and the work email candidates described above. Many profiles show no phone or email at all.

#### How do I export LinkedIn employees to Excel?

After the run, go to **Storage → Datasets**, pick the People table and click **Export**, then choose Excel. You can also download a LinkedIn employees CSV the same way, or pick only some columns.

#### Can I start from profile links instead of company links?

Not with this Actor: it is a LinkedIn employee scraper that starts from companies. If you already have profile links, a LinkedIn people scraper that starts from profiles fits better, such as the Profile Extractor listed above.

***

### 📧 Support and feedback

Found a bug or have an idea? Create an issue on the [Issues tab](https://apify.com/insights_data/linkedin-company-employees-scraper/issues/open) and include the company you used.

Need a custom solution or a different data set? Email us at **hello.insights.data@gmail.com**.

Built and maintained by [insights_data on Apify](https://apify.com/insights_data).

# Actor input Schema

## `urls` (type: `array`):

LinkedIn company links (for example https://www.linkedin.com/company/stripe) or plain company names, one per line. Add as many companies as you like.

## `searchQuery` (type: `string`):

Words every person must match anywhere on their profile, for example machine learning. Leave empty for no keyword filter.

## `locations` (type: `array`):

Only people located here, for example San Francisco or United Kingdom (use the full country name). Leave empty for anywhere.

## `jobTitles` (type: `array`):

Only people whose current title contains one of these exactly as written, for example Software Engineer or Head of Sales (Senior Software Engineer matches too). Leave empty for any title.

## `maxItems` (type: `integer`):

The most people to save for EACH company (3 companies with 50 give up to 150 people). 0 means everyone that can be found.

## `profileScraperMode` (type: `string`):

Quick returns the main facts only: name, headline, current title and company, seniority, department, location and reach (fastest). Full opens every public profile and adds about, photo, education, certifications, courses, languages, projects, volunteering, publications, patents, awards, recommendations, websites and recent posts. Full + emails adds contact details: work email candidates checked for format and a mail-accepting domain, plus emails, phones, websites and social links found on the profile. Every row has a detailLevel field.

## `seniorityLevelIds` (type: `array`):

Only people at these levels. Leave empty for all levels.

## `functionIds` (type: `array`):

Only people working in these departments. Leave empty for all departments.

## `proxyConfiguration` (type: `object`):

Runs start without a proxy. If LinkedIn rejects the requests, the Actor switches to stronger proxies on its own and keeps using them for the rest of the run. Pick Apify Proxy here only if you want to start with one.

## Actor input object example

```json
{
  "urls": [
    "https://www.linkedin.com/company/stripe"
  ],
  "maxItems": 10,
  "profileScraperMode": "full_email",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

One row per employee.

## `companies` (type: `string`):

One row per searched company.

## `emails` (type: `string`):

One row per email address.

## `contacts` (type: `string`):

One row per email, phone, website or social profile.

## `activity` (type: `string`):

One row per recent public post or repost.

## `experience` (type: `string`):

One row per work history entry.

## `education` (type: `string`):

One row per education entry.

## `credentials` (type: `string`):

Certifications, languages, skills, awards, projects, courses, publications, patents and test scores.

## `summary` (type: `string`):

Counts for the finished run.

# 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 = {
    "urls": [
        "https://www.linkedin.com/company/stripe"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("insights_data/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 = {
    "urls": ["https://www.linkedin.com/company/stripe"],
    "proxyConfiguration": { "useApifyProxy": False },
}

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

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

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

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.linkedin.com/company/stripe"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call insights_data/linkedin-company-employees-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,insights_data/linkedin-company-employees-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/1rDEpBEe6VcCZy22C/builds/hmWcYLrvR1AJKpLUY/openapi.json
