# LinkedIn Public Profile Enricher (`datascraperes/linkedin-public-profile-enricher`) Actor

Turn public LinkedIn profile URLs into structured data: name, headline, location, About, experience, education and more. No login or cookies required. Pay $2 per 1,000 successful profiles; invalid, blocked and failed pages are free.

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

## Pricing

$2.00 / 1,000 public linkedin profile extracteds

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 Public Profile Enricher

Extract structured information from public LinkedIn profile pages.

Provide one or more public profile URLs and receive one result for every URL.
The Actor only uses LinkedIn's public guest view. It does not require or accept
LinkedIn credentials, cookies, email addresses, phone numbers, company URLs or
job URLs.

### What you can extract

When LinkedIn exposes the information publicly, a successful result can include:

- Full name and professional headline
- Location
- Follower and connection counts
- Public profile image
- About section
- Experience and education
- Skills, certifications and languages

The public view varies by profile. A missing field is returned as `null` or an
empty list; it is never guessed or generated.

### Quick start

1. Open the Actor in Apify.
2. Add one or more URLs to **LinkedIn profile URLs**.
3. Run the Actor.
4. Open the default dataset when the run finishes.

Example input:

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

### Input rules

`profileUrls` is required and must be a list of public LinkedIn profile URLs.

Accepted format:

```text
https://www.linkedin.com/in/<public-identifier>/
```

Examples of invalid input:

```text
https://www.linkedin.com/company/example/
https://www.linkedin.com/jobs/view/123/
https://example.com/in/example/
```

Use the canonical profile URL whenever possible. Invalid URLs are kept in the
output with `status: "invalid_url"`, so every submitted input remains
auditable.

### Results

The default dataset contains one item per submitted URL.

Example successful result:

```json
{
  "success": true,
  "status": "success",
  "inputUrl": "https://www.linkedin.com/in/example/",
  "profileUrl": "https://www.linkedin.com/in/example/",
  "publicIdentifier": "example",
  "scrapedAt": "2026-07-10T12:00:00Z",
  "error": null,
  "dataQuality": {
    "level": "extended",
    "publicFields": [
      "fullName",
      "headline",
      "location",
      "followers",
      "profilePictureUrl",
      "experience"
    ],
    "publicFieldCount": 6
  },
  "profile": {
    "fullName": "Example Name",
    "headline": "Example role",
    "location": "City, Country",
    "followers": "1200",
    "followersText": "1,200 followers",
    "connections": "500+",
    "connectionsText": "500+ connections",
    "about": "Public profile summary.",
    "profilePictureUrl": "https://...",
    "experience": [],
    "education": [],
    "skills": [],
    "certifications": [],
    "languages": []
  }
}
```

#### `dataQuality`

`dataQuality` describes the information that was actually available in the
public page:

| Level | Meaning |
| --- | --- |
| `extended` | The basic public fields plus one or more additional sections were extracted. |
| `core` | The public page exposed the basic identity fields only. |
| `limited` | LinkedIn exposed fewer basic fields than usual. |

Use `publicFields` when your workflow needs to filter or score profiles by the
available public information.

### Status values

| Status | Meaning | Recommended action |
| --- | --- | --- |
| `success` | A public profile page was extracted. | Use `profile` and `dataQuality`. |
| `invalid_url` | The submitted URL is not a canonical public profile URL. | Correct the URL and run again. |
| `not_found` | LinkedIn did not find a public profile at that URL. | Check whether the profile moved or was removed. |
| `login_required` | LinkedIn required sign-in for that public view. | Treat as unavailable public data. |
| `blocked` | Temporary public-access block. | Retry the URL later. |
| `rate_limited` | Temporary upstream rate limit. | Retry the URL later. |
| `network_error` | A temporary network or upstream error occurred. | Retry the URL later. |
| `parse_error` | The page did not contain a recognizable public profile. | Retry later; contact support with the run URL if it persists. |

All non-successful items include `profile: null` and an `error` message. They
are not charged as successful profile extractions.

### Language of the output

The Actor requests LinkedIn's public view in English. Standard labels, dates,
follower text and language-proficiency labels are therefore returned in English
when LinkedIn provides the English view.

Free text belongs to the profile owner and is preserved as published. For
example, a headline or About section written in Spanish, German or Japanese is
not translated or altered.

### Pricing

The Actor charges **$0.002 per successfully extracted public profile** ($2 per
1,000 profiles). Invalid URLs, inaccessible public profiles, blocks, rate
limits and parser errors are not charged. Apify shows the exact charge before
and during each run.

One successful output corresponds to one `profile` event. The Actor prevents
automatic per-dataset-item pricing from being used alongside this event, so an
error result is not billed as a profile extraction.

### Good practices

- Submit only public profiles for a lawful, documented purpose.
- Store only the fields your workflow actually needs.
- Keep the dataset run URL so you can audit input, output and status later.
- Retry only `blocked`, `rate_limited` and `network_error` results after some
  time; do not repeatedly submit login-restricted profiles.
- Use `dataQuality.publicFields` instead of assuming every profile exposes the
  same information.

### Responsible use

LinkedIn's [User Agreement](https://www.linkedin.com/legal/user-agreement)
restricts automated access. You are responsible for ensuring that your use
complies with LinkedIn's terms, applicable data-protection laws and any other
requirements that apply to your use case.

Do not use this Actor to access private content, send spam, harass people,
discriminate, or make high-impact automated decisions about individuals.

# Actor input Schema

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

Public LinkedIn profile URLs in the form https://www.linkedin.com/in/username. Duplicates are preserved so every submitted input has a corresponding result.

## Actor input object example

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

# Actor output Schema

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

No description

## `summary` (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("datascraperes/linkedin-public-profile-enricher").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("datascraperes/linkedin-public-profile-enricher").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 datascraperes/linkedin-public-profile-enricher --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "LinkedIn Public Profile Enricher",
        "description": "Turn public LinkedIn profile URLs into structured data: name, headline, location, About, experience, education and more. No login or cookies required. Pay $2 per 1,000 successful profiles; invalid, blocked and failed pages are free.",
        "version": "1.0",
        "x-build-id": "fecQ6H6hEBGpMpSBB"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/datascraperes~linkedin-public-profile-enricher/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-datascraperes-linkedin-public-profile-enricher",
                "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/datascraperes~linkedin-public-profile-enricher/runs": {
            "post": {
                "operationId": "runs-sync-datascraperes-linkedin-public-profile-enricher",
                "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/datascraperes~linkedin-public-profile-enricher/run-sync": {
            "post": {
                "operationId": "run-sync-datascraperes-linkedin-public-profile-enricher",
                "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,
                        "type": "array",
                        "description": "Public LinkedIn profile URLs in the form https://www.linkedin.com/in/username. Duplicates are preserved so every submitted input has a corresponding result.",
                        "items": {
                            "type": "string",
                            "minLength": 1
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
