# LinkedIn Scraper – Profile, Email & Company Data (No Cookies) (`inexhaustible_glass/linkedin-scraper`) Actor

Paste a LinkedIn profile/company URL or just a username and get the full public profile: name, headline, about, work experience (with years), education, certifications, location, followers & photo. No login, no cookies, no API key.

- **URL**: https://apify.com/inexhaustible\_glass/linkedin-scraper.md
- **Developed by:** [Hitman studio](https://apify.com/inexhaustible_glass) (community)
- **Categories:** Lead generation, Social media
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 profile scrapeds

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

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

## What's an Apify Actor?

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

## How to integrate an Actor?

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

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

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

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

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

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

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

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

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

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

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


# README

## LinkedIn Scraper – Profile, Email & Company Data Extractor (No Cookies, No Login)

**Scrape any LinkedIn profile or company page** by URL or username and get clean, structured
data back – **name, email, phone, job title, work experience, education, skills, location,
followers and 40+ fields**. No login, no cookies, no LinkedIn account, no API key required.

Built for **lead generation, recruiting, B2B sales prospecting, and CRM enrichment**. Export
results to **CSV, Excel, JSON, or HTML** in one click, or pull them through the Apify API.

> 🔎 Looking for a **LinkedIn email scraper**, **LinkedIn profile scraper**, **LinkedIn data
> extractor**, or a way to **scrape LinkedIn without login** at scale? This is it.

---

### ✨ Features

- ✅ **Scrape LinkedIn by URL _or_ just a username** – `williamhgates`, a full profile URL, or `company/microsoft`
- ✅ **No cookies, no login, no LinkedIn account** – nothing to get your account banned
- ✅ **Email finder** – discovers real business emails + phone numbers from the company website
- ✅ **Personal email & mobile** (optional) – plug in a free [Apollo.io](https://apollo.io) API key
- ✅ **Email deliverability check** (MX) – know if an address can actually receive mail
- ✅ **Full work history** with companies & years, **education**, **certifications & licenses**
- ✅ **Company scraping** – industry, size, HQ, website, founded, specialties, employee count
- ✅ **Lead expansion** – "People also viewed" related profiles
- ✅ **Bulk input** – paste hundreds of profiles/usernames at once
- ✅ Export to **CSV / JSON / Excel / XML / HTML** or via API & webhooks

### 📥 Input

Add one or more of these to **LinkedIn URLs or usernames** (one per line):

| You can paste | Example |
|---|---|
| A full profile URL | `https://www.linkedin.com/in/williamhgates` |
| Just a username | `williamhgates` |
| A company | `company/microsoft` or `https://www.linkedin.com/company/microsoft` |

**Optional toggles**
- **📧 Find email & phone** – turn on to enrich each profile with public emails/phones.
- **🎯 Apollo.io API key** – paste a free key to also return the person's **personal email + mobile**.
- **🔑 GitHub token** – raises the email-lookup rate limit for developer profiles.

### 📤 Output (per profile)

| Field | Example |
|-------|---------|
| `name` / `first_name` / `last_name` | Bill Gates / Bill / Gates |
| `headline` | Chair, Gates Foundation and Founder, Breakthrough Energy |
| `current_title` / `current_company` | Co-founder / Microsoft |
| `seniority` | c_level |
| `city` / `country` | Seattle / United States |
| `best_email` | jason@basecamp.com |
| `company_emails` | info@company.com, sales@company.com |
| `discovered_phones` | +1 312 555 0148 |
| `email_deliverable` | true |
| `personal_email` / `personal_phone` | _(with Apollo key)_ |
| `work_experience` | `[{name: Microsoft, start: 1975}, …]` |
| `education` | `[{name: Harvard University, start: 1973, end: 1975}]` |
| `certifications` | `[{name, issuer, issued, credential_id}]` |
| `total_experience_years` | 49 |
| `followers` / `connections` | 40,469,844 / 500+ |
| `industry` / `company_size` / `website` | _(company pages)_ |
| `people_also_viewed` | 15 related profile leads |
| `profile_url` / `image` | canonical URL / photo |

### 🚀 How to use (step by step)

1. Click **Try for free / Start**.
2. Paste your LinkedIn **URLs or usernames** (one per line).
3. _(Optional)_ Turn on **Find email & phone**, and paste an **Apollo API key** for personal contact.
4. Click **Start** ▶ and wait a few seconds.
5. Download your results as **CSV, Excel, or JSON**, or fetch them from the **dataset API**.

### ⚙️ How it works

LinkedIn shows a login wall to normal browsers but serves **search-engine and social
crawlers** the full public profile for SEO. This actor uses a real Chrome TLS fingerprint with
a crawler User-Agent ladder and reads the **structured data LinkedIn itself publishes**
(JSON-LD + OpenGraph + visible sections). Emails & phones are then enriched **only from public
sources** – the company website and (optionally) the Apollo.io database. Nothing is faked.

### ❓ FAQ

**Can I scrape LinkedIn without logging in?**
Yes. This actor reads only the public profile data LinkedIn serves to crawlers – no cookies or
account needed, so there is nothing to get banned.

**Can it get email addresses and phone numbers?**
It returns **real business emails and phones** found on the company's own website, plus a
deliverability (MX) check. For a person's **personal email/mobile**, add a free Apollo.io API
key – LinkedIn never exposes personal contact info publicly to anyone.

**Does it work for company pages too?**
Yes – paste `company/<name>` to get industry, size, HQ, website, founded date, specialties and
employee count.

**Can I scrape profiles in bulk?**
Yes. Paste as many URLs/usernames as you like; results stream to the dataset.

**What can I export?**
CSV, JSON, Excel, XML, HTML, or pull via the Apify API and webhooks – ideal for CRM and
lead-gen pipelines.

**Is private/connection-only data available?**
No. Private profiles, personal emails/mobiles, and exact connection counts are behind
LinkedIn's login and are never returned from public data (use the Apollo key for personal
contact where available).

### 💡 Great for

LinkedIn **lead generation**, **recruiting & sourcing**, **B2B sales prospecting**, **talent
mapping**, **market research**, and **CRM enrichment** with public professional data.

---

> ⚖️ Use responsibly: scrape only public data, respect LinkedIn's Terms of Service, and run at
> a reasonable rate. This tool does not access private or login-gated data.

**Keywords:** linkedin scraper, linkedin profile scraper, linkedin email scraper, linkedin
email finder, linkedin data extractor, scrape linkedin without login, linkedin company scraper,
linkedin lead generation, b2b lead scraper, linkedin contact scraper, export linkedin to csv.

# Actor input Schema

## `profiles` (type: `array`):

One per line. Full URL (https://www.linkedin.com/in/williamhgates), just a username (williamhgates), or a company (company/microsoft).
## `enrichContact` (type: `boolean`):

Search public web + GitHub for the person's REAL email/phone (via proxy rotation). Only data actually found in public sources is returned — never guessed. May be empty for many people. LinkedIn itself never exposes contact info.
## `apolloApiKey` (type: `string`):

LinkedIn never exposes personal email/phone publicly. Paste a free Apollo.io API key and the actor matches each profile against Apollo's contact database to return the person's REAL personal email + mobile (where Apollo has it). Get a free key at apollo.io → Settings → API. Leave blank to use only free public-web enrichment.
## `githubToken` (type: `string`):

A GitHub personal-access token raises the email-lookup rate limit (for developer profiles). Leave blank to skip.

## Actor input object example

```json
{
  "profiles": [
    "https://www.linkedin.com/in/satyanadella",
    "company/microsoft"
  ],
  "enrichContact": false
}
````

# 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 = {
    "profiles": [
        "williamhgates"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("inexhaustible_glass/linkedin-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 = { "profiles": ["williamhgates"] }

# Run the Actor and wait for it to finish
run = client.actor("inexhaustible_glass/linkedin-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 '{
  "profiles": [
    "williamhgates"
  ]
}' |
apify call inexhaustible_glass/linkedin-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Scraper – Profile, Email & Company Data (No Cookies)",
        "description": "Paste a LinkedIn profile/company URL or just a username and get the full public profile: name, headline, about, work experience (with years), education, certifications, location, followers & photo. No login, no cookies, no API key.",
        "version": "1.0",
        "x-build-id": "UHgUYEPmAAkdF775U"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/inexhaustible_glass~linkedin-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-inexhaustible_glass-linkedin-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/inexhaustible_glass~linkedin-scraper/runs": {
            "post": {
                "operationId": "runs-sync-inexhaustible_glass-linkedin-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/inexhaustible_glass~linkedin-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-inexhaustible_glass-linkedin-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",
                "properties": {
                    "profiles": {
                        "title": "🔗 LinkedIn URLs or usernames",
                        "type": "array",
                        "description": "One per line. Full URL (https://www.linkedin.com/in/williamhgates), just a username (williamhgates), or a company (company/microsoft).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "enrichContact": {
                        "title": "📧 Find email & phone (best-effort)",
                        "type": "boolean",
                        "description": "Search public web + GitHub for the person's REAL email/phone (via proxy rotation). Only data actually found in public sources is returned — never guessed. May be empty for many people. LinkedIn itself never exposes contact info.",
                        "default": false
                    },
                    "apolloApiKey": {
                        "title": "🎯 Apollo.io API key (optional — for PERSONAL email & mobile)",
                        "type": "string",
                        "description": "LinkedIn never exposes personal email/phone publicly. Paste a free Apollo.io API key and the actor matches each profile against Apollo's contact database to return the person's REAL personal email + mobile (where Apollo has it). Get a free key at apollo.io → Settings → API. Leave blank to use only free public-web enrichment."
                    },
                    "githubToken": {
                        "title": "🔑 GitHub token (optional)",
                        "type": "string",
                        "description": "A GitHub personal-access token raises the email-lookup rate limit (for developer profiles). Leave blank to skip."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
