# LinkedIn Profile Scraper | $1.2/1K | No Login (Fast) (`apivault_labs/linkedin-profile-scraper`) Actor

Extract public LinkedIn profiles at scale. No login, no cookies, no browser. Get name, bio, location, followers, website, industry. Choose fields to extract. Batch up to 20 concurrent. JSON output for CRM, lead gen, recruiting. $0.0012 per profile ($1.2 per 1,000).

- **URL**: https://apify.com/apivault\_labs/linkedin-profile-scraper.md
- **Developed by:** [Apivault Labs](https://apify.com/apivault_labs) (community)
- **Categories:** Social media, Lead generation
- **Stats:** 73 total users, 21 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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](https://api.apify.com/v2/key-value-stores/E76hLVOROveornuAY/records/linkedin-profile-hero-v3.jpg)

## LinkedIn Profile Scraper — No Login, Fast, $1.2 / 1K

Scrape **public LinkedIn profiles** at scale — **no login, no cookies, no browser**. Get name, headline/bio, location, follower count, website and industry, and **choose exactly which fields you pay for**. Real-time data (not a stale cache), bulk and parallel, clean JSON/CSV for CRM, lead generation and recruiting.

From **$1.2 per 1,000 profiles** (cheapest tier) this is a **fast, low-cost LinkedIn profile scraper** built for the basic, high-volume fields you actually use in outreach.

### Why this Actor?

| | This Actor | Typical LinkedIn scrapers |
|---|---|---|
| Login / cookies | Never needed | Often need cookies (account-ban risk) |
| Data freshness | Real-time, live page | Frequently cached, weeks old |
| Field selection | Pick only what you need | Fixed output, pay for everything |
| Price per 1K | from **$1.2** | $3.5 – $10 |
| Speed | Up to 20 profiles in parallel | Often serial |
| Output | JSON / CSV, ready for CRM | Varies |

> Need full work history, education and skills? That's a different, heavier job. **This Actor is the fast, low-cost option for the core public fields** most outreach and enrichment workflows need.

### What you get

Choose any of these fields (toggle on/off in input):

| Field | Default | Description |
|-------|---------|-------------|
| Username / Handle | ✅ | LinkedIn handle (from the `/in/<handle>` URL) |
| Full Name | ✅ | First + last name |
| Bio / Description | ✅ | Headline / summary |
| Location | ✅ | City, country |
| Follower Count | ✅ | Number of followers |
| Following Count | ✅ | Connections / following |
| Number of Posts | ✅ | Post count |
| Profile URL | ✅ | LinkedIn URL |
| Email | ❌ | If publicly visible |
| Phone Number | ❌ | If publicly visible |
| Website | ❌ | Personal website URL |
| Category / Industry | ❌ | Professional industry |
| Other Metadata | ❌ | Additional public info |

Only enabled fields are extracted and returned — so you never pay for data you don't need.

### Input

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/satyanadella/",
    "https://www.linkedin.com/in/williamhgates/"
  ],
  "extractFullName": true,
  "extractBio": true,
  "extractFollowers": true,
  "extractEmail": false,
  "maxConcurrency": 5,
  "timeout": 90
}
```

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `profileUrls` | string\[] | — | LinkedIn profile URLs (required) |
| `maxConcurrency` | int | 5 | Parallel requests (max: 20, recommended 5–10) |
| `timeout` | int | 90 | Timeout per profile in seconds |

### Output

```json
{
  "success": true,
  "inputUrl": "https://www.linkedin.com/in/satyanadella/",
  "username": "satyanadella",
  "fullName": "Satya Nadella",
  "bio": "Chairman and CEO of Microsoft...",
  "location": "Redmond, Washington, United States",
  "followerCount": 12000000,
  "website": "https://snscratchpad.com/",
  "category": "Technology"
}
```

Output contains only the fields you enabled. Disabled fields are omitted.

- `username` is the LinkedIn handle (the `/in/<handle>` part of the URL).
- Count fields (`followerCount`, `followingCount`, `postCount`) are numbers; if a count isn't public it comes back as `null`.

### Pricing — pay per result, cheaper on higher tiers

You pay **only for profiles successfully scraped**. Failed or empty profiles are **free** — no runaway bills.

| Apify plan tier | Price / 1,000 profiles | Price / profile |
|---|---|---|
| **Free** | **$2.00** | $0.0020 |
| **Bronze** | $2.00 | $0.0020 |
| **Silver** | $1.80 | $0.0018 |
| **Gold** | $1.60 | $0.0016 |
| **Platinum** | $1.40 | $0.0014 |
| **Diamond** | $1.20 | $0.0012 |

Higher subscription tiers pay less per profile. Free Apify credits cover roughly **2,500 profiles/month**. No subscriptions, no monthly fees.

### Use cases

- **B2B lead generation** — pull fresh prospect data straight into your CRM.
- **Recruiting** — current headlines, locations and follower signals.
- **Sales outreach** — enrich a list of LinkedIn URLs before you send.
- **CRM hygiene** — refresh stale LinkedIn records in bulk.
- **Market research** — live follower counts and industry data.

### Integrations (n8n, Make, MCP, AI agents)

Run it from the **Apify API**, schedule it, or wire it into **n8n / Make** with the Apify nodes. Because output is clean JSON, it drops straight into **AI agents and MCP** workflows that need fresh LinkedIn data on demand.

### Performance

- 15–30 seconds per profile (real-time scraping, not an instant cache lookup).
- Up to 20 concurrent requests; recommended 5–10 for the best success rate.
- Transient hiccups are retried automatically, so a busy run won't hang or fail the whole batch.
- \~95%+ success rate on public profiles.

### FAQ

**Do I need a LinkedIn account or cookies?**
No. The Actor reads public profile pages — no login, no cookies, no account-ban risk.

**Is the data live or cached?**
Live. Each profile is scraped in real time, so follower counts, bios and links are current.

**Can it get emails and phone numbers?**
Only if they're publicly visible on the profile, which is rare on LinkedIn. Enable those fields only if you need them.

**Why is it cheaper than other LinkedIn scrapers?**
It focuses on the core public fields (no heavy full-CV extraction), so it's faster and we pass the savings on.

**What if a profile fails?**
It's retried automatically; if it still can't be scraped it's marked failed and **you are not charged** for it.

### Notes

- Only public profile data is extracted.
- Restricted profiles may return partial data.
- Recommended concurrency: 5–10 for best results.

### Disclaimer

This Actor extracts only publicly available data and is **not affiliated with, endorsed by, or sponsored by LinkedIn Corporation**. LinkedIn® is a registered trademark of LinkedIn Corporation. Ensure your use complies with applicable laws and LinkedIn's terms of service.

# Actor input Schema

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

List of LinkedIn profile URLs to scrape

## `extractUsername` (type: `boolean`):

Extract username or handle

## `extractFullName` (type: `boolean`):

Extract full name

## `extractBio` (type: `boolean`):

Extract bio, headline, or description

## `extractLocation` (type: `boolean`):

Extract location

## `extractFollowers` (type: `boolean`):

Extract follower count

## `extractFollowing` (type: `boolean`):

Extract following / connection count

## `extractPosts` (type: `boolean`):

Extract post count

## `extractProfileUrl` (type: `boolean`):

Include profile URL in output

## `extractEmail` (type: `boolean`):

Extract email (if publicly visible)

## `extractPhone` (type: `boolean`):

Extract phone number (if publicly visible)

## `extractWebsite` (type: `boolean`):

Extract website URL (if publicly visible)

## `extractCategory` (type: `boolean`):

Extract category or industry

## `extractMetadata` (type: `boolean`):

Extract any other public metadata

## `maxConcurrency` (type: `integer`):

Number of parallel requests (recommended: 5-10)

## `timeout` (type: `integer`):

Max wait time per profile

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/satyanadella/"
  ],
  "extractUsername": true,
  "extractFullName": true,
  "extractBio": true,
  "extractLocation": true,
  "extractFollowers": true,
  "extractFollowing": true,
  "extractPosts": true,
  "extractProfileUrl": true,
  "extractEmail": false,
  "extractPhone": false,
  "extractWebsite": false,
  "extractCategory": false,
  "extractMetadata": false,
  "maxConcurrency": 5,
  "timeout": 90
}
```

# 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/satyanadella/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("apivault_labs/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/satyanadella/"] }

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

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/eZFfkRpZXeYOu3OAP/builds/idCgacfJAM9b8N1CB/openapi.json
