# LinkedIn Profile Scraper — No Cookies (`lergassy/linkedin-profile-scraper`) Actor

\[$2/1K profiles] LinkedIn profiles without login or cookies: name, headline, current title and company, location, about, followers, connections, full experience with dates, education, website, latest posts. Missing and private profiles are free. No account at risk.

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

## Pricing

from $1.40 / 1,000 profiles

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**LinkedIn Profile Scraper — No Cookies** turns LinkedIn profile URLs into clean rows: **name, headline, current title and company, location, about, followers, connections, the full experience history with dates, education, certifications, volunteering, publications, skills, recommendations, website** and, if you want, the person's **latest posts and articles**.

**$0.002 per profile.** No login, no cookies, no LinkedIn account to get restricted, no start fee. Profiles that do not exist or are private are free.

### Tested head-to-head — 26 September 2026

![LinkedIn profile scrapers tested on five public profiles: this Actor returned all five at $2 per 1,000, half the price of the others](https://raw.githubusercontent.com/lergassy/apify-actor-assets/main/benchmarks/liprof-tested-2026-09-26.png)

Same five public profiles for every Actor, run through the four most-used LinkedIn profile Actors on the
Apify Store from an ordinary account.

| | This Actor | The four others |
|---|---|---|
| Profiles returned (5 asked) | **5** | 5, 5, 1 — and one would not start without full access to your Apify account |
| Price per 1,000 profiles | **$2** | $4–$10 |
| Certifications, volunteering, publications, skills and recommendations | **Yes**, whatever the public profile shows | All of them at 1 of the 3 that ran |
| No LinkedIn login or cookies | **Yes** | Yes |

### What is LinkedIn Profile Scraper?

A people-enrichment tool for recruiting, sales and research. It reads the **public profile page** — the version LinkedIn shows search engines and logged-out visitors — and returns it as structured data. Nothing is logged in, so there is no session cookie to paste and no account at risk. Paste one URL or a hundred thousand; call it from the console, the API, a spreadsheet, n8n, Make, Zapier or an AI agent.

### What is in every row

| Field | Meaning |
|---|---|
| `fullName`, `firstName`, `lastName`, `headline` | Identity as shown on the profile |
| `title`, `company`, `companyLinkedinUrl`, `currentPositions` | Current role(s) with the company page |
| `location`, `country`, `about`, `website` | Location, about text, website from the profile |
| `followers`, `connections`, `badges` | Follower count, "500+" connections, Creator / Top Voice |
| `experience` | Every position: title, company, company URL, start, end, current flag, duration, description |
| `education` | Schools with start and end years |
| `certifications`, `volunteering`, `publications`, `honorsAndAwards`, `organizations` | Every such section the public profile shows — names, issuers or organizations, dates, links, descriptions |
| `skills`, `recommendations` | Listed skills, and recommendations received (who wrote it, their profile, the text) |
| `latestPosts`, `articles` | With **Add the latest posts and articles** on: 5–9 recent posts (text, date, likes, link) and up to 10 articles |

### How much does it cost?

**$0.002 per profile** — one row, one charge.

- Profiles that do not exist, are private or are refused after retries: **$0**.
- Experience, education, certifications, volunteering, publications, skills, recommendations, posts and articles: included.

#### Bulk export: what 50,000 rows actually cost

This Actor is built for bulk jobs — paste a whole candidate or lead list into one run, or refresh
records on a schedule. There is **no fee per run, no fee per page and no proxy charge**: you pay for
the profile rows you keep, and error rows are free.

| Job | This Actor | Most-used Actor in this category |
|---|---|---|
| 50,000 profiles across 100 runs | **$100** | $200 |

Checked on the Apify Store on 23 September 2026 against the Actor with the most monthly users in
this category ($0.004 per profile). Some Actors here ask less per row — this table compares against
the one buyers actually use most.

### How to use it in three steps

1. Paste LinkedIn profile URLs or slugs into **👤 Profiles** — `https://www.linkedin.com/in/satyanadella` or `satyanadella` — or link a Google Sheet.
2. Turn on **📰 Add the latest posts and articles** if you want recent activity in the row.
3. Press **Start**, then download JSON, CSV or Excel — or call it from the API, n8n, Make, Zapier or an AI agent.

### ⬇️ Input

```json
{
  "profileUrls": ["https://www.linkedin.com/in/satyanadella", "jeffweiner08", "justinwelsh"],
  "includePosts": false
}
```

### ⬆️ Output

```json
{
  "type": "profile",
  "fullName": "Satya Nadella",
  "firstName": "Satya",
  "lastName": "Nadella",
  "headline": "Chairman and CEO at Microsoft",
  "title": "Chairman and CEO",
  "company": "Microsoft",
  "companyLinkedinUrl": "https://www.linkedin.com/company/microsoft",
  "location": "Redmond, Washington, United States",
  "followers": 12182595,
  "connections": "500+",
  "badges": "Creator, Top Voice",
  "experience": [
    { "title": "Chairman and CEO", "company": "Microsoft", "startDate": "Feb 2014", "endDate": null, "current": true, "duration": "12 years 8 months" },
    { "title": "Board Member", "company": "Starbucks", "startDate": "2017", "endDate": "2024", "current": false, "duration": "7 years" }
  ],
  "education": [{ "school": "The University of Chicago Booth School of Business", "startDate": "1994", "endDate": "1996" }],
  "linkedinUrl": "https://www.linkedin.com/in/satyanadella",
  "scrapedAt": "2026-09-23T12:04:11.004Z"
}
```

### Use cases

#### Recruiting

Current role, tenure and the full career path for every candidate on a shortlist — no seat licence, no account ban risk.

#### Sales enrichment

Title and company for every contact in a CRM, refreshed on a schedule so job changes show up. Pair with our **LinkedIn Email Finder** for the work address.

#### Research and influencer analysis

Followers, Creator badges and recent posts with likes for a list of voices in your market.

#### AI agents

Through the Apify MCP server an agent can ask *"what is this person's current role and background?"* and get a row back.

### Integrations

Every run is available through the Apify API, and the Actor works out of the box with n8n, Make, Zapier, Google Sheets, LangChain and the Apify MCP server.

### FAQ

**Do I need cookies or a LinkedIn account?** No. That is the point of this Actor: it reads public profiles only, so nothing can be restricted.

**Why are some fields empty?** LinkedIn hides parts of some profiles from logged-out visitors. The Actor delivers what the public profile shows and never invents the rest.

**Does it return e-mails or phone numbers?** No — public profiles do not show them. For a work e-mail, use **LinkedIn Email Finder**.

**Is this legal?** The Actor reads profiles that people have made public. The rows are personal data: under GDPR, CCPA and similar laws you need a lawful basis to process them, must respect opt-outs, and must follow LinkedIn's terms. Use it for legitimate business purposes only.

# Actor input Schema

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

LinkedIn profile URLs or slugs, one per line — <b>https://www.linkedin.com/in/satyanadella</b> or <b>satyanadella</b>. One row per profile, $0.002 each; profiles that do not exist or are private are free.

## `startUrls` (type: `array`):

The same thing for long lists — upload a file or link a Google Sheet of profile URLs.

## `includePosts` (type: `boolean`):

The person's recent posts (usually 5–9) and articles (up to 10) inside the same row. No extra charge.

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

A hard ceiling on what one run reads and bills.

## `concurrency` (type: `integer`):

How many LinkedIn pages to read at the same time. Keep it low — LinkedIn dislikes bursts.

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

Off by default — public LinkedIn pages answer a direct request, and a refused request is retried on an Apify datacenter address. Residential proxy is never switched on by itself: a LinkedIn page is 350–800 KB, so residential traffic would cost more than the row.

## Actor input object example

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/satyanadella",
    "https://www.linkedin.com/in/jeffweiner08",
    "justinwelsh"
  ],
  "startUrls": [],
  "includePosts": false,
  "maxItems": 10000,
  "concurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

One row per profile: current role, experience, education, followers, optional posts.

# 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",
        "https://www.linkedin.com/in/jeffweiner08",
        "justinwelsh"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("lergassy/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",
        "https://www.linkedin.com/in/jeffweiner08",
        "justinwelsh",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("lergassy/linkedin-profile-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "profileUrls": [
    "https://www.linkedin.com/in/satyanadella",
    "https://www.linkedin.com/in/jeffweiner08",
    "justinwelsh"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call lergassy/linkedin-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,lergassy/linkedin-profile-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

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