# LinkedIn People Search Scraper (`piotrv1001/linkedin-people-search-scraper`) Actor

The LinkedIn People Search Scraper finds LinkedIn profiles by job title, company and location without login, returning name, current title, company, location, followers, profile URL and a match-confidence score — ideal for prospect lists, recruiting and account mapping.

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

## Pricing

from $5.00 / 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.

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 People Search Scraper

Find LinkedIn profiles by **job title, company and location** — no LinkedIn account, cookies or login. The **LinkedIn People Search Scraper** turns a list of roles ("Head of Marketing", "CTO") and places ("London", "Berlin") into a clean list of people with their name, current title, company, location, country and profile URL. Use it to build prospect lists, source candidates or map who holds a role at the companies you care about.

### ✨ Features

- 🎯 **Search by title, company and location**: every title is combined with every company and location you enter, so one run covers a whole target list.
- 👤 **Ready-to-use profile rows**: name, current title, company, location, country, a short profile snippet and the canonical `linkedin.com/in/…` URL.
- ✅ **Match confidence on every row**: `high` when the profile itself confirms the title, company and location you asked for; `medium` when nothing contradicts your search but part of it is not shown publicly.
- 🧹 **No off-target rows**: profiles whose own location, company or title contradicts your search (a "Berlin" surname in New Zealand, a different employer) are left out — you do not pay for them.
- 🔁 **No duplicates**: each profile is returned once per run, even when it matches several of your searches.
- 🔓 **No login**: works from publicly indexed profile information only.

### 🛠️ How It Works

1. **Enter job titles** – e.g. `Head of Marketing`, `CTO`. Add companies and locations to narrow the search (both optional).
2. **Optionally add keywords** – words every profile should mention, e.g. `fintech`.
3. **Set Max profiles** and run – profiles appear in the dataset page by page; export to JSON, CSV or Excel.

#### Input

| Field | Description |
|---|---|
| `titles` | Job titles to find. Abbreviations and long forms match each other (CTO ↔ Chief Technology Officer). |
| `companies` | Optional company names. |
| `locations` | Optional cities, regions or countries. |
| `keywords` | Optional extra words, e.g. an industry. |
| `country` | Country the search runs from (`gb`, `de`, `co.uk`, …). Leave `com` for worldwide. |
| `maxItems` | Maximum number of unique profiles (default 50). |

### 📊 Sample Output Data

```json
[
    {
        "profileUrl": "https://www.linkedin.com/in/kayla-kluver-b4b62648",
        "name": "Kayla Kluver",
        "headline": "Head of Marketing",
        "title": "Head of Marketing",
        "company": "Curaleaf Clinic",
        "location": "London",
        "country": "GB",
        "followers": null,
        "snippet": "Head of Marketing · Experience: Curaleaf Clinic · Education: University of Minnesota-Twin Cities · Location: London · 438 connections on LinkedIn. View Kayla Kluver’s profile on LinkedIn, a professional community of 1 billion members.",
        "search": "Head of Marketing · London",
        "confidence": "high",
        "scrapedAt": "2026-09-29T15:08:27.000Z"
    },
    {
        "profileUrl": "https://www.linkedin.com/in/nicolagreen123",
        "name": "Nicola Green",
        "headline": "Head of Marketing at ITM | Institute of Travel",
        "title": "Head of Marketing",
        "company": "ITM | Institute of Travel Management",
        "location": "London",
        "country": "GB",
        "followers": null,
        "snippet": "Head of Marketing at ITM | Institute of Travel Management · Experience: ITM | Institute of Travel Management · Location: London · 331 connections on LinkedIn. View Nicola Green’s profile on LinkedIn, a professional community of 1 billion members.",
        "search": "Head of Marketing · London",
        "confidence": "high",
        "scrapedAt": "2026-09-29T15:08:39.000Z"
    }
]
```

### 💰 Pricing

Pay per result: **$0.005 per profile** returned (plus a tiny run start fee). Profiles that contradict your search are never returned or charged. Set a maximum cost per run in the run options and the scraper stops when it is reached.

### ℹ️ Good to know

- Results come from publicly indexed LinkedIn profiles. A title × location search typically yields a few hundred people (tested: 150 of 150 for "Head of Marketing" in London); very narrow searches can run out earlier, and the status message tells you when that happens before `maxItems`.
- For location searches, profiles LinkedIn lists under a different country are left out; profiles with no public country are kept.
- `followers` is only filled when the public snippet shows it.
- Some profiles do not show a location or company publicly; those rows are marked `medium` confidence.
- Emails and phone numbers are not included.

### 🔗 More LinkedIn Actors

- [LinkedIn Decision Maker Finder](https://apify.com/piotrv1001/linkedin-decision-maker-finder) — start from specific companies (names or LinkedIn company URLs): their decision makers, capped per company, with each company's LinkedIn page resolved; also callable from AI agents.
- [LinkedIn Company Scraper](https://apify.com/piotrv1001/linkedin-company-scraper) — company profiles — headcount, industry, specialties, open roles.
- [LinkedIn Company Jobs Scraper](https://apify.com/piotrv1001/linkedin-company-jobs-scraper) — every open role at named companies.
- [LinkedIn Jobs Search Scraper](https://apify.com/piotrv1001/linkedin-jobs-search-scraper) — job search results past LinkedIn’s 1,000-result cap.
- [LinkedIn Job Details Scraper](https://apify.com/piotrv1001/linkedin-job-details-scraper) — full job postings with parsed salary, seniority and applicant counts.
- [LinkedIn Jobs Monitor](https://apify.com/piotrv1001/linkedin-jobs-monitor) — only what changed since the last check — roles opened and closed.
- [LinkedIn Video Transcript Scraper](https://apify.com/piotrv1001/linkedin-video-transcript-scraper) — AI transcripts of the videos in LinkedIn posts, with author and engagement data.

Build targeted people lists with the **LinkedIn People Search Scraper** today! 🚀

# Actor input Schema

## `titles` (type: `array`):

Job titles to search for, e.g. "Head of Marketing" or "CTO". Each title is combined with every company and location below.

## `companies` (type: `array`):

Optional company names. Leave empty to search across all companies.

## `locations` (type: `array`):

Optional cities, regions or countries, e.g. "London" or "Germany".

## `keywords` (type: `string`):

Optional words every profile should mention, e.g. "SaaS" or "fintech".

## `country` (type: `string`):

Country the search runs from, as a country code ("gb", "de") or domain ending ("co.uk", "com.au"). Leave "com" for worldwide.

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

Maximum number of unique profiles to return.

## Actor input object example

```json
{
  "titles": [
    "Head of Marketing",
    "Marketing Director"
  ],
  "locations": [
    "London"
  ],
  "country": "com",
  "maxItems": 50
}
```

# Actor output Schema

## `overview` (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 = {
    "titles": [
        "Head of Marketing",
        "Marketing Director"
    ],
    "locations": [
        "London"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("piotrv1001/linkedin-people-search-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 = {
    "titles": [
        "Head of Marketing",
        "Marketing Director",
    ],
    "locations": ["London"],
}

# Run the Actor and wait for it to finish
run = client.actor("piotrv1001/linkedin-people-search-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 '{
  "titles": [
    "Head of Marketing",
    "Marketing Director"
  ],
  "locations": [
    "London"
  ]
}' |
apify call piotrv1001/linkedin-people-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,piotrv1001/linkedin-people-search-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/8Em71yIfNgYSxZe1w/builds/aTlpsmlk9q4SJbxOP/openapi.json
