# LinkedIn Company Employees Scraper (No Login, Emails) (`scrapepilot/linkedin-company-employees-scraper-no-login-emails`) Actor

Scrape LinkedIn company employees without logging in! Extract decision-makers (CEO, Founders), job titles, profile URLs, and business emails instantly. The ultimate tool for B2B lead generation.

- **URL**: https://apify.com/scrapepilot/linkedin-company-employees-scraper-no-login-emails.md
- **Developed by:** [Scrape Pilot](https://apify.com/scrapepilot) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 scraped employee profile (short mode)s

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

## 👥 LinkedIn Company Employees Mass Scraper (No Cookies, No Login, No Personal API Keys)

**The most reliable, high-speed LinkedIn Company Employees Mass Scraper on Apify. Extract all LinkedIn company employees with full work history, educational qualifications, verified skills, exact locations, and deliverable business emails — without logging in, without cookies, and without risk of account suspension.**

Unlike other scrapers that hit anonymous *"LinkedIn Member"* placeholders or require risking your personal LinkedIn credentials, this Actor extracts **real, fully populated public profiles** for nearly any company employee worldwide.

***

### 🎯 Primary Focus Keywords & Use Cases

- **LinkedIn Company Employees Scraper** • **LinkedIn Staff Scraper** • **Scrape LinkedIn Employees Without Login**
- **LinkedIn Employee Email Finder** • **B2B Lead Generation Scraper** • **LinkedIn Directory Mass Scraper**
- **LinkedIn Org Chart Scraper** • **Executive & Talent Sourcing Scraper** • **Company Headcount & Team Intel**

***

### 💡 What is the LinkedIn Company Employees Mass Scraper?

This Actor enables companies, recruiters, sales intelligence platforms, and market researchers to map out and scrape entire corporate rosters from LinkedIn. By operating over public discovery engines, guest endpoints, and verified DNS MX deliverability checkers, it delivers clean, ready-to-use profile datasets at scale.

#### 🌟 Why This Actor Beats Other Scrapers:

1. **Zero Login & Zero Cookies Needed**: Never risk your personal or company LinkedIn accounts being banned or restricted.
2. **Unmasks "LinkedIn Member" Profiles**: Reaches public profiles that ordinary authenticated searches hide behind out-of-network blocks.
3. **Multi-Mode Scraping**: Choose between **Short** ($2.50/1k), **Full** ($7.00/1k), and **Full + Email Search** ($9.00/1k email add-on) based on your budget and data requirements.
4. **Verified Business Email Discovery**: Automatically discovers candidate corporate emails and executes real DNS MX deliverability checks so you don't waste time on bounce-backs.
5. **Adaptive Billing**: You are never charged for email searches on profiles that lack sufficient data or valid corporate domains.
6. **Company Batch Modes**: Scrape up to 10 companies simultaneously in **All at once** mode or process up to 1,000 companies automatically in **One by one** mode.
7. **Pay-Per-Event (PPE) Protection**: Full spending limit protection (`ACTOR_MAX_TOTAL_CHARGE_USD`) ensures your runs stop gracefully as soon as your budget cap is met.

***

### ⚡ Scraper Modes & Tiered Pricing (Pay-Per-Event)

Apify offers tiered volume discounts based on your plan level (Free / Starter, Personal, Team, and Enterprise). The Actor charges programmatically per successful event retrieved:

#### 📊 Event Pricing by Plan Tier

| Event Name / Action | Event ID | Starter / Free | Personal Tier | Team Tier | Enterprise Tier | What You Receive |
|---|---|---|---|---|---|---|
| **Scraped Employee Profile (Short Mode)** | `profile-short` | **$2.50** / 1k | **$2.07** / 1k | **$1.63** / 1k | **$1.20** / 1k | Full name, LinkedIn profile URL, headline, current position, location, verified status, summary snippet. |
| **Scraped Employee Profile (Full Mode)** | `profile-full` | **$7.00** / 1k | **$5.67** / 1k | **$4.33** / 1k | **$3.00** / 1k | Everything in Short **plus** complete work history, education, skills, certifications, and recommendations. |
| **Verified Business Email Search** | `email-search` | **$9.00** / 1k | **$7.50** / 1k | **$6.00** / 1k | **$4.50** / 1k | Discovered corporate email address, DNS MX deliverability status, and confidence score. |
| **Actor Start (Infrequent / Start Fee)** | `apify-actor-start` | **$5.00** / 1k | **$4.00** / 1k | **$3.00** / 1k | **$2.00** / 1k | Run setup, proxy allocation, and initialization compute fee. |

> \[!NOTE]
> **Adaptive Cost Guarantee**: If a profile does not contain enough corporate information to perform an email verification, you are **not** charged for the `email-search` event. Failed queries and empty result pages are 100% free.

***

### 📥 Input Parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `companies` | array | **Yes** | `["https://www.linkedin.com/company/google"]` | List of LinkedIn Company URLs (e.g., `https://www.linkedin.com/company/google`, `https://www.linkedin.com/company/cvshealth`) or Company Names (`"Google"`, `"Microsoft"`, `"CVS Health"`). |
| `profileScraperMode` | string | No | `"full"` | Scraper depth: `"short"`, `"full"`, or `"full_email"`. |
| `batchMode` | string | No | `"all_at_once"` | `"all_at_once"` (processes up to 10 companies per query) or `"one_by_one"` (separate query per company, up to 1,000 companies). |
| `locations` | array | No | `[]` | List of target locations to filter employees (e.g., `["New York", "San Francisco", "London", "California"]`). |
| `jobTitles` | array | No | `[]` | Strict job title filters (e.g., `["Software Engineer", "Product Manager", "Staff Pharmacist"]`). |
| `searchQuery` | string | No | `""` | General fuzzy search query or boolean operators (e.g., `"Founder"`, `"Marketing Manager"`, `"AI Researcher"`). |
| `seniorityLevelIds` | array | No | `[]` | LinkedIn Seniority level IDs (e.g., `120` for Senior, `220` for Director, `310` for CXO). |
| `functionIds` | array | No | `[]` | LinkedIn job function IDs (e.g., `8` for Engineering, `15` for Marketing, `19` for Product Management). |
| `industryIds` | array | No | `[]` | LinkedIn industry IDs (e.g., `4` for Software Development, `43` for Financial Services). |
| `yearsAtCurrentCompanyIds` | array | No | `[]` | Tenure at company filter IDs (1: <1 yr, 2: 1-2 yrs, 3: 3-5 yrs, 4: 6-10 yrs, 5: >10 yrs). |
| `yearsOfExperienceIds` | array | No | `[]` | Total career experience filter IDs (1: <1 yr, 2: 1-2 yrs, 3: 3-5 yrs, 4: 6-10 yrs, 5: >10 yrs). |
| `companyHeadcount` | array | No | `[]` | Headcount brackets: `["A", "B", "C", "D", "E", "F", "G", "H", "I"]`. |
| `maxItems` | integer | No | `50` | Maximum number of employee profiles to scrape. Set to `0` to scrape all available items (up to 2,500 per search query). |
| `startPage` | integer | No | `1` | Search results page number to begin from. Use this to resume a previous run seamlessly. |
| `proxy` | object | No | Residential | Proxy settings. Apify residential proxies are recommended for high-volume jobs. |

***

### 🔍 Input Filter Reference Tables

#### 1. Seniority Level Filter (`seniorityLevelIds`)

| ID | Seniority Level | ID | Seniority Level |
|---|---|---|---|
| `100` | In Training / Intern | `210` | Experienced Manager |
| `110` | Entry Level / Junior | `220` | Director / Head |
| `120` | Senior / Staff | `300` | Vice President (VP) |
| `130` | Strategic / Lead | `310` | CXO (CEO, CTO, CFO, COO) |
| `200` | Entry Level Manager | `320` | Owner / Partner / Founder |

#### 2. Job Function Filter (`functionIds`)

| ID | Function | ID | Function | ID | Function |
|---|---|---|---|---|---|
| `1` | Accounting | `10` | Finance | `19` | Product Management |
| `2` | Administrative | `11` | Healthcare Services | `20` | Program / Project Mgmt |
| `4` | Business Development | `12` | Human Resources | `21` | Purchasing |
| `6` | Consulting | `13` | Information Technology | `22` | Quality Assurance |
| `7` | Education | `14` | Legal | `24` | Research |
| `8` | Engineering | `15` | Marketing | `25` | Sales |
| `9` | Entrepreneurship | `18` | Operations | `26` | Customer Success |

#### 3. Industry IDs Filter (`industryIds`)

| ID | Industry Name | ID | Industry Name |
|---|---|---|---|
| `4` | Software Development | `44` | Investment Banking |
| `6` | Technology, Information & Internet | `47` | Insurance |
| `14` | Pharmaceuticals | `80` | Marketing & Advertising |
| `18` | Telecommunications | `84` | Real Estate |
| `25` | Hospital & Health Care | `96` | Information Technology & Services |
| `43` | Financial Services | `104` | Management Consulting |

#### 4. Company Headcount Filter (`companyHeadcount`)

| Code | Employee Size | Code | Employee Size | Code | Employee Size |
|---|---|---|---|---|---|
| `A` | Self-employed | `D` | 51 – 200 | `G` | 1,001 – 5,000 |
| `B` | 1 – 10 | `E` | 201 – 500 | `H` | 5,001 – 10,000 |
| `C` | 11 – 50 | `F` | 501 – 1,000 | `I` | 10,001+ |

***

### 💻 Input Examples

#### Example 1: Full Profile + Email Search for Specific Roles

```json
{
  "companies": [
    "https://www.linkedin.com/company/google"
  ],
  "profileScraperMode": "full_email",
  "jobTitles": [
    "Product Manager",
    "Engineering Manager"
  ],
  "locations": [
    "New York",
    "San Francisco"
  ],
  "maxItems": 50
}
```

#### Example 2: Executive Search (Seniority Filter)

```json
{
  "companies": [
    "https://www.linkedin.com/company/cvshealth"
  ],
  "profileScraperMode": "full_email",
  "seniorityLevelIds": [
    "220",
    "300",
    "310"
  ],
  "locations": [
    "California",
    "United States"
  ],
  "maxItems": 100
}
```

#### Example 3: Resuming a Previous Run

```json
{
  "companies": [
    "https://www.linkedin.com/company/microsoft"
  ],
  "profileScraperMode": "full",
  "startPage": 11,
  "maxItems": 100
}
```

***

### 📤 Output Fields

Each profile item stored in the dataset contains comprehensive, clean JSON fields:

| Field | Type | Description |
|---|---|---|
| `id` | string | Consistent internal profile ID (e.g., `ACoAACLevxs...`). |
| `publicIdentifier` | string | Profile username or public slug (e.g., `towhid-rahman`). |
| `linkedinUrl` | string | Direct canonical URL to the LinkedIn profile. |
| `firstName` | string | First name. |
| `lastName` | string | Last name and professional credentials (e.g., `Rahman, PharmD`). |
| `headline` | string | Professional headline and current company title. |
| `about` | string | Profile summary bio. |
| `openToWork` | boolean | Whether the profile is currently marked as Open to Work. |
| `hiring` | boolean | Whether the member has an active hiring badge. |
| `photo` | string | Profile picture URL. |
| `premium` | boolean | LinkedIn Premium subscriber status. |
| `influencer` | boolean | LinkedIn Top Voice / Influencer badge. |
| `location` | object | Structured location containing `linkedinText`, `countryCode`, and `parsed` (`city`, `state`, `country`, `countryFull`). |
| `verified` | boolean | Profile identity verification status. |
| `registeredAt` | string | Public registration timestamp or null. |
| `topSkills` | string | Primary top skills summary (e.g. `Pharmacology • Patient Counseling`). |
| `connectionsCount` | integer | Number of connections (e.g., `500`). |
| `followerCount` | integer | Estimated follower count. |
| `currentPosition` | array | Current active company positions (`[{"companyName": "..."}]`). |
| `experience` | array | Detailed work history (roles, duration, location, description, skills, dates). |
| `education` | array | Educational background (schools, degrees, study fields, dates). |
| `certifications` | array | Professional licenses, certifications, and issuing institutions. |
| `projects` | array | Research and corporate projects. |
| `volunteering` | array | Volunteer roles and causes. |
| `skills` | array | List of categorized skills with endorsement counts and role associations. |
| `languages` | array | Languages spoken and verified proficiency levels. |
| `email` | string | Primary corporate business email (in `full_email` mode). |
| `emails` | array | List of candidate business emails generated and checked. |
| `emailStatus` | string | Email deliverability status: `deliverable`, `valid`, `risky`, or `not_found`. |
| `emailConfidence` | integer | Deliverability confidence score (0–100%). |
| `scrapedCompany` | string | Name of the target company this employee was extracted from. |
| `scrapedAt` | string | ISO 8601 UTC timestamp of extraction. |

***

### 📋 Sample Output Data (Full + Email Search Mode)

```json
{
  "id": "ACoAACLevxsBfWQoDUYkHyCP2jzl81cDAvckQEI",
  "publicIdentifier": "towhid-rahman",
  "linkedinUrl": "https://www.linkedin.com/in/towhid-rahman",
  "firstName": "Towhid",
  "lastName": "Rahman, PharmD",
  "headline": "Pharmacology | Medical Science Liaison | Pharmacovigilance | Regulatory Toxicologist",
  "about": "I find myself at a unique crossroads where science meets compassion. With over eight years of experience in pharmacology, my journey has been fueled by a genuine desire to improve patient lives. Working at CVS Health has allowed me to interact with over 100 patients each week, guiding them through their health journeys not just by dispensing medications but by truly listening and building trust.",
  "openToWork": false,
  "hiring": false,
  "photo": "https://media.licdn.com/dms/image/v2/C5603AQEbgBlEFwrtUg/profile-displayphoto-shrink_800_800/0/1567218693232",
  "premium": false,
  "influencer": false,
  "location": {
    "linkedinText": "Los Angeles, California, United States",
    "countryCode": "US",
    "parsed": {
      "text": "Los Angeles, CA, United States",
      "countryCode": "US",
      "regionCode": null,
      "country": "United States",
      "countryFull": "United States of America",
      "state": "California",
      "city": "Los Angeles"
    }
  },
  "verified": true,
  "registeredAt": "2017-07-29T17:39:39.165Z",
  "topSkills": "Pharmacology • Patient Care",
  "connectionsCount": 500,
  "followerCount": 520,
  "currentPosition": [
    {
      "companyName": "CVS Health"
    }
  ],
  "experience": [
    {
      "position": "Staff Pharmacist | Prescription Dispensing, Drug Utilization Review, Regulatory Compliance",
      "location": "Thousand Oaks, California, United States",
      "employmentType": "Full-time",
      "workplaceType": "On-site",
      "companyName": "CVS Health",
      "companyLinkedinUrl": "https://www.linkedin.com/company/cvshealth/",
      "duration": "1 yr 7 mos",
      "description": "Exceeded daily production targets by 15% in a high-demand pharmacy environment while ensuring timely service delivery to over 1000 patients each week.",
      "skills": [
        "Patient Care",
        "Pharmacology",
        "Drug Utilization Review",
        "Clinical Research"
      ],
      "startDate": {
        "month": "Jan",
        "year": 2024,
        "text": "Jan 2024"
      },
      "endDate": {
        "text": "Present"
      }
    }
  ],
  "education": [
    {
      "schoolName": "Western University of Health Sciences",
      "schoolLinkedinUrl": "https://www.linkedin.com/company/26345/",
      "degree": "Doctor of Pharmacy",
      "fieldOfStudy": "Pharmacy",
      "skills": [
        "Pharmacology",
        "Clinical Research"
      ],
      "period": "Aug 2018 - May 2022"
    }
  ],
  "certifications": [],
  "projects": [],
  "volunteering": [],
  "receivedRecommendations": [],
  "skills": [
    {
      "name": "Pharmacology",
      "positions": [
        "Staff Pharmacist at CVS Health"
      ]
    },
    {
      "name": "Patient Care",
      "positions": [
        "Staff Pharmacist at CVS Health"
      ]
    }
  ],
  "courses": [],
  "publications": [],
  "patents": [],
  "honorsAndAwards": [],
  "languages": [
    {
      "name": "English",
      "proficiency": "Full professional proficiency"
    }
  ],
  "featured": null,
  "moreProfiles": [],
  "scrapedCompany": "CVS Health",
  "scrapedAt": "2026-10-16T13:45:53.039709+00:00",
  "email": "towhid.rahman@cvshealth.com",
  "emails": [
    "towhid.rahman@cvshealth.com",
    "trahman@cvshealth.com",
    "towhidr@cvshealth.com",
    "towhid_rahman@cvshealth.com",
    "towhid@cvshealth.com"
  ],
  "emailStatus": "deliverable",
  "emailConfidence": 95
}
```

***

### 📧 Email Search & Deliverability Verification

When running in **Full + email search** mode:

1. **Corporate Domain Matching**: Automatically matches target organizations to their primary email domains (e.g., `google.com`, `cvshealth.com`, `microsoft.com`).
2. **Standard Permutation Generation**: Formulates candidate business email patterns (`first.last@`, `first@`, `first_initial.last@`, etc.).
3. **Live DNS MX Verification**: Performs DNS MX record checks to ensure the domain has active, receiving mail exchange servers.
4. **Deliverability Rating**: Flags addresses as `deliverable` (with 95% confidence) or `risky` based on verified mail exchangers.
5. **Zero Waste**: Profiles where a company domain or MX record cannot be verified are not charged for the email discovery event.

***

### 💰 Pay-Per-Event (PPE) Billing Model

This Actor charges programmatically on Apify Store using **Pay-Per-Event (PPE)** with tiered volume discounts:

#### 🏷️ Exact Event Pricing Breakdown

| Event Name | Display Title | Free / Starter | Personal Tier | Team Tier | Enterprise Tier | Trigger Condition |
|---|---|---|---|---|---|---|
| `profile-short` | **Scraped Employee Profile (Short Mode)** | **$2.50** / 1k | **$2.07** / 1k | **$1.63** / 1k | **$1.20** / 1k | Charged once per successfully scraped short profile. |
| `profile-full` | **Scraped Employee Profile (Full Mode)** | **$7.00** / 1k | **$5.67** / 1k | **$4.33** / 1k | **$3.00** / 1k | Charged once per successfully scraped full profile. |
| `email-search` | **Verified Business Email Search** | **$9.00** / 1k | **$7.50** / 1k | **$6.00** / 1k | **$4.50** / 1k | Charged only when a corporate business email is successfully found & verified. |
| `apify-actor-start` | **Actor Start (Infrequent / Start Fee)** | **$5.00** / 1k | **$4.00** / 1k | **$3.00** / 1k | **$2.00** / 1k | Charged by Apify per run start to cover proxy & platform setup. |

- **Adaptive Billing**: Profiles lacking enough corporate data to resolve a business email are **not** charged for `email-search`. Empty result pages are 100% free.
- **Clean Real-Time Auditing**: Run logs report the exact event charged and running total count (no confusing raw dollar figures in logs):
  ```text
  [apify] INFO Charged event: profile-full | Total charged events: 14
  [apify] INFO Charged event: email-search | Total charged events: 15
  [apify] INFO Scraped employee profile: Thomas Han | Product Manager at Google (14/50)
  ```
- **Spending Limit Enforcement**: You can set an exact dollar budget cap (`ACTOR_MAX_TOTAL_CHARGE_USD`) in Apify Console before launching. The Actor automatically halts gracefully as soon as your limit is reached (`event_charge_limit_reached`).

***

### 📈 Scaling to 100,000+ Profiles Without Rate Limits

If you are scraping large corporate rosters (10,000 to 200,000+ profiles):

1. **Filter by Department / City**: Instead of scraping all employees of a global enterprise in one broad run, split your queries by metropolitan locations (`New York`, `London`, `Tokyo`, `Berlin`) or functional roles (`Engineering`, `Marketing`, `Sales`).
2. **Use "One by one" Batch Mode**: When providing hundreds of companies, select **One by one** mode so each company is explored cleanly without query degradation.
3. **Resume with `startPage`**: If a query is partially scraped, check the Actor log for the last completed page (e.g., `Scraped page 10. Found 25 profiles`) and launch a new run starting at `startPage: 11`.
4. **Use Apify Residential Proxies**: Ensure `proxy.useApifyProxy = true` with group `RESIDENTIAL` for optimal throughput and unthrottled access.

***

### 🔌 API Integration Examples

#### Node.js / JavaScript

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

const client = new ApifyClient({
  token: process.env.APIFY_API_TOKEN,
});

const run = await client.actor('your-username/linkedin-company-employees-scraper').call({
  companies: ['https://www.linkedin.com/company/google'],
  profileScraperMode: 'full_email',
  jobTitles: ['Software Engineer', 'Product Manager'],
  locations: ['New York'],
  maxItems: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Extracted ${items.length} employee profiles!`);
```

#### Python

```python
import os
from apify_client import ApifyClient

client = ApifyClient(os.environ.get('APIFY_API_TOKEN'))

run_input = {
    "companies": ["https://www.linkedin.com/company/cvshealth"],
    "profileScraperMode": "full_email",
    "locations": ["California"],
    "maxItems": 100,
}

run = client.actor("your-username/linkedin-company-employees-scraper").call(run_input=run_input)

dataset_items = client.dataset(run["defaultDatasetId"]).list_items().items
for profile in dataset_items:
    print(f"{profile['firstName']} {profile['lastName']} - {profile['headline']} ({profile.get('email')})")
```

***

### ❓ Frequently Asked Questions (FAQ)

#### Do I need to provide LinkedIn cookies or log in with my account?

**No.** This Actor operates 100% without your LinkedIn login, cookies, or account credentials. There is zero risk to your personal LinkedIn account.

#### Can it scrape companies with thousands of employees?

**Yes.** You can scrape large companies by paginating through search results (up to 2,500 profiles per query). For enterprise headcounts, subdivide your run by locations or job titles.

#### Can I export data to Excel or CSV?

**Yes.** Once the run completes, you can download all results directly from Apify Console as CSV, JSON, Excel (XLSX), or XML.

#### What happens if an email cannot be found?

If an employee profile does not have enough information to resolve a valid corporate email, the Actor marks the email as `not_found` and you are **not** charged for the email search add-on.

***

### 💬 Support & Feedback

- **Issues**: Submit tickets directly on the Actor's **Issues** tab in Apify Console.
- **Updates**: Follow for regular feature updates, new filter options, and rate-limit optimizations.

# Actor input Schema

## `companies` (type: `array`):

List of LinkedIn Company URLs (e.g., https://www.linkedin.com/company/google, https://www.linkedin.com/company/cvshealth) or Company names (e.g., Google, Microsoft, Apple).

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

Choose data extraction depth: 'Short' (name, title, location, current position), 'Full' (full experience, education, skills, certifications), or 'Full + email search' (full profile + verified email discovery).

## `batchMode` (type: `string`):

'All at once' combines up to 10 companies into one search query for maximum speed. 'One by one' processes each company separately (supports up to 1,000 companies).

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

List of locations to filter employees (e.g., New York, San Francisco, London, California, United Kingdom).

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

List of specific job titles to filter employees (e.g., Software Engineer, Product Manager, Pharmacist, Marketing Manager).

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

Fuzzy keyword or boolean search query (e.g., Founder, VP Engineering, John Doe, AI Agent).

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

Filter employees by seniority level IDs (e.g., 100: In Training, 110: Entry Level, 120: Senior, 130: Strategic, 200: Entry Level Manager, 210: Experienced Manager, 220: Director, 300: Vice President, 310: CXO, 320: Owner/Partner).

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

Filter employees by functional role IDs (e.g., 1: Accounting, 8: Engineering, 10: Finance, 11: Healthcare, 12: HR, 15: Marketing, 18: Operations, 19: Product Management, 25: Sales).

## `industryIds` (type: `array`):

List of LinkedIn numeric industry IDs (e.g., 4 for Software Development, 43 for Financial Services, 14 for Pharmaceuticals).

## `yearsAtCurrentCompanyIds` (type: `array`):

Tenure at company: 1 (<1 yr), 2 (1-2 yrs), 3 (3-5 yrs), 4 (6-10 yrs), 5 (>10 yrs).

## `yearsOfExperienceIds` (type: `array`):

Total career experience: 1 (<1 yr), 2 (1-2 yrs), 3 (3-5 yrs), 4 (6-10 yrs), 5 (>10 yrs).

## `companyHeadcount` (type: `array`):

Filter by company size brackets: A (Self-employed), B (1-10), C (11-50), D (51-200), E (201-500), F (501-1000), G (1001-5000), H (5001-10000), I (10001+).

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

Maximum number of employee profiles to collect and store. Set to 0 to scrape all available profiles (up to 2,500 per search query).

## `startPage` (type: `integer`):

Search results page number to begin scraping from (default 1). Useful for resuming previously stopped runs.

## `proxy` (type: `object`):

Apify residential proxy or custom proxy settings. Residential proxies are recommended for high-volume extraction.

## Actor input object example

```json
{
  "companies": [
    "https://www.linkedin.com/company/google"
  ],
  "profileScraperMode": "full",
  "batchMode": "all_at_once",
  "maxItems": 50,
  "startPage": 1,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

Collection of extracted LinkedIn company employee profiles stored in the default dataset.

# 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 = {
    "companies": [
        "https://www.linkedin.com/company/google"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapepilot/linkedin-company-employees-scraper-no-login-emails").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 = { "companies": ["https://www.linkedin.com/company/google"] }

# Run the Actor and wait for it to finish
run = client.actor("scrapepilot/linkedin-company-employees-scraper-no-login-emails").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 '{
  "companies": [
    "https://www.linkedin.com/company/google"
  ]
}' |
apify call scrapepilot/linkedin-company-employees-scraper-no-login-emails --silent --output-dataset

```

## MCP server setup

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

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/wSHOBpwgA0Z216Lnl/builds/KblgoIzJ892vtD9jE/openapi.json
