# LinkedIn People Search Scraper — No Cookies (`toolzerhub/linkedin-people-search-scraper`) Actor

Search LinkedIn people without providing LinkedIn cookies. Find profiles by name, title, company, school, location, industry, and other filters, then paginate structured results.

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

## Pricing

from $2.80 / 1,000 profile 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/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 — No Cookies

Find people on LinkedIn by name, job title, company, school, industry, or location. No login, no cookie, no browser session — and no LinkedIn Sales Navigator seat.

Every row carries a `urn` and a `public_identifier`, so search results feed straight into the profile, posts, and reactions Actors.

### Input

Every field is optional — combine whichever you have.

| Field | Type | What it does |
|---|---|---|
| `name` | string | Full name to search for. |
| `first_name` | string | First name. |
| `last_name` | string | Last name. |
| `title` | string | Job title. |
| `company` | string | Company associated with the person. |
| `current_company` | string | Only people currently working there. |
| `school` | string | School attended. |
| `geocode_location` | string | Place name to search in. |
| `industry` | string | Industry. |
| `profile_language` | string | Profile language. |
| `service_category` | string | Service category they offer. |
| `maxItems` | integer | Caps how many people are saved. `0` means no limit. Default `100`. |

```json
{
  "title": "Head of Growth",
  "current_company": "Stripe",
  "geocode_location": "London",
  "maxItems": 100
}
```

### Output

One row per person.

| Field | What it holds |
|---|---|
| `id` | LinkedIn member ID |
| `urn` | Profile URN — the input for the posts and reactions Actors |
| `public_identifier` | Username, e.g. `williamhgates` |
| `full_name` | Their name |
| `headline` | Their headline |
| `page` | Which result page the row came from |
| `data` | Everything else on the search record |

```json
{
  "id": "251749025",
  "urn": "ACoAAA8BYqUBCGLg6-1234abcd",
  "public_identifier": "satyanadella",
  "full_name": "Satya Nadella",
  "headline": "Chairman and CEO at Microsoft",
  "page": 1
}
```

These are search-result rows — name, headline, identifiers. For experience, education, and the rest, take `public_identifier` into [LinkedIn Profile Scraper](https://apify.com/toolzerhub/linkedin-profile-scraper).

### Questions

**`company` or `current_company` — what's the difference?**
`current_company` means they work there now. `company` matches the company anywhere on the profile, so it also returns people who used to work there. For prospecting into a live account use `current_company`; for finding alumni of a company use `company`.

**Do I get email addresses?**
No. Public LinkedIn profiles don't publish them, and nothing here infers or looks them up elsewhere. Tools that promise LinkedIn emails are matching your results against a separate contact database — a different product from reading the page.

**Is this a Sales Navigator replacement?**
It covers the filters most people actually use — title, company, location, industry, school — without a seat or a login. It does not reproduce Sales Navigator's account-based lead lists, saved-search alerts, or CRM sync. If you need the filters and the export, this does it; if you need the workflow, it doesn't.

**Why did I get fewer people than `maxItems`?**
Either the filter combination is narrow, or LinkedIn stopped serving pages. Search results are a bounded set rather than every matching member, so a broad query won't return the millions of people who technically match.

**Can I search with no filters at all?**
Every field is optional, but a search with nothing set has nothing to match on and won't return anything useful. Set at least one of `name`, `title`, `current_company`, or `industry`.

**Do I need a LinkedIn account or cookie?**
No. Nothing logs in and no `li_at` is passed, so no account of yours is at risk.

**What do I do with the `urn`?**
It's the key to that person's activity. [Profile Posts](https://apify.com/toolzerhub/linkedin-profile-posts-scraper) and [Profile Reactions](https://apify.com/toolzerhub/linkedin-profile-reactions-scraper) both take it, and it can't be derived from a username — so keep it when you export.

### Other LinkedIn Actors

| Actor | Use when |
|---|---|
| [LinkedIn Profile Scraper](https://apify.com/toolzerhub/linkedin-profile-scraper) | You want full detail on these people |
| [LinkedIn Company Employees](https://apify.com/toolzerhub/linkedin-company-employees-scraper) | You want everyone at one company |
| [LinkedIn Profile Posts](https://apify.com/toolzerhub/linkedin-profile-posts-scraper) | You want what they post (needs `urn`) |
| [LinkedIn Post Search](https://apify.com/toolzerhub/linkedin-post-search-scraper) | You want posts rather than people |

### Support

Questions, bugs, or feature requests: **contact@toolzerhub.com**

Browse the rest: [apify.com/toolzerhub](https://apify.com/toolzerhub)

# Actor input Schema

## `name` (type: `string`):

Full name to search for.

## `first_name` (type: `string`):

First name to search for.

## `last_name` (type: `string`):

Last name to search for.

## `title` (type: `string`):

Job title to search for.

## `company` (type: `string`):

A LinkedIn company handle, name, or /company/ URL.

## `school` (type: `string`):

School name to search for.

## `geocode_location` (type: `string`):

A place name to search people in.

## `current_company` (type: `string`):

Only return people currently working at this company.

## `profile_language` (type: `string`):

Only return profiles written in this language.

## `industry` (type: `string`):

Only return people in this industry.

## `service_category` (type: `string`):

Only return people offering this service category.

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

Maximum number of results to save. Set 0 for unlimited.

## Actor input object example

```json
{
  "name": "Oprah Winfrey",
  "company": "apple",
  "maxItems": 20
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all scraped data

# 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 = {
    "name": "Oprah Winfrey",
    "company": "apple",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("toolzerhub/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 = {
    "name": "Oprah Winfrey",
    "company": "apple",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("toolzerhub/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 '{
  "name": "Oprah Winfrey",
  "company": "apple",
  "maxItems": 20
}' |
apify call toolzerhub/linkedin-people-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,toolzerhub/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/MKdM4QfUHNUsewASn/builds/R2A4qffxCSDSVWBuc/openapi.json
