# LinkedIn Profile Search – Leads & Recruiting (No Login) (`codetr/linkedin-public-search-lead-extractor`) Actor

Find public LinkedIn profile leads from keywords, titles, companies, schools, and locations. Returns normalized lead data without LinkedIn cookies or login.

- **URL**: https://apify.com/codetr/linkedin-public-search-lead-extractor.md
- **Developed by:** [Yusuf Barış](https://apify.com/codetr) (community)
- **Categories:** Automation, Jobs
- **Stats:** 2,042 total users, 228 monthly users, 100.0% runs succeeded, 11 bookmarks
- **User rating**: 3.82 out of 5 stars

## Pricing

from $0.55 / 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/actors/running/actors-in-store.md#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

### What is LinkedIn Profile Search Scraper?

[LinkedIn Profile Search Scraper](https://apify.com/fabri-lab/linkedin-public-search-lead-extractor) finds **public LinkedIn people and company pages** from a keyword, job title, company, school, or location — **without LinkedIn cookies or login**.

Use it as a LinkedIn people-search API for **lead generation, recruiting, and sales prospecting**. You get profile URLs, names, headlines, location and company hints, then download **JSON, CSV, or Excel**, run it on a schedule, or call it from the **Apify API**.

It does **not** log into LinkedIn, open private profile pages, or find emails.

#### What data can I extract?

| Field | Description |
|---|---|
| Profile / company URL | Normalized LinkedIn `/in/` or `/company/` URL |
| Full name | Name from the public result |
| Headline | Public headline or title |
| Job title & company | Best-effort current role from the snippet |
| Location | City, region, or country text |
| About / summaries | Public summary, experience, and education hints |
| Search query & rank | Which query found the row, and in what order |

You can download the dataset as JSON, CSV, Excel, XML, HTML, or consume it via API.

### How to use LinkedIn Profile Search Scraper

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open [LinkedIn Profile Search Scraper](https://apify.com/fabri-lab/linkedin-public-search-lead-extractor).
3. Enter a search query, or filters such as job title and location. Filters work on their own — you do not need both.
4. Set `maxItems` and click **Start**.
5. Download results from the Dataset tab.

Typical uses: recruiter longlists, founder and executive lists, CRM enrichment with public profile URLs, alumni or employee mapping, and market research on professional audiences.

### How much will it cost?

This Actor uses [pay-per-event](https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event) pricing. You pay a small **Actor start** fee plus **one event per saved profile or company**. Empty searches are not billed as results. Current rates are on the [Pricing](https://apify.com/fabri-lab/linkedin-public-search-lead-extractor/pricing) tab.

**Free Apify plan:** you can export at most **5 results per calendar day**. This Actor has a special daily limit for free plan users. This was set by the Actor developer, not Apify. Upgrade to continue. When the limit is reached, the run log shows **Free daily limit reached**.

**Paid plans (Starter and above):** no daily cap. Set `maxItems` up to **200** per run and pay per saved result.

### Input

See the **Input** tab for the full form. Give the Actor at least one of: a search query, a filter (job title, location, company, school), or LinkedIn profile URLs.

| Field | Required | Description |
|---|---|---|
| `searchQuery` | Yes\* | Keyword search, for example `Founder`, `Marketing Manager`, or `John Doe`. |
| `searchQueries` | No | Extra keyword searches in the same run. |
| `currentJobTitles` | No | Current titles to include. |
| `pastJobTitles` | No | Past titles to include. |
| `locations` | No | Cities, regions, or countries. |
| `currentCompanyUrls` | No | Company URLs, slugs, or names. |
| `pastCompanyUrls` | No | Past companies. |
| `schoolUrls` | No | School URLs, slugs, or names. |
| `profileUrls` | No | Direct LinkedIn `/in/` URLs. |
| `profileUrlsText` | No | Pasted URL list. |
| `profileUrlsFile` | No | TXT/CSV upload of `/in/` URLs. |
| `maxItems` | No | Unique results to return, `1`–`200`. Default `25`. Free plan: 5 per day. |

`currentJobTitles: ["CEO"]` with `locations: ["Netherlands"]` is a complete search. You do not also need `searchQuery`.

#### Example input

```json
{
  "searchQuery": "machine learning engineer",
  "currentJobTitles": ["Founder", "Chief Executive Officer"],
  "locations": ["Istanbul", "London"],
  "maxItems": 25
}
```

Filters alone:

```json
{
  "currentJobTitles": ["CEO", "Chief Executive Officer", "Founder"],
  "locations": ["Netherlands"],
  "maxItems": 25
}
```

### Output

Results are stored in the default Apify Dataset. Each item is one public LinkedIn profile or company. Empty searches are logged only and are **not** saved as billable rows.

You can download the dataset in JSON, CSV, Excel, XML, RSS, or HTML.

#### Example output

```json
{
  "resultType": "profile",
  "linkedinUrl": "https://www.linkedin.com/in/jane-doe/",
  "profileUrl": "https://www.linkedin.com/in/jane-doe/",
  "fullName": "Jane Doe",
  "firstName": "Jane",
  "lastName": "Doe",
  "headline": "Machine Learning Engineer",
  "jobTitle": "Machine Learning Engineer",
  "company": "Example AI",
  "locationText": "London, England, United Kingdom",
  "searchQuery": "machine learning engineer",
  "status": "search_result"
}
```

### This Actor is an alternative to

This Actor is a simpler, lower-cost way to find **public LinkedIn people** from keywords, titles, companies, schools, and locations — **no LinkedIn login or cookies**. It returns discovery rows (URL, name, headline, location and company hints), not full private profiles or emails.

It is an alternative to these LinkedIn people-search Actors:

- [LinkedIn Profile Search Scraper No Cookies](https://apify.com/harvestapi/linkedin-profile-search)
- [LinkedIn Profile Search By Name](https://apify.com/harvestapi/linkedin-profile-search-by-name)
- [LinkedIn Profile Search By Services](https://apify.com/harvestapi/linkedin-profile-search-by-services)
- [Profile Search Scraper for LinkedIn](https://apify.com/apimaestro/linkedin-profile-search-scraper)
- [LinkedIn People Search Scraper](https://apify.com/memo23/linkedin-people-search)
- [LinkedIn People Search — Company, Title, Industry](https://apify.com/neuralverge/neuralverge-linkedin-people-search)
- [LinkedIn People Search Scraper (PowerAI)](https://apify.com/powerai/linkedin-peoples-search-scraper)

If you already have profile URLs and need **full work history or email**, use a dedicated profile Actor instead:

- [LinkedIn Profile Scraper + Email](https://apify.com/harvestapi/linkedin-profile-scraper)
- [Profile Details Scraper for LinkedIn](https://apify.com/apimaestro/linkedin-profile-detail)
- [Mass LinkedIn Profile Scraper with Email](https://apify.com/dev_fusion/Linkedin-Profile-Scraper)
- [LinkedIn Profile Scraper (supreme\_coder)](https://apify.com/supreme_coder/linkedin-profile-scraper)

To list **employees of one company**, see [LinkedIn Company Employees Scraper](https://apify.com/harvestapi/linkedin-company-employees).

### Frequently asked questions

#### Why are some fields empty?

Public search snippets do not always include every field. This Actor does not log into LinkedIn or open private profile pages.

#### Does this Actor require LinkedIn cookies?

No. It does not use LinkedIn cookies, login sessions, or private LinkedIn APIs.

#### Can I provide direct profile URLs?

Yes. Use `profileUrls`, paste a list into `profileUrlsText`, or upload `profileUrlsFile`. You can combine URLs with a search.

#### Are empty searches billed?

No. If no profiles or companies are found, the run logs a warning and does not write a paid dataset row.

#### How do I get more results?

On a **free Apify plan**, this Actor exports at most 5 results per day. This was set by the Actor developer, not Apify. Upgrade to a paying plan to continue.

On a paying plan, raise `maxItems` up to 200. For more than 200 people, run again with a different query or filter. If a run returns fewer results than you asked for, that search has no more public matches — broaden the query or drop a filter.

#### What happens when the free daily limit is reached?

The run finishes successfully and the log shows an error: **Free daily limit reached**. Upgrade to a paid Apify plan, or wait until the next UTC calendar day.

#### Can I export results to Excel?

Yes. Apify datasets export as Excel, CSV, JSON, XML, RSS, HTML, or via API.

#### Can I use this Actor with the Apify API?

Yes. Start runs and read the dataset with the [Apify API](https://docs.apify.com/api/v2). There are official [JavaScript](https://docs.apify.com/api/client/js) and [Python](https://docs.apify.com/api/client/python) clients.

#### Can I use this Actor through an MCP server?

Yes. Connect tools such as Claude Desktop or Cursor to the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) and call this Actor from there.

#### Can I use integrations?

Yes. Schedule runs, send results with webhooks, or connect to Make, Zapier, n8n, Google Sheets, and other [Apify integrations](https://apify.com/integrations).

#### Is it legal to scrape public LinkedIn data?

This Actor is independent and is not affiliated with, endorsed by, or sponsored by LinkedIn. It only collects information that is publicly available. Personal data is protected by the GDPR in the EU and by other laws. You should not scrape personal data unless you have a legitimate reason. If you are unsure, consult your lawyers.

#### Your feedback

Questions, feature requests, or bugs: open an issue on the Actor's **Issues** tab.

# Actor input Schema

## `searchQuery` (type: `string`):

Main search query, for example Founder, Marketing Manager, or John Doe.

## `searchQueries` (type: `array`):

Run multiple keyword searches in one Actor run. Each query is combined with the same filters.

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

Optional legacy alias for an extra search query.

## `currentJobTitles` (type: `array`):

Current job titles to include in the profile search.

## `pastJobTitles` (type: `array`):

Past job titles to include in the profile search.

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

Cities, regions, or countries to include in the profile search.

## `currentCompanyUrls` (type: `array`):

LinkedIn company URLs or company names to include in the profile search.

## `pastCompanyUrls` (type: `array`):

Past LinkedIn company URLs or company names to include in the profile search.

## `schoolUrls` (type: `array`):

LinkedIn school URLs or school names to include in the profile search.

## `industryIds` (type: `array`):

LinkedIn industry IDs accepted for compatibility.

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

Optional direct LinkedIn /in/ profile URLs.

## `profileUrlsText` (type: `string`):

Paste LinkedIn /in/ URLs, one per line or comma-separated. CSV cells with profile URLs are also supported.

## `profileUrlsFile` (type: `string`):

Upload a TXT or CSV file with LinkedIn /in/ profile URLs.

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

How many unique profile or company results to return, up to 200. Free Apify plan users are limited to 5 results per day. This was set by the Actor developer, not Apify. Paying plans can take the full amount.

## Actor input object example

```json
{
  "searchQuery": "software engineer",
  "profileUrls": [
    "https://www.linkedin.com/in/williamhgates/"
  ],
  "maxItems": 10
}
```

# Actor output Schema

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

LinkedIn profile and company discovery rows stored in the default dataset.

# 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 = {
    "searchQuery": "software engineer",
    "profileUrls": [
        "https://www.linkedin.com/in/williamhgates/"
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("codetr/linkedin-public-search-lead-extractor").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 = {
    "searchQuery": "software engineer",
    "profileUrls": ["https://www.linkedin.com/in/williamhgates/"],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("codetr/linkedin-public-search-lead-extractor").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 '{
  "searchQuery": "software engineer",
  "profileUrls": [
    "https://www.linkedin.com/in/williamhgates/"
  ],
  "maxItems": 10
}' |
apify call codetr/linkedin-public-search-lead-extractor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,codetr/linkedin-public-search-lead-extractor"
        }
    }
}
```

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/ndgVToRf9tLxSoUIC/builds/hJZbBQOmrIx1lf7Uq/openapi.json
