# LinkedIn People Scraper (`angelusm/linkedin-people-scraper`) Actor

Advanced LinkedIn People Scraper for high-quality lead generation. Extract verified profile data including names, job titles, companies, locations, emails, and phone numbers using secure authenticated sessions. Perfect for sales prospecting, recruitment, and B2B outreach at scale.

- **URL**: https://apify.com/angelusm/linkedin-people-scraper.md
- **Developed by:** [Angelus](https://apify.com/angelusm) (community)
- **Categories:** Lead generation, Jobs, Automation
- **Stats:** 3 total users, 3 monthly users, 29.2% runs succeeded, NaN bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $50.00 / 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.

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 People Scraper

Scrape LinkedIn people profiles by search query with advanced filters. Extracts structured profile data including name, headline, location, current role, experience, education, and skills. In **Full Profile with Email** mode, the actor also extracts email addresses directly from LinkedIn's Contact Info section and by crawling external websites linked on each profile — no third-party enrichment API required.

### Features

- 🔍 Fuzzy people search with keyword queries
- 🔒 Authenticated scraping via your LinkedIn session cookie (li_at)
- 📧 Email extraction from LinkedIn Contact Info and linked external websites
- 🎯 14 filter types: location, company, school, job title, seniority, headcount, and more
- 📄 Pagination control: set start page and number of pages to scrape
- 💾 Dataset output with configurable views + HTML snapshots in key-value store
- 📋 Run metadata saved for audit and debugging

---

### How to get your LinkedIn session cookie

This actor requires a valid LinkedIn session cookie (`li_at`) to access profile data. LinkedIn does not expose contact info or full profiles to unauthenticated visitors.

**Steps (Chrome):**

1. Open [linkedin.com](https://www.linkedin.com) and log in to your account
2. Press `F12` to open DevTools
3. Click the **Application** tab
4. In the left sidebar, expand **Cookies** and click `https://www.linkedin.com`
5. Find the cookie named **`li_at`** in the list
6. Click it and copy the full **Value** (it's a long string)
7. Paste it into the **"LinkedIn Session Cookie (li_at)"** input field

**Firefox:** Same steps, but DevTools is under **Storage** → **Cookies**.

> **Security note:** Your cookie value is marked as `isSecret` in this actor — it is never logged to the console or saved to the dataset output. Treat your `li_at` cookie like a password. Do not share it.

> **Cookie expiry:** LinkedIn session cookies typically last 1 year, but LinkedIn can invalidate them earlier if suspicious activity is detected. If the actor returns a "cookie expired" error, simply repeat the steps above to get a fresh cookie value.

---

### Scraper Modes

#### Full Profile
Scrapes authenticated profile data for each person:
- Full name, headline, location
- About / summary text
- Current job title and company
- Full work experience history
- Education history
- Skills list
- Languages
- Follower count
- Profile URL

#### Full Profile with Email
Everything in Full Profile, plus:
- **LinkedIn Contact Email** — extracted directly from the Contact Info modal (only visible when logged in)
- **External Website URLs** — collected from the Contact Info section
- **Emails from Websites** — each linked website is crawled (homepage + contact/about pages) and emails are extracted from the HTML
- **Best Email** — the highest-confidence email selected from all sources, scored by name match and domain relevance

---

### Input

| Field | Type | Required | Description |
|---|---|---|---|
| `linkedInSessionCookie` | string | ✅ | Your `li_at` cookie value from LinkedIn |
| `scraperMode` | select | ✅ | `fullProfile` or `fullProfileWithEmail` |
| `searchQuery` | string | ✅ | Keyword or name query (e.g. "Marketing Manager", "John Doe") |
| `maxProfiles` | integer | | Max profiles to collect. Default: 50 |
| `startPage` | integer | | Page to start from. Default: 1 |
| `numberOfPages` | integer | | Pages to scrape. Default: 5 (≈ 50 profiles) |
| `websiteCrawlDepth` | integer | | Depth to crawl external websites for emails (1–3). Default: 2 |
| `locationFilter` | array | | Filter by location (e.g. "United States", "Nairobi") |
| `currentCompanyFilter` | array | | Filter by current employer name |
| `pastCompanyFilter` | array | | Filter by past employer name |
| `schoolFilter` | array | | Filter by educational institution |
| `currentJobTitleFilter` | array | | Filter by current job title keywords |
| `pastJobTitleFilter` | array | | Filter by past job titles |
| `yearsOfExperienceFilter` | select | | Filter by total years of experience |
| `yearsAtCurrentCompanyFilter` | select | | Filter by tenure at current company |
| `seniorityFilter` | array | | Filter by seniority level (Entry, Senior, Director, CXO, etc.) |
| `functionFilter` | array | | Filter by job function / department |
| `firstNamesFilter` | array | | Filter by first name |
| `lastNamesFilter` | array | | Filter by surname |
| `profileLanguagesFilter` | array | | Filter by profile language |
| `companyHeadcountFilter` | array | | Filter by company size |
| `companyHQLocationsFilter` | array | | Filter by company HQ location |
| `proxyConfiguration` | proxy | | Proxy settings. Residential proxies strongly recommended |

---

### Output

#### Dataset — Scraped Profiles

Each item in the dataset contains:

```json
{
  "profileUrl": "https://www.linkedin.com/in/jane-doe/",
  "fullName": "Jane Doe",
  "firstName": "Jane",
  "lastName": "Doe",
  "headline": "Head of Marketing at Acme Corp",
  "location": "San Francisco, California",
  "about": "Passionate marketer with 10+ years in B2B SaaS...",
  "currentJobTitle": "Head of Marketing",
  "currentCompany": "Acme Corp",
  "experience": [
    { "title": "Head of Marketing", "company": "Acme Corp", "duration": "Jan 2021 – Present", "description": null },
    { "title": "Marketing Manager", "company": "Beta Inc", "duration": "2018 – 2020", "description": null }
  ],
  "education": [
    { "school": "University of California, Berkeley", "degree": "B.A. Communications", "dates": "2012 – 2016" }
  ],
  "skills": ["B2B Marketing", "Demand Generation", "HubSpot", "Content Strategy"],
  "languages": [{ "language": "English", "proficiency": "Native or bilingual proficiency" }],
  "connectionDegree": "2nd",
  "followerCount": "500+",
  "websiteUrls": ["https://janedoe.com"],
  "contactEmail": "jane@janedoe.com",
  "emailsFromWebsites": ["jane@janedoe.com", "hello@janedoe.com"],
  "bestEmail": "jane@janedoe.com",
  "scrapedAt": "2025-01-15T09:23:41.000Z"
}
````

> Fields `contactEmail`, `emailsFromWebsites`, and `bestEmail` are only populated in **Full Profile with Email** mode.

#### Key-Value Store

| Key | Contents |
|---|---|
| `snapshot-page-001` | Raw HTML of search results page 1 |
| `snapshot-page-002` | Raw HTML of search results page 2 |
| `profile-<username>` | Raw HTML of each visited profile page |
| `run-metadata` | JSON summary of the run (query, filters, counts, timing) |

***

### Proxy recommendations

LinkedIn is one of the most aggressively protected websites to scrape. **Residential proxies are strongly recommended** and are set as the default. Datacenter proxies are almost always blocked within a few requests.

On the Apify platform, use the built-in `RESIDENTIAL` proxy group. When running locally, either disable proxy (`useApifyProxy: false`) for development testing, or configure a residential proxy provider.

***

### Important notes

- **Terms of Service:** LinkedIn's Terms of Service prohibit automated scraping. Use this actor only for lawful purposes and in compliance with applicable laws (GDPR, CCPA, etc.). Do not use scraped data for spam or unsolicited contact.
- **Rate limits:** The actor runs with `maxConcurrency: 1` and randomised delays between requests to mimic human behaviour. Aggressive settings will result in blocks.
- **Profile availability:** Some profiles may be private, deleted, or restricted to 1st-degree connections. These will be partially populated or skipped.
- **Email coverage:** Not all LinkedIn users list their email in Contact Info or link to external websites. Email extraction coverage varies by audience — professional communities and freelancers tend to have higher coverage than corporate employees.

***

### Local development

```bash
## Install dependencies
npm install

## Set your cookie in storage/key_value_stores/default/INPUT.json
## Then run locally:
apify run

## Results appear in:
## storage/datasets/default/      ← scraped profiles
## storage/key_value_stores/default/  ← snapshots and metadata
```

See the implementation plan document for full local development and testing instructions.

# Actor input Schema

## `linkedInSessionCookie` (type: `string`):

Your LinkedIn session cookie value. Log in to LinkedIn in your browser, open DevTools → Application → Cookies → find 'li\_at' and paste its value here. This is required for the actor to access profile data. Treated as a secret — never logged or stored.

## `scraperMode` (type: `string`):

Full Profile scrapes authenticated profile data. Full Profile with Email also extracts emails from the Contact Info section and from external websites linked on the profile.

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

Fuzzy query to search LinkedIn people. Examples: 'Founder', 'Marketing Manager', 'John Doe', 'VP Sales fintech'.

## `maxProfiles` (type: `integer`):

Maximum total profiles to collect across all pages. Each search results page returns approximately 10 profiles when authenticated.

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

Which page number to begin scraping from. Use this to resume an interrupted run or skip initial results. Page 1 is the default.

## `numberOfPages` (type: `integer`):

How many consecutive pages of search results to scrape. Each page has ~10 profiles when authenticated.

## `locationFilter` (type: `array`):

Filter profiles by geographic location. Enter city, region, or country names. Examples: 'United States', 'London, UK', 'Nairobi, Kenya', 'California'.

## `currentCompanyFilter` (type: `array`):

Filter by current employer name. Example: 'Google', 'Accenture'.

## `pastCompanyFilter` (type: `array`):

Filter by names of companies the person has previously worked at.

## `schoolFilter` (type: `array`):

Filter by educational institution. Example: 'University of Nairobi', 'Harvard', 'MIT'.

## `currentJobTitleFilter` (type: `array`):

Filter by current job title keywords. Example: 'CEO', 'Software Engineer', 'Head of Marketing'.

## `pastJobTitleFilter` (type: `array`):

Filter by previous job titles the person has held.

## `yearsOfExperienceFilter` (type: `string`):

Filter by total years of professional experience.

## `yearsAtCurrentCompanyFilter` (type: `string`):

Filter by tenure at the person's current employer.

## `seniorityFilter` (type: `array`):

Filter by seniority level — enter one or more of these exact values: Internship, Entry level, Associate, Mid-Senior level, Director, Executive, Owner, Partner, CXO, Staff.

## `functionFilter` (type: `array`):

Filter by job function or department. Example: 'Engineering', 'Sales', 'Marketing', 'Finance'.

## `firstNamesFilter` (type: `array`):

Filter by first name. Useful for finding specific individuals. Example: 'John', 'Sarah'.

## `lastNamesFilter` (type: `array`):

Filter by surname.

## `profileLanguagesFilter` (type: `array`):

Filter by the language the LinkedIn profile is written in — enter language codes: en, fr, de, es, pt, ar, zh, ja, hi, sw, it, ru, nl, ko, tr.

## `companyHeadcountFilter` (type: `array`):

Filter by company size — enter one or more letter codes: A (1 person), B (2-10), C (11-50), D (51-200), E (201-500), F (501-1000), G (1001-5000), H (5001-10000), I (10001+).

## `companyHQLocationsFilter` (type: `array`):

Filter by the HQ country or region of the person's current company. Example: 'United States', 'Germany'.

## `websiteCrawlDepth` (type: `integer`):

Only used in 'Full Profile with Email' mode. How many pages deep to crawl each linked external website when searching for emails. 1 = homepage only, 2 = homepage + contact/about pages. Maximum recommended: 3.

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

Proxy settings. Residential proxies are strongly recommended for LinkedIn to avoid detection and blocks.

## Actor input object example

```json
{
  "scraperMode": "fullProfile",
  "maxProfiles": 50,
  "startPage": 1,
  "numberOfPages": 5,
  "yearsOfExperienceFilter": "any",
  "yearsAtCurrentCompanyFilter": "any",
  "websiteCrawlDepth": 2,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `profiles` (type: `string`):

All scraped LinkedIn profile records as structured JSON. Each item contains name, headline, location, experience, education, skills, and optionally email addresses.

## `htmlSnapshots` (type: `string`):

Raw HTML snapshots of each scraped search results page. Useful for debugging or re-parsing without re-running.

## `profileSnapshots` (type: `string`):

Raw HTML snapshots of individual profile pages that were visited.

## `runMetadata` (type: `string`):

JSON summary of the run: query, filters, pages scraped, total profiles, email counts, and timing.

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("angelusm/linkedin-people-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 = { "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    } }

# Run the Actor and wait for it to finish
run = client.actor("angelusm/linkedin-people-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 '{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call angelusm/linkedin-people-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn People Scraper",
        "description": "Advanced LinkedIn People Scraper for high-quality lead generation. Extract verified profile data including names, job titles, companies, locations, emails, and phone numbers using secure authenticated sessions. Perfect for sales prospecting, recruitment, and B2B outreach at scale.",
        "version": "1.0",
        "x-build-id": "Vd8P2cPf5i8iRkVfW"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/angelusm~linkedin-people-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-angelusm-linkedin-people-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/angelusm~linkedin-people-scraper/runs": {
            "post": {
                "operationId": "runs-sync-angelusm-linkedin-people-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/angelusm~linkedin-people-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-angelusm-linkedin-people-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": [
                    "linkedInSessionCookie",
                    "searchQuery",
                    "scraperMode"
                ],
                "properties": {
                    "linkedInSessionCookie": {
                        "title": "LinkedIn Session Cookie (li_at)",
                        "type": "string",
                        "description": "Your LinkedIn session cookie value. Log in to LinkedIn in your browser, open DevTools → Application → Cookies → find 'li_at' and paste its value here. This is required for the actor to access profile data. Treated as a secret — never logged or stored."
                    },
                    "scraperMode": {
                        "title": "Scraper Mode",
                        "enum": [
                            "fullProfile",
                            "fullProfileWithEmail"
                        ],
                        "type": "string",
                        "description": "Full Profile scrapes authenticated profile data. Full Profile with Email also extracts emails from the Contact Info section and from external websites linked on the profile.",
                        "default": "fullProfile"
                    },
                    "searchQuery": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Fuzzy query to search LinkedIn people. Examples: 'Founder', 'Marketing Manager', 'John Doe', 'VP Sales fintech'."
                    },
                    "maxProfiles": {
                        "title": "Number of Profiles to Scrape",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum total profiles to collect across all pages. Each search results page returns approximately 10 profiles when authenticated.",
                        "default": 50
                    },
                    "startPage": {
                        "title": "Start Page",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Which page number to begin scraping from. Use this to resume an interrupted run or skip initial results. Page 1 is the default.",
                        "default": 1
                    },
                    "numberOfPages": {
                        "title": "Number of Pages to Scrape",
                        "minimum": 1,
                        "maximum": 100,
                        "type": "integer",
                        "description": "How many consecutive pages of search results to scrape. Each page has ~10 profiles when authenticated.",
                        "default": 5
                    },
                    "locationFilter": {
                        "title": "Locations",
                        "type": "array",
                        "description": "Filter profiles by geographic location. Enter city, region, or country names. Examples: 'United States', 'London, UK', 'Nairobi, Kenya', 'California'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "currentCompanyFilter": {
                        "title": "Current Company",
                        "type": "array",
                        "description": "Filter by current employer name. Example: 'Google', 'Accenture'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "pastCompanyFilter": {
                        "title": "Past Company",
                        "type": "array",
                        "description": "Filter by names of companies the person has previously worked at.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "schoolFilter": {
                        "title": "School / University",
                        "type": "array",
                        "description": "Filter by educational institution. Example: 'University of Nairobi', 'Harvard', 'MIT'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "currentJobTitleFilter": {
                        "title": "Current Job Title",
                        "type": "array",
                        "description": "Filter by current job title keywords. Example: 'CEO', 'Software Engineer', 'Head of Marketing'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "pastJobTitleFilter": {
                        "title": "Past Job Title",
                        "type": "array",
                        "description": "Filter by previous job titles the person has held.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "yearsOfExperienceFilter": {
                        "title": "Years of Experience",
                        "enum": [
                            "any",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5"
                        ],
                        "type": "string",
                        "description": "Filter by total years of professional experience.",
                        "default": "any"
                    },
                    "yearsAtCurrentCompanyFilter": {
                        "title": "Years at Current Company",
                        "enum": [
                            "any",
                            "1",
                            "2",
                            "3",
                            "4",
                            "5"
                        ],
                        "type": "string",
                        "description": "Filter by tenure at the person's current employer.",
                        "default": "any"
                    },
                    "seniorityFilter": {
                        "title": "Seniority Level",
                        "type": "array",
                        "description": "Filter by seniority level — enter one or more of these exact values: Internship, Entry level, Associate, Mid-Senior level, Director, Executive, Owner, Partner, CXO, Staff.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "functionFilter": {
                        "title": "Job Function",
                        "type": "array",
                        "description": "Filter by job function or department. Example: 'Engineering', 'Sales', 'Marketing', 'Finance'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "firstNamesFilter": {
                        "title": "First Names",
                        "type": "array",
                        "description": "Filter by first name. Useful for finding specific individuals. Example: 'John', 'Sarah'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "lastNamesFilter": {
                        "title": "Last Names",
                        "type": "array",
                        "description": "Filter by surname.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "profileLanguagesFilter": {
                        "title": "Profile Languages",
                        "type": "array",
                        "description": "Filter by the language the LinkedIn profile is written in — enter language codes: en, fr, de, es, pt, ar, zh, ja, hi, sw, it, ru, nl, ko, tr.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyHeadcountFilter": {
                        "title": "Company Headcount",
                        "type": "array",
                        "description": "Filter by company size — enter one or more letter codes: A (1 person), B (2-10), C (11-50), D (51-200), E (201-500), F (501-1000), G (1001-5000), H (5001-10000), I (10001+).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "companyHQLocationsFilter": {
                        "title": "Company Headquarter Locations",
                        "type": "array",
                        "description": "Filter by the HQ country or region of the person's current company. Example: 'United States', 'Germany'.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "websiteCrawlDepth": {
                        "title": "Website Crawl Depth (Email Mode)",
                        "minimum": 1,
                        "maximum": 3,
                        "type": "integer",
                        "description": "Only used in 'Full Profile with Email' mode. How many pages deep to crawl each linked external website when searching for emails. 1 = homepage only, 2 = homepage + contact/about pages. Maximum recommended: 3.",
                        "default": 2
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Proxy settings. Residential proxies are strongly recommended for LinkedIn to avoid detection and blocks."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
