# Linkedin Profiles Companies Scraper Ppr (`silentflow/linkedin-profiles-companies-scraper-ppr`) Actor

Bulk scrape LinkedIn profiles & companies with pay-per-result pricing. Extract contact info, company details, industry data & more without login (No Cookies 🍪). Search by keywords, names or URLs. Get emails, locations, headcount & specialties. Fast extraction.

- **URL**: https://apify.com/silentflow/linkedin-profiles-companies-scraper-ppr.md
- **Developed by:** [SilentFlow](https://apify.com/silentflow) (community)
- **Categories:** Lead generation, Automation, Jobs
- **Stats:** 128 total users, 3 monthly users, 100.0% runs succeeded, 3 bookmarks
- **User rating**: 1.22 out of 5 stars

## Pricing

from $3.40 / 1,000 results

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/platform/actors/running/actors-in-store#pay-per-event

## 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 Companies & Profiles Bulk Scraper (Pay Per Result)

Companies & Profiles LinkedIn data extraction tool with Pay Per Result pricing. Get comprehensive profiles of individuals and companies based on your keywords and filters. Unleash the power of data! 🌐🔍

**Note: This is the Pay Per Result (PPR) version - you only pay for successful results.**

### 🌟 Features

- 🔍 **Multi Search Option**: Search by keywords, names, or direct URLs
- 📚 **Bulk Research**: Search from lists of names, company names, or keywords
- 🌍 **Global Reach**: Filter by any location worldwide
- 🏢 **Company Enrichment**: Get detailed company info (industry, size, specialties, etc.)
- 👤 **Profile Discovery**: Find professionals by role, company, or expertise
- ⚡ **Fast & Reliable**: Optimized for speed and accuracy

### 💡 Use Cases

- 📊 **Market Analysts**: Analyze industry trends, company landscapes, and role distribution
- 💼 **Business Strategists**: Monitor competitors and identify key industry players
- 🎯 **HR & Recruiters**: Scout talent and understand the competitive landscape
- 👥 **Sales Teams**: Build prospect lists and enrich lead data
- 🔬 **Researchers**: Gather professional network data for studies

### 🚀 How to Use

#### Quick Search Mode (Fast, Basic Data)

```json
{
  "action": "get-profiles",
  "keywords": ["CEO startup", "CTO fintech"],
  "location": ["France"],
  "limit": 10
}
```

#### Detailed Search Mode (Slower, More Data)

```json
{
  "action": "get-profiles",
  "keywords": ["CEO startup"],
  "location": ["France"],
  "limit": 10,
  "fetchDetails": true
}
```

#### URL Mode (Direct Data Extraction)

```json
{
  "action": "get-companies",
  "keywords": ["https://www.linkedin.com/company/google"],
  "isUrl": true,
  "limit": 1
}
```

### ⚙️ Input Parameters

| Parameter | Type | Description | Default |
|-----------|------|-------------|---------|
| `action` | Enum | `get-profiles` or `get-companies` | `get-profiles` |
| `keywords` | Array | Keywords, names, or URLs to search | Required |
| `isUrl` | Boolean | Set `true` if keywords are LinkedIn URLs | `false` |
| `limit` | Integer | Max results per keyword (1-100) | `10` |
| `location` | Array | Location filters (e.g., `["France", "Paris"]`) | `[]` |
| `fetchDetails` | Boolean | Fetch full profile/company details (slower, more data) | `false` |
| `proxy` | Object | Proxy configuration | Apify Residential |

### 📤 Output Format

#### Profile Output

```json
{
  "publicId": "john-doe-123456",
  "firstName": "John",
  "lastName": "Doe",
  "fullName": "John Doe",
  "headline": "Senior Software Engineer at Google",
  "profileUrl": "https://www.linkedin.com/in/john-doe-123456",
  "location": "San Francisco, CA",
  "city": "San Francisco",
  "state": "CA",
  "country": "United States",
  "currentCompany": "Google",
  "currentCompanyUrl": "https://linkedin.com/company/google",
  "email": "john@example.com",
  "isOpenToWork": false,
  "scrapedAt": "2025-11-28T10:30:00Z"
}
```

#### Company Output

```json
{
  "name": "Google",
  "universalName": "google",
  "companyUrl": "https://www.linkedin.com/company/google",
  "website": "https://about.google",
  "description": "A problem isn't truly solved until it's solved for all...",
  "industry": "Software Development",
  "companySize": "10,001+ employees",
  "companyType": "Public Company",
  "headquarters": "Mountain View, CA",
  "city": "Mountain View",
  "state": "CA",
  "country": "United States",
  "founded": "1998",
  "followers": 39755786,
  "specialties": ["search", "ads", "AI", "cloud", "hardware"],
  "scrapedAt": "2025-11-28T10:30:00Z"
}
```

### 📊 Data Availability by Mode

#### Profiles

| Data | Search Mode | Search + fetchDetails | URL Mode |
|------|-------------|----------------------|----------|
| Name | ✅ | ✅ | ✅ |
| Headline | ✅ | ✅ | ✅ |
| Profile URL | ✅ | ✅ | ✅ |
| Profile Picture | ❌ | ✅ | ✅ |
| Current Company | ❌ | ✅ | ✅ |
| Current Position | ❌ | ✅ | ✅ |
| Company URL | ❌ | ✅ | ✅ |
| Location | ❌ | ⚠️ If public | ⚠️ If public |
| Summary | ❌ | ⚠️ If public | ⚠️ If public |
| Email | ❌ | ⚠️ If public | ⚠️ If public |

#### Companies

| Data | Search Mode | Search + fetchDetails | URL Mode |
|------|-------------|----------------------|----------|
| Company Name | ✅ | ✅ | ✅ |
| Company URL | ✅ | ✅ | ✅ |
| Industry | ⚠️ Partial | ✅ | ✅ |
| Description | ⚠️ Partial | ✅ | ✅ |
| Website | ❌ | ✅ | ✅ |
| Company Size | ❌ | ✅ | ✅ |
| Company Type | ❌ | ✅ | ✅ |
| Headquarters | ❌ | ✅ | ✅ |
| Founded | ❌ | ⚠️ Rarely available | ⚠️ Rarely available |
| Specialties | ❌ | ✅ | ✅ |
| Followers | ❌ | ✅ | ✅ |

> ⚠️ **Note**: Data availability depends on profile/company privacy settings and LinkedIn page structure.

### 💡 Tips for Best Results

1. **Use Residential Proxies**: Essential for best results
2. **Start Small**: Test with `limit: 5` before scaling up
3. **Be Specific**: More precise keywords = better results
4. **Use fetchDetails for Rich Data**: Enable `fetchDetails: true` to get profile pictures, company info, and more
5. **URL Mode for Maximum Details**: Use URL mode when you need the most complete data
6. **Balance Speed vs Data**: Quick mode is ~5x faster but returns less data

### 📞 Support

Having issues? Check the Issues tab or contact support.

***

Made by **SilentFlow**

# Actor input Schema

## `action` (type: `string`):

Select an action to perform

## `keywords` (type: `array`):

It can be a single query or a list of names, companies or URLS... ⚠️ For performance reason we limit to 500 keywords, over will be ignored

## `isUrl` (type: `boolean`):

Must be set to true if querying per URL (https://linkedin.com/in/john-doe/) or false if querying per keyword or name (web developer)

## `limit` (type: `integer`):

Max rows to return per query item. (If limit is 5 and keywords contains 2 items, will return 10 rows)

## `fetchDetails` (type: `boolean`):

When enabled, visits each LinkedIn profile page to get full details (headline, summary, company, etc.). Slower but more data. When disabled, only returns basic info from search results (faster).

## `cookies` (type: `array`):

Optional. Paste your LinkedIn browser cookies as a JSON array to unlock complete, reliable personal-profile details (headline, current role, company, location, experience, education, skills). Without cookies the scraper still works using public data. Install Cookie-Editor, log into LinkedIn, Export as JSON, and paste here. Required cookies: li\_at and JSESSIONID.

## `userAgent` (type: `string`):

Optional. The User-Agent of the browser you used to export the cookies. Leave empty for automatic rotation.

## `location` (type: `array`):

Filter by location

## `proxy` (type: `object`):

Select proxies to be used.

## Actor input object example

```json
{
  "action": "get-profiles",
  "keywords": [
    "web dev"
  ],
  "isUrl": false,
  "limit": 10,
  "fetchDetails": false,
  "cookies": [
    {
      "name": "li_at",
      "value": "YOUR_LI_AT_COOKIE_HERE"
    },
    {
      "name": "JSESSIONID",
      "value": "YOUR_JSESSIONID_HERE"
    }
  ],
  "userAgent": "",
  "location": [],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `profiles` (type: `string`):

Complete data including: For profiles - publicId, firstName, lastName, fullName, headline, profileUrl, profilePicture, location, city, state, country, currentCompany, currentCompanyUrl, currentPosition, connections, email, isOpenToWork, summary. For companies - name, universalName, companyUrl, website, description, industry, companySize, companyType, headquarters, specialties, followers, scrapedAt (founded is rarely available on public pages).

## `profilesCSV` (type: `string`):

CSV format export of all profiles and companies for spreadsheet analysis

## `profilesExcel` (type: `string`):

Excel format export of all profiles and companies

# 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 = {
    "cookies": [
        {
            "name": "li_at",
            "value": "YOUR_LI_AT_COOKIE_HERE"
        },
        {
            "name": "JSESSIONID",
            "value": "YOUR_JSESSIONID_HERE"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("silentflow/linkedin-profiles-companies-scraper-ppr").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 = { "cookies": [
        {
            "name": "li_at",
            "value": "YOUR_LI_AT_COOKIE_HERE",
        },
        {
            "name": "JSESSIONID",
            "value": "YOUR_JSESSIONID_HERE",
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("silentflow/linkedin-profiles-companies-scraper-ppr").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 '{
  "cookies": [
    {
      "name": "li_at",
      "value": "YOUR_LI_AT_COOKIE_HERE"
    },
    {
      "name": "JSESSIONID",
      "value": "YOUR_JSESSIONID_HERE"
    }
  ]
}' |
apify call silentflow/linkedin-profiles-companies-scraper-ppr --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

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