# LinkedIn Profile Scraper ✅ NO COOKIES (`atomus/linkedin-profile-scraper`) Actor

Scrape LinkedIn profiles into structured records: name, title, headline, summary, company, location, skills, education, and work history. Submit up to 5,000 URLs per run, each returns one record. Pay only for profiles found; not-found and errors are free. No account or cookies needed.

- **URL**: https://apify.com/atomus/linkedin-profile-scraper.md
- **Developed by:** [Atomus APIs](https://apify.com/atomus) (community)
- **Categories:** Lead generation, Social media, Automation
- **Stats:** 22 total users, 15 monthly users, 98.0% runs succeeded, 3 bookmarks
- **User rating**: 5.00 out of 5 stars

## Pricing

$6.00 / 1,000 profile enricheds

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

A **LinkedIn profile scraper** that turns any LinkedIn profile URL into a full structured record: **name, job title, headline, summary, company, location, skills, education, and work history**, plus deeply enriched company data. Paste a list of profile URLs and the Actor returns one clean JSON record per profile. **No LinkedIn account, login, or cookies required.**

Submit up to **5,000 URLs in a single run**, **pay only for profiles found** (not-found and errors are always free), and get a predictable 1:1 mapping back to your input list.

> 💡 **More LinkedIn tools by Atomus:** https://apify.com/atomus

---

### What does this LinkedIn Profile Scraper do?

Give it one or more LinkedIn profile URLs and it returns a structured JSON record for each one, ready to load into a CRM, spreadsheet, or AI agent.

| Feature | Description |
|---------|-------------|
| 📋 **Rich profile data** | First name, last name, full name, title, headline, summary, picture URL, location, skills, education, and work history. |
| 🎯 **Sales / ICP signals** | `open_to_work`, `hiring`, `verified`, `premium` badges; `seniority` (`c_suite`, `vp`, `director`, etc.); department + functions. |
| 🏢 **Deeply enriched company** | Legal name, founded year, type, industry, staff count, website, domain, social URLs, full HQ address, tech stack, IPO date, IT spend, and more. |
| 🔗 **Cross-platform links** | LinkedIn, Twitter / X, GitHub, and Facebook URLs surfaced when discoverable. |
| 💰 **Pay only for results** | You are charged **only when a profile is found**. `not_found` and `error` responses are always free. |
| 📦 **Batch processing** | Submit up to 5,000 URLs in a single run. |
| ⚡ **1:1 enrichment** | One input URL produces exactly one output record, predictable and easy to join back to your data. |
| 🔐 **No cookies needed** | No LinkedIn account, cookies, or risk of bans. |

---

### How do I scrape a LinkedIn profile?

1. **Open the Actor** and paste one or more LinkedIn profile URLs into the `profileUrls` field (format: `https://www.linkedin.com/in/<handle>/`).
2. **Click Start.** The Actor processes each URL and pushes one record per profile to the dataset.
3. **Read the results.** Each record has a `status` (`success` | `not_found` | `error`); successful records carry the full `profile` object.
4. **Export or pipe the data.** Pull the dataset via the Apify API or Console, or feed it straight into an AI agent over MCP.

No login, no browser session, no cookies, just URLs in and structured data out.

---

### Input

#### Basic Usage

Just paste one or more LinkedIn profile URLs:

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

#### All Input Parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `profileUrls` | string\[] | ✅ Yes | (none) | LinkedIn profile URLs. Each must match `https://www.linkedin.com/in/<handle>/`. Up to 5,000 per run. |

#### Supported URL Formats

```
✅ https://www.linkedin.com/in/satyanadella/
✅ https://www.linkedin.com/in/satyanadella
✅ https://www.linkedin.com/in/satyanadella/?utm_source=share
```

***

### Output

Each input URL produces exactly one record in the dataset. The `status` field tells you what happened:

| Status | Charged? | Description |
|--------|----------|-------------|
| `success` | ✅ Yes ($0.006) | Profile found, full data in the `profile` field. |
| `not_found` | ❌ No | Profile not found in the data source (private, deleted, or not indexed). |
| `error` | ❌ No | Invalid URL format or upstream network failure. |

#### Success Record

```json
{
  "url": "https://www.linkedin.com/in/satyanadella/",
  "status": "success",
  "profile": {
    "identifier": "satyanadella",
    "first_name": "Satya",
    "last_name": "Nadella",
    "full_name": "Satya Nadella",
    "title": "Chairman and CEO",
    "headline": "Chairman and CEO at Microsoft",
    "summary": "As chairman and CEO of Microsoft, I define my mission...",
    "picture_url": "https://images.ai-ark.com/...",
    "background_url": "https://media.licdn.com/dms/image/...",
    "industry": "Computer Software",
    "location": {
      "default": "Redmond, Washington, United States, North America",
      "short": "Redmond, Washington",
      "country": "United States",
      "state": "Washington",
      "city": "Redmond"
    },
    "languages": {
      "primary_locale": { "country": "US", "language": "en" },
      "supported_locales": [{ "country": "US", "language": "en" }]
    },
    "badges": {
      "premium": true,
      "creator": true,
      "open_to_work": false,
      "hiring": false,
      "verified": true,
      "influencer": true
    },
    "department": {
      "departments": ["c_suite"],
      "sub_departments": ["founder", "executive"],
      "functions": ["entrepreneurship"],
      "seniority": "c_suite"
    },
    "links": {
      "linkedin": "https://www.linkedin.com/in/satyanadella",
      "twitter": null,
      "github": null,
      "facebook": null
    },
    "skills": [],
    "educations": [
      {
        "school": {
          "name": "The University of Chicago Booth School of Business",
          "logo": "https://images.ai-ark.com/...",
          "url": "https://www.linkedin.com/school/universityofchicagoboothschoolofbusiness/"
        },
        "date": { "start": "1994-01-01", "end": "1996-12-31" }
      }
    ],
    "position_groups": [
      {
        "company": {
          "name": "Microsoft",
          "logo": "https://images.ai-ark.com/...",
          "url": "https://www.linkedin.com/company/microsoft",
          "employees": { "start": 10001 }
        },
        "date": { "start": "2014-02-01", "end": null },
        "profile_positions": [
          {
            "company": "Microsoft",
            "title": "Chairman and CEO",
            "date": { "start": "2014-02-01", "end": null }
          }
        ]
      }
    ],
    "company": {
      "name": "Microsoft",
      "legal_name": "Microsoft Corporation",
      "founded_year": 1975,
      "type": "PUBLIC_COMPANY",
      "industry": "software development",
      "staff": { "total": 228018, "range_start": 10001, "range_end": null },
      "website": "https://news.microsoft.com",
      "domain": "microsoft.com",
      "linkedin_url": "https://www.linkedin.com/company/microsoft",
      "twitter_url": "https://x.com/Microsoft",
      "crunchbase_url": "https://www.crunchbase.com/organization/microsoft",
      "headquarter": {
        "country": "United States",
        "state": "Washington",
        "city": "Redmond",
        "street": "1 Microsoft Way",
        "postal_code": "98052",
        "raw_address": "1 Microsoft Way, Redmond, Washington, United States, North America",
        "position": { "lng": -122.33279, "lat": 47.591396 }
      },
      "technologies": [{ "name": "organization schema", "category": "framework" }],
      "industries": ["Software Development"],
      "keywords": ["AI", "Cloud", "Productivity"],
      "naics": ["511210"],
      "revenue_amount": "10000000000-...",
      "funding_total": 1000000,
      "ipo_date": "1986-03-13",
      "it_spend": 66692471976,
      "last_updated": "2026-04-12"
    },
    "last_updated": "2026-04-12"
  },
  "_metadata": {
    "extracted_at": "2026-04-28T12:00:00.000Z"
  }
}
```

#### Not Found Record

```json
{
  "url": "https://www.linkedin.com/in/someunknownperson/",
  "status": "not_found",
  "_metadata": {
    "extracted_at": "2026-04-28T12:00:00.000Z"
  }
}
```

#### Error Record

```json
{
  "url": "https://example.com/not-a-linkedin-url",
  "status": "error",
  "error_kind": "user_error",
  "reason": "Invalid LinkedIn profile URL. Expected: https://www.linkedin.com/in/<handle>/",
  "_metadata": {
    "extracted_at": "2026-04-28T12:00:00.000Z"
  }
}
```

#### Output Fields Reference

All fields below are nested under `profile` (present when `status = success`).

**Identity:**

| Field | Type | Description |
|-------|------|-------------|
| `profile.identifier` | string | null | LinkedIn handle (the slug after `/in/`, e.g. `satyanadella`). |
| `profile.first_name` | string | null | First name. |
| `profile.last_name` | string | null | Last name. |
| `profile.full_name` | string | null | Full display name. |
| `profile.title` | string | null | Current job title. |
| `profile.headline` | string | null | LinkedIn headline (short tagline under the name). |
| `profile.summary` | string | null | About / summary section. |
| `profile.picture_url` | string | null | Profile photo URL. |
| `profile.background_url` | string | null | Banner / background image URL. |
| `profile.birth_date` | string | null | Birth date if exposed by the source. |
| `profile.industry` | string | null | Top-level industry classification (e.g. `Computer Software`). |
| `profile.last_updated` | string | null | ISO date the upstream source last refreshed this profile. |

**Location & locale:**

| Field | Type | Description |
|-------|------|-------------|
| `profile.location.default` | string | Compact one-liner (e.g. `Redmond, Washington, United States, North America`). |
| `profile.location.short` | string | Short one-liner (e.g. `Redmond, Washington`). |
| `profile.location.country` | string | Country name. |
| `profile.location.state` | string | State or region. |
| `profile.location.city` | string | City. |
| `profile.languages.primary_locale` | object | `{ country, language }` of the profile's primary locale. |
| `profile.languages.supported_locales` | object\[] | Other locales the profile is translated into. |

**Sales / ICP signals:**

| Field | Type | Description |
|-------|------|-------------|
| `profile.badges.open_to_work` | boolean | True when the profile is flagged Open to Work. |
| `profile.badges.hiring` | boolean | True when the profile is hiring. |
| `profile.badges.premium` | boolean | LinkedIn Premium subscriber. |
| `profile.badges.creator` | boolean | LinkedIn Creator. |
| `profile.badges.verified` | boolean | LinkedIn-verified profile. |
| `profile.badges.influencer` | boolean | LinkedIn Influencer. |
| `profile.department.seniority` | string | null | Seniority level (e.g. `c_suite`, `vp`, `director`, `manager`). |
| `profile.department.functions` | string\[] | Functional areas (e.g. `engineering`, `sales`). |
| `profile.department.departments` | string\[] | Departments (e.g. `engineering`, `c_suite`). |
| `profile.department.sub_departments` | string\[] | Sub-departments. |

**Social links:**

| Field | Type | Description |
|-------|------|-------------|
| `profile.links.linkedin` | string | null | Canonical LinkedIn URL from the data source. |
| `profile.links.twitter` | string | null | Twitter / X profile URL if discoverable. |
| `profile.links.github` | string | null | GitHub profile URL if discoverable. |
| `profile.links.facebook` | string | null | Facebook profile URL if discoverable. |

**Career history:**

| Field | Type | Description |
|-------|------|-------------|
| `profile.skills` | string\[] | List of skills. |
| `profile.educations` | object\[] | Education history. Each entry: `{ school: { id, name, logo, url }, degree_name, field_of_study, grade, date: { start, end } }`. |
| `profile.position_groups` | object\[] | Work experience grouped by company. Each entry: `{ company: { id, name, logo, url, employees }, date: { start, end }, profile_positions: [{ company, title, description, employment_type, location, date }] }`. |

**Current company (deeply enriched):**

| Field | Type | Description |
|-------|------|-------------|
| `profile.company.name` | string | null | Current company name. |
| `profile.company.legal_name` | string | null | Legal company name (e.g. `Microsoft Corporation`). |
| `profile.company.description` | string | null | Long-form company description. |
| `profile.company.overview` | string | null | Short company overview. |
| `profile.company.founded_year` | integer | null | Year founded. |
| `profile.company.type` | string | null | `PUBLIC_COMPANY`, `PRIVATELY_HELD`, `NON_PROFIT`, etc. |
| `profile.company.industry` | string | null | Company-level industry. |
| `profile.company.staff.total` | integer | null | Total employees. |
| `profile.company.staff.range_start` | integer | null | Lower bound of employee range. |
| `profile.company.website` | string | null | Company website URL. |
| `profile.company.domain` | string | null | Root domain (e.g. `microsoft.com`). |
| `profile.company.linkedin_url` | string | null | Company LinkedIn page. |
| `profile.company.twitter_url` | string | null | Company Twitter / X. |
| `profile.company.facebook_url` | string | null | Company Facebook. |
| `profile.company.crunchbase_url` | string | null | Company Crunchbase. |
| `profile.company.headquarter` | object | null | `{ country, state, city, street, postal_code, raw_address, position: { lng, lat } }`. |
| `profile.company.technologies` | object\[] | Tech stack: `[{ name, category }]`. |
| `profile.company.industries` | string\[] | Industry tags. |
| `profile.company.keywords` | string\[] | SEO / topic keywords. |
| `profile.company.naics` | string\[] | NAICS classification codes. |
| `profile.company.revenue_amount` | string | null | Revenue range (e.g. `10000000000-...`). |
| `profile.company.funding_total` | integer | null | Total funding raised in USD. |
| `profile.company.ipo_date` | string | null | IPO date if public. |
| `profile.company.it_spend` | integer | null | Estimated annual IT spend in USD (Aberdeen data). Useful for B2B SaaS targeting. |

**Provenance:**

| Field | Type | Description |
|-------|------|-------------|
| `_metadata.extracted_at` | string | ISO timestamp of the lookup. |

***

### How much does it cost to scrape LinkedIn profiles?

This Actor uses **pay-per-event** pricing. You are charged **$0.006 per successfully scraped profile** (= **$6.00 per 1,000 profiles**).

**Cost examples:**

| Profiles scraped | Cost |
|-------------------|------|
| 100 | $0.60 |
| 500 | $3.00 |
| 1,000 | $6.00 |
| 5,000 | $30.00 |

**What you are NOT charged for:**

- Profiles that returned `not_found` (not in the data source)
- Profiles that returned `error` (invalid URL or network failure)
- Apify platform compute time (memory/CPU)

#### Free plan limit

Apify Free plan users can scrape **up to 20 profiles per calendar month** so you can validate the output and field shape before paying. The cap resets on the 1st of each month. To run unlimited profiles, upgrade to any paid Apify plan. Free-tier overflow returns a `status: "error"` record with `error_kind: "free_tier_limit"` and is not charged.

> 💡 Profiles that aren't found cost nothing, there's no penalty for trying.

***

### Use it with AI agents and MCP

This Actor is built for AI agents and LLMs via the Apify MCP server. Each record has a `status` field (`success` | `not_found` | `error`) and a flat, predictable `profile` object when status is `success`, ideal for agent post-processing.

**Key fields for agents:**

- `profile.full_name`: Who this person is
- `profile.title` + `profile.headline`: Their current role and self-description
- `profile.industry`: Industry classification
- `profile.department.seniority`: Seniority level (`c_suite`, `vp`, `director`, etc.) for ICP matching
- `profile.badges.open_to_work` / `profile.badges.hiring`: Intent signals
- `profile.company.name` + `profile.company.industry` + `profile.company.staff.total`: Where they work, what the company does, headcount
- `profile.company.technologies`: Tech stack used by the company
- `profile.company.it_spend`: Annual IT spend (B2B SaaS targeting)
- `profile.skills`: Areas of expertise
- `profile.position_groups`: Career history
- `profile.links.{twitter, github, facebook}`: Other social profiles for outreach

**Example agent prompt:**

> "Scrape these 10 LinkedIn profiles and summarize each person's role, company, and top 3 skills in a table."

The agent passes the URL list as `profileUrls` and processes the structured `profile` output directly, no scraping logic, no HTML parsing.

***

### Use Cases

- **📊 CRM enrichment**: Automatically fill in job title, company, location, and skills for contacts in your CRM.
- **🔎 Sales prospecting**: Validate and enrich leads before outreach.
- **🧩 Recruiting**: Quickly build structured candidate profiles from a list of LinkedIn URLs.
- **🏢 Account research**: Understand a company's team composition and expertise.
- **📋 Data pipelines**: Feed structured profile data into downstream tools (Airtable, HubSpot, Salesforce, etc.).
- **🤖 AI agent context**: Give AI agents structured professional background on a person before a meeting or call.

***

### LinkedIn Profile Scraper vs cookie-based tools vs the official LinkedIn API

| | This LinkedIn Profile Scraper | Cookie-based scrapers | Official LinkedIn API |
|---|---|---|---|
| **LinkedIn account / cookies** | Not needed | Your logged-in cookies required | OAuth app + LinkedIn approval |
| **Account / ban risk** | None (no account used) | High (your account can be restricted) | None |
| **Setup** | Paste profile URLs | Extract and paste your session cookie | Partner application + review |
| **Data depth** | Full profile + deep company data | Varies, often profile-only | Limited, mostly your own network |
| **Bulk** | Up to 5,000 URLs per run | Rate-limited by your account | Strict quotas |
| **Company enrichment** | Yes (legal name, HQ, tech stack, IT spend, more) | Rarely | No |
| **Pricing** | Pay per profile found ($0.006) | Subscription + your account | Gated / partner pricing |

For most teams that just have a list of profile URLs to enrich, the cookieless approach returns full structured data with zero account risk, no session to maintain, and no partner approval to wait on.

***

### Other LinkedIn scrapers by Atomus

| Actor | What it does |
|-------|--------------|
| [LinkedIn Post Reactions Scraper Pro](https://apify.com/atomus/linkedin-reactions-scraper-pro) | Extract every reactor on a LinkedIn post (name, headline, profile URL, reaction type). |
| [LinkedIn Posts Scraper](https://apify.com/atomus/linkedin-posts-scraper-pro) | Scrape posts, text, media, and engagement counts from any LinkedIn profile or company. |
| [LinkedIn Post Comments & Replies Scraper Pro](https://apify.com/atomus/linkedin-comments-scraper-pro) | Extract every comment and reply on a LinkedIn post, with reaction counts and reply tracking. |

See all tools at [apify.com/atomus](https://apify.com/atomus).

***

### FAQ

#### What is LinkedIn profile scraping?

LinkedIn profile scraping turns a bare LinkedIn profile URL into a full structured record, name, job title, headline, summary, company, location, skills, education, and work history, without opening a browser or logging in. This Actor takes a list of profile URLs and returns one clean JSON record per profile, ready for a CRM, spreadsheet, or AI agent.

#### How do I scrape a LinkedIn profile without an account or cookies?

Paste the profile URL (or up to 5,000 URLs) into `profileUrls` and run the Actor. It resolves each profile through a cookieless data source, so you never connect a LinkedIn account, paste a session cookie, or risk a ban. Each URL returns exactly one record.

#### What data does the LinkedIn Profile Scraper return?

For each found profile: identity (name, title, headline, summary), location, ICP signals (seniority, department, open-to-work / hiring / verified / premium badges), skills, education, full work history, cross-platform links, and a deeply enriched company object (legal name, HQ address, industry, staff count, tech stack, IT spend, IPO date, and more).

#### How much does it cost?

$0.006 per successfully scraped profile ($6 per 1,000). You are charged only for profiles that are found, `not_found` and `error` results are free. Free Apify plans include 20 profiles per month so you can test before paying.

#### Is there an official LinkedIn API for profile data?

LinkedIn's official APIs (Marketing, Talent Solutions) are partner-gated, require an approved OAuth app, and do not expose arbitrary public profile data for enrichment. For turning a list of profile URLs into structured records, a cookieless scraper like this one is the practical path.

#### Is it legal to scrape LinkedIn profiles?

This Actor reads publicly available profile information through a third-party data source. You are responsible for using the output in line with applicable laws (GDPR/CCPA), LinkedIn's terms, and your own compliance requirements. It is an independent tool, not affiliated with LinkedIn.

#### How fresh is the data?

Each record includes a `last_updated` field (both at the profile and company level) showing when the upstream source last refreshed that profile, so you always know how recent the data is.

#### What happens if a profile isn't found?

You get a record with `status: "not_found"` (private, deleted, or not indexed) or `status: "error"` (invalid URL or upstream failure). Neither is charged, so there is no penalty for trying a URL that doesn't resolve.

#### Can I enrich a CRM or spreadsheet in bulk?

Yes. Export LinkedIn URLs from your CRM or spreadsheet, paste them into `profileUrls` (up to 5,000 per run), and run. The output maps 1:1 to your input by URL, so it's easy to rejoin in any spreadsheet tool or database.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. LinkedIn® is a registered trademark of LinkedIn Corporation. All trademarks are property of their respective owners.

# Actor input Schema

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

List of LinkedIn profile URLs to enrich. Each must match the format https://www.linkedin.com/in/<handle>/.

## Actor input object example

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

# Actor output Schema

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

// Run the Actor and wait for it to finish
const run = await client.actor("atomus/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("atomus/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 atomus/linkedin-profile-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Profile Scraper ✅ NO COOKIES",
        "description": "Scrape LinkedIn profiles into structured records: name, title, headline, summary, company, location, skills, education, and work history. Submit up to 5,000 URLs per run, each returns one record. Pay only for profiles found; not-found and errors are free. No account or cookies needed.",
        "version": "1.0",
        "x-build-id": "9aNyYEyd0j82VHxMB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/atomus~linkedin-profile-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-atomus-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/atomus~linkedin-profile-scraper/runs": {
            "post": {
                "operationId": "runs-sync-atomus-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/atomus~linkedin-profile-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-atomus-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",
                        "minItems": 1,
                        "maxItems": 5000,
                        "type": "array",
                        "description": "List of LinkedIn profile URLs to enrich. Each must match the format https://www.linkedin.com/in/<handle>/.",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
