# LinkedIn Profile Scraper (`alwaysprimedev/linkedin-profile-scraper`) Actor

Apify actor in Go for scraping public LinkedIn profile data, enriching company details, and attempting contact discovery.

- **URL**: https://apify.com/alwaysprimedev/linkedin-profile-scraper.md
- **Developed by:** [Always Prime](https://apify.com/alwaysprimedev) (community)
- **Categories:** Lead generation, SEO tools, Social media
- **Stats:** 73 total users, 31 monthly users, 100.0% runs succeeded, 5 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

from $3.50 / 1,000 profile results

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 Profile Scraper

Scrape public LinkedIn profile data at scale without cookies or login. Get clean profile output with names, headlines, locations, experience, education, company enrichment, recent posts, articles, and best-effort email discovery from public company websites.

Built for lead generation, recruiting, sales research, founder sourcing, talent mapping, and market intelligence.

### ✨ Why this actor sells

- No LinkedIn cookies required
- Public data only
- Bulk profile processing
- Company enrichment from public LinkedIn company pages
- Best-effort email discovery from company websites
- Streaming output: profiles appear in the dataset as they finish
- Clean `Profiles overview` table in Apify Output
- JSON, CSV, Excel, API, webhooks, and integrations ready

### 🎯 Best for

- Recruiters who need fast profile snapshots
- Sales teams building lead lists
- Agencies enriching prospect data
- Researchers analyzing talent and competitors
- Founders sourcing operators, executives, and advisors

### 📦 What you get

For each public profile URL, the actor can return:

- Full name
- First name and last name
- Headline
- Summary / About
- Location
- Followers and connections
- Profile picture
- Public identifier
- Current role and current company
- Work experience
- Education
- Articles
- Recent posts
- Company LinkedIn URL
- Company website
- Company industry
- Company size
- Best-effort email candidates from public company websites

### 🏆 Why choose this actor over basic LinkedIn scrapers

- It does not depend on login cookies, which reduces setup friction.
- It enriches company details from public LinkedIn company pages, not just the profile card.
- It pushes successful profiles into the dataset immediately, so you do not need to wait for the whole run to finish before seeing results.
- It separates failed items from successful output, so your dataset stays clean.
- It is optimized for Store-style usability: simple input, clean overview, complete JSON behind it.

### 📝 Input

The actor intentionally keeps input minimal.

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/williamhgates",
    "https://www.linkedin.com/in/satyanadella",
    "https://www.linkedin.com/in/ryanroslansky"
  ]
}
````

### ⚡ Quick start

#### Option 1: Run in Apify Console

1. Open the actor
2. Paste one or more LinkedIn profile URLs
3. Click `Start`
4. Watch results appear progressively in `Output`
5. Export as JSON, CSV, Excel, or use the dataset API

#### Option 2: Run via API

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/<YOUR-ACTOR-ID>/runs?token=<YOUR_APIFY_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{
    "profileUrls": [
      "https://www.linkedin.com/in/williamhgates",
      "https://www.linkedin.com/in/satyanadella"
    ]
  }'
```

#### Option 3: Local development

```bash
go run .
```

Local input is read from [input.json](C:/Users/Pachka/Desktop/apify/linkedin_profile_scraper/input.json). Local output is written to:

- [results.json](C:/Users/Pachka/Desktop/apify/linkedin_profile_scraper/output/results.json) for successful profiles
- `output/errors.json` for failed profiles

### 📊 Example output

```json
{
  "inputUrl": "https://www.linkedin.com/in/williamhgates",
  "succeeded": true,
  "linkedinUrl": "https://www.linkedin.com/in/williamhgates",
  "linkedinPublicUrl": "https://linkedin.com/in/williamhgates",
  "publicIdentifier": "williamhgates",
  "firstName": "Bill",
  "lastName": "Gates",
  "fullName": "Bill Gates",
  "headline": "Chair, Gates Foundation and Founder, Breakthrough Energy",
  "summary": "Chair of the Gates Foundation. Founder of Breakthrough Energy. Co-founder of Microsoft. Voracious reader. Avid traveler. Active blogger.",
  "location": "Seattle, Washington, United States",
  "followers": 40104281,
  "connections": 8,
  "profilePicture": "https://media.licdn.com/...",
  "jobTitle": "Co-chair",
  "jobStartedOn": "2000",
  "jobStillWorking": true,
  "currentJobDuration": "26 years",
  "companyName": "Gates Foundation",
  "companyIndustry": "Non-profit Organizations",
  "companyWebsite": "https://www.gatesfoundation.org/about/careers",
  "companyLinkedin": "https://www.linkedin.com/company/gates-foundation",
  "companySize": "1,001-5,000 employees",
  "email": "example@example.com",
  "experiences": [],
  "educations": [],
  "articles": [],
  "posts": [],
  "fetchedAt": "2026-03-28T17:22:14Z"
}
```

### 🖥️ Output experience in Apify

The actor is configured to make the Output tab useful for non-technical users:

- `Profiles overview` puts the most important fields first
- avatar is shown first
- successful profiles stream into the dataset during the run
- failed profiles do not pollute the main result dataset

### 🔌 Integrations

This actor works well with:

- Apify API
- Webhooks
- Make
- Zapier
- n8n
- Google Sheets
- Airtable
- HubSpot
- Pipedrive
- CRMs and internal lead enrichment workflows

### ❓ Frequently asked questions

#### Do I need LinkedIn cookies?

No. This actor is built for public LinkedIn profile pages and does not require cookies.

#### Does it scrape private profiles?

No. It only works with publicly accessible profile data.

#### Can I run multiple profile URLs at once?

Yes. Bulk input is supported by default.

#### When do results appear?

Successful results are pushed progressively during the run, so you can start consuming output before the full batch completes.

#### Why is email empty for some profiles?

Email discovery is best effort. The actor scans public company website pages, so some profiles will not produce an email candidate.

#### Why is mobile number empty?

Mobile enrichment requires your own external provider. Without it, `mobileNumber` remains empty.

#### What happens if some profiles fail?

Failed profiles are excluded from the main dataset and stored separately as errors, so your result set stays clean.

### 🔐 Compliance and usage note

This actor is intended for publicly visible LinkedIn data only. Do not use it to bypass authentication walls or collect restricted information. Always make sure your usage complies with applicable laws, platform rules, and your own internal compliance standards.

### 🆘 Support

If you want this actor tailored for a specific enrichment workflow, CRM export, or mobile/email provider, extend the actor in your fork or connect it through Apify integrations and webhooks.

# Actor input Schema

## `profileUrls` (type: `array`):

One or more public LinkedIn profile URLs to scrape.

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/williamhgates"
  ]
}
```

# Actor output Schema

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

No description

# 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 = {
    "profileUrls": [
        "https://www.linkedin.com/in/williamhgates"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("alwaysprimedev/linkedin-profile-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 = { "profileUrls": ["https://www.linkedin.com/in/williamhgates"] }

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Profile Scraper",
        "description": "Apify actor in Go for scraping public LinkedIn profile data, enriching company details, and attempting contact discovery.",
        "version": "0.1",
        "x-build-id": "ytuozY3sULROBzWqg"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/alwaysprimedev~linkedin-profile-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-alwaysprimedev-linkedin-profile-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/alwaysprimedev~linkedin-profile-scraper/runs": {
            "post": {
                "operationId": "runs-sync-alwaysprimedev-linkedin-profile-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/alwaysprimedev~linkedin-profile-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-alwaysprimedev-linkedin-profile-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": [
                    "profileUrls"
                ],
                "properties": {
                    "profileUrls": {
                        "title": "LinkedIn profile URLs",
                        "type": "array",
                        "description": "One or more public LinkedIn profile URLs to scrape.",
                        "items": {
                            "type": "string"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
