# LinkedIn People Search: Name, Title, Company, No Login (`themineworks/linkedin-people-search`) Actor

Find people on LinkedIn by name, job title, company and location with no login or cookies. One row per person: profile URL, headline, current title and company, location, connections, plus followers, photo, school and recent posts from the public profile. Profile URLs work too.

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

## Pricing

from $2.80 / 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.
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: Name, Title, Company, No Login

[![10 Stripe marketing leaders with headline, title, company and followers in 35 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/linkedin-people-search-hero.png)](https://console.apify.com/actors/3CobOty7lYugn5F7B/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), with over 245,000 runs across 280+ public actors.

Updated 27 Oct 2026: first release. Search LinkedIn people by any mix of name, job title, company, location and keywords, run up to 100 searches in one go, or look up profile links you already have. One flat row per person, with the public profile page read too when LinkedIn shows it. Bookmark this Actor on its Store page so it is one click away next time.

### Why choose this actor?

- **Built for one call per person.** A name plus a company returns that person's profile link, headline, current title, employer and location in about 10 seconds, 256 MB, no start up work. That is the shape Clay tables, n8n flows and AI agents call thousands of times a day. Batches of up to 100 searches work too.
- **The right person, not a lookalike.** Search engines fill a page with near matches. With `strictMatch` on (the default) a row is kept only when the name holds every word you searched and, for a company search, LinkedIn's own line says that company is the current employer. People who used to work there ("ex Stripe") or only mention it are left out, and are never charged.
- **No LinkedIn account, no cookies, no ban risk.** Nothing logs in. The actor reads the search engine's public results and the public profile page that LinkedIn shows to anyone who is not signed in.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/3CobOty7lYugn5F7B/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works LinkedIn family:** [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [LinkedIn Email Finder](https://apify.com/themineworks/linkedin-email-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [LinkedIn Newsletter Scraper](https://apify.com/themineworks/linkedin-newsletter-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### Try it in one minute

Paste this into the input (JSON view) and press Start. It returns 10 people who head marketing at Stripe, with their public profile pages read. It took 35 seconds in our latest test run:

```json
{
  "jobTitle": "head of marketing",
  "company": "Stripe",
  "maxResultsPerSearch": 10
}
```

To find one person, give the name and the company: `{"name": "Stephen Wu", "company": "Notion", "maxResultsPerSearch": 1}` took 9 seconds in our test (12 seconds for Patrick Collison at Stripe).

Apify's free plan includes $5 of credit every month, which covers about 1,200 people at this actor's price.

#### Copy to your AI assistant

```text
themineworks/linkedin-people-search on Apify. Finds people on LinkedIn by name, job title, company, location and keywords, or looks up LinkedIn profile links, with no login, and returns one flat row per person. Call ApifyClient("TOKEN").actor("themineworks/linkedin-people-search").call(run_input={"name": "Stephen Wu", "company": "Notion", "maxResultsPerSearch": 1}), then client.dataset(run["defaultDatasetId"]).list_items().items. Input: any of name, jobTitle, company, location, keywords (one search); searches (list of objects with those keys, up to 100); profileUrls (list of linkedin.com/in links, up to 1000). Optional: maxResultsPerSearch (default 10, 1 to 100), enrichProfiles (default true; reads the public profile page), strictMatch (default true; drops other names and other current employers), fillFromGoogle (default true; for profileUrls, fills headline and title). The dataset holds person rows only, each with profile_url, public_identifier, name, first_name, last_name, headline, headline_truncated, job_title, company, company_linkedin_url, location, country_code, education, connections, connections_count, followers, photo_url, about, about_truncated, languages, current_positions, past_positions, past_positions_total, schools, recent_posts, last_post_at, snippet, profile_page (read, not_public, failed, skipped), source (search or profile_url), match (name, company, job_title, location as true or false), search, search_index, search_query, position, page, scraped_at. Empty dataset = nobody matched. The run summary and every input that could not be read are in the key-value store record OUTPUT. Full spec: GET https://api.apify.com/v2/acts/themineworks~linkedin-people-search/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
```

### Key features

- **Search by any mix of fields.** `name`, `jobTitle`, `company`, `location` and `keywords` are combined into one search. Use one, two or all five: a name alone, a title at a company, a title in a city, a skill plus a school.
- **Company as a name, a website or a LinkedIn link.** `Stripe`, `stripe.com` and `https://www.linkedin.com/company/stripe` all mean Stripe. Legal suffixes such as Inc. and GmbH are dropped before searching.
- **Search fields on every row.** Profile link, headline, current job title, current employer, location, top school and connections come from the search result itself, so a row has them whether or not LinkedIn shows the profile page (the stable fields list below says how often each one is filled).
- **Profile page fields when LinkedIn shows the page.** With `enrichProfiles` on (the default) the actor reads each person's public profile page and adds the exact follower count, the employer's LinkedIn page, the photo, schools with years, languages, the start of the About text, and up to 4 recent posts with dates and likes. In our tests LinkedIn showed this page for 38 of 50 Datadog engineers, 7 of 10 Stripe marketers, 0 of 10 people named Priya Sharma at Infosys, and 58 of 86 people across all test runs; `profile_page` says `read` or `not_public` on every row.
- **Profile links in, rows out.** `profileUrls` takes links from any country site (ie.linkedin.com, de.linkedin.com) or just the part after /in/. A profile LinkedIn does not show is still filled from the search engine's entry for that exact profile.
- **Stops cleanly and never bills a miss.** A search ends when a page brings nobody new or the results run out; the run stops searching if the search engine stops answering, and keeps every row it found. Duplicates across searches are delivered once.

### How to use it

#### Find one person (enrichment step in Clay, n8n or Make)

```json
{
  "name": "Patrick Collison",
  "company": "Stripe",
  "maxResultsPerSearch": 1
}
```

One row, or an empty dataset when nobody matched. Map `profile_url`, `headline`, `job_title` and `location` back into your table. In Clay, use an HTTP API column that starts this actor with the row's name and company and reads the dataset items; in n8n, the Apify node's "Run actor and get dataset" does the same.

#### Build a prospect list: a title at a company

```json
{
  "jobTitle": "account executive",
  "company": "HubSpot",
  "location": "Dublin",
  "maxResultsPerSearch": 50
}
```

Up to 50 people, 10 per results page. Rows whose current employer is not HubSpot are dropped. `match.location` says whether the location you asked for appears on the profile.

#### Many searches in one run

```json
{
  "searches": [
    { "name": "Patrick Collison", "company": "Stripe" },
    { "jobTitle": "CFO", "company": "Notion" },
    { "jobTitle": "recruiter", "company": "Canva", "location": "Sydney" },
    "python developer Berlin"
  ],
  "maxResultsPerSearch": 10
}
```

Each item is its own search, numbered in `search_index` and echoed in `search`. A plain string is used as keywords.

#### Look up profile links you already have

```json
{
  "profileUrls": [
    "https://www.linkedin.com/in/satyanadella",
    "https://ie.linkedin.com/in/shane-nolan-48743b58",
    "wustep"
  ]
}
```

One row per profile that exists. LinkedIn hides job titles on most public pages, so with `fillFromGoogle` on (the default) the headline and title come from the search engine's entry for that profile. A link to a profile that does not exist gets no row and no charge, and is listed in the OUTPUT record.

#### See everything the search engine found

```json
{
  "jobTitle": "nurse practitioner",
  "location": "Houston",
  "maxResultsPerSearch": 30,
  "strictMatch": false,
  "enrichProfiles": false
}
```

No rows are dropped, and the run is faster without the profile pages. Each row's `match` object still says which of your fields matched.

### Input parameters

| Parameter | Type | Default | What it does |
|---|---|---|---|
| `name` | string | empty | Full name of the person to find. |
| `jobTitle` | string | empty | Job title or role, for example `head of marketing`. |
| `company` | string | empty | Current employer: a name, a website or a LinkedIn company link. |
| `location` | string | empty | City, region or country. |
| `keywords` | string | empty | Any other words, for example a skill or a school. |
| `searches` | array | empty | Many searches, each an object with the five fields above, or a string of keywords. Up to 100. |
| `profileUrls` | array of strings | empty | LinkedIn profile links to look up directly. Up to 1,000. |
| `maxResultsPerSearch` | integer | `10` | Most people per search, 1 to 100. |
| `enrichProfiles` | boolean | `true` | Reads each person's public profile page for followers, photo, schools, languages, About and posts. |
| `strictMatch` | boolean | `true` | Drops results with another name or another current employer. |
| `fillFromGoogle` | boolean | `true` | For `profileUrls`: fills headline, title, company and location from the search engine's entry for the profile. |

Give at least one search field, `searches`, `profileUrls`, or any mix.

### What data do you get?

One row per person in the default dataset, nothing else, so a pipeline can map the dataset as is.

| Field | What it is |
|---|---|
| `profile_url`, `public_identifier` | `https://www.linkedin.com/in/<id>` and the id itself, the key to store and join on |
| `name`, `first_name`, `last_name` | Name as LinkedIn shows it, and split |
| `headline`, `headline_truncated` | Profile headline, and whether the search engine cut it short |
| `job_title`, `company` | Current job title and current employer |
| `company_linkedin_url` | The employer's LinkedIn page (profile page) |
| `location`, `country_code` | e.g. `San Francisco, California, United States`, `US` |
| `education`, `schools` | Top school; all schools shown, with LinkedIn link and years (profile page) |
| `connections`, `connections_count` | e.g. `500+` and `500` |
| `followers` | Exact follower count (profile page) |
| `photo_url`, `about`, `about_truncated`, `languages` | Photo, start of the About text, languages (profile page) |
| `current_positions`, `past_positions`, `past_positions_total` | Employers LinkedIn shows logged out, and how many past positions the profile has (profile page) |
| `recent_posts`, `last_post_at` | Up to 4 recent posts with link, date, likes and text, and the newest date (profile page) |
| `snippet` | The search engine's text for the profile |
| `profile_page` | `read`, `not_public`, `failed` or `skipped` |
| `source` | `search` or `profile_url` |
| `match` | Which of your fields matched: `name`, `company`, `job_title`, `location` |
| `search`, `search_index`, `search_query`, `position`, `page` | The search that found the person, its number in your input, the query sent, the rank and the results page |
| `scraped_at` | When the row was written |

**OUTPUT record** (key-value store, never charged): `searches_requested`, `searches_read`, `searches_without_match`, `profiles_delivered`, `charged_for`, `rejected_name_mismatch`, `rejected_company_mismatch`, `duplicates_skipped`, `profile_pages_read`, `profile_pages_not_public`, `google_pages_billed`, `stopped_by_max_cost`, `shortfall_reason` when fewer people came back than asked, `per_search` with `query`, `results`, `matched`, `delivered` and why each search `stopped`, and `errors`, one entry per input that could not be read (`invalid_url`, `invalid_search`, `not_public`, `not_found`, `google_error`).

#### What LinkedIn shows without login

LinkedIn hides part of every profile from visitors who are not signed in. On the public page of most members the job titles, past employers and descriptions are replaced by asterisks; the name, current employer, location, top school, follower count, photo, languages and recent posts stay visible. Public figures keep everything. Some members show no public page at all (`profile_page: "not_public"`); their rows still carry the search fields. This actor never returns masked text as data. Full work history with dates, skills and emails are not public and are not in the output.

#### Stable fields for automations

These were present in every row of our test runs (86 people from 6 runs), and their names will not change:

| Field | What it is |
|---|---|
| `profile_url` | Profile link |
| `public_identifier` | The key to store and join on |
| `name`, `first_name`, `last_name` | Name, and split |
| `headline` | Profile headline |
| `profile_page` | Whether the public page was read |
| `source` | search or profile_url |
| `scraped_at` | When the row was written |

Present when there is a value: `company` (82 of 86 rows; missing when neither LinkedIn's line nor the headline names an employer), `location` (80 of 86), `job_title` (71 of 86; missing when LinkedIn's line has only a place and an employer), `connections` (66 of 86), and every profile page field, which needs `profile_page: "read"` (58 of 86).

#### Output examples

One person from the "head of marketing" at Stripe search, profile page read (test run, 27 Oct 2026, trimmed):

```json
{
  "profile_url": "https://www.linkedin.com/in/peter-di-pietrantonio-1b5183a",
  "public_identifier": "peter-di-pietrantonio-1b5183a",
  "name": "Peter Di Pietrantonio",
  "first_name": "Peter",
  "last_name": "Di Pietrantonio",
  "headline": "Marketing Leader: Build Brands",
  "job_title": "Head of Asia Pacific Marketing",
  "company": "Stripe",
  "company_linkedin_url": "https://www.linkedin.com/company/stripe",
  "location": "Singapore, Singapore",
  "country_code": "SG",
  "education": "Monash University",
  "connections": "500+",
  "connections_count": 500,
  "followers": 4197,
  "past_positions_total": 9,
  "schools": [
    { "school": "Monash University", "school_linkedin_url": "https://au.linkedin.com/school/monash-university/", "start": "1987", "end": "1989" }
  ],
  "last_post_at": "2026-10-27T04:07:32.733Z",
  "profile_page": "read",
  "source": "search",
  "match": { "company": true, "job_title": true },
  "search": { "jobTitle": "head of marketing", "company": "Stripe" },
  "search_query": "site:linkedin.com/in \"Stripe\" \"head of marketing\"",
  "position": 2,
  "page": 1
}
```

A profile link whose public page LinkedIn does not show, filled from the search engine (same day, trimmed):

```json
{
  "profile_url": "https://www.linkedin.com/in/shane-nolan-48743b58",
  "public_identifier": "shane-nolan-48743b58",
  "name": "Shane Nolan",
  "headline": "Senior Account Executive Mid-Market",
  "job_title": "Senior Account Executive - Mid-Market UK/I",
  "company": "HubSpot",
  "location": "Ireland",
  "profile_page": "not_public",
  "source": "profile_url"
}
```

The OUTPUT record of the one-person lookup, trimmed:

```json
{
  "searches_requested": 1,
  "profiles_delivered": 1,
  "charged_for": 1,
  "rejected_name_mismatch": 9,
  "profile_pages_read": 1,
  "per_search": [
    { "query": "site:linkedin.com/in \"Stephen Wu\" \"Notion\"", "pages": 1, "results": 10, "matched": 1, "delivered": 1, "rejected_name": 9, "stopped": "max_results_reached" }
  ],
  "run_seconds": 9
}
```

### Pricing

Pay per event: you pay for the people you receive, plus a flat $0.001 per run that delivered at least one person, whatever memory you choose. Reading profile pages and filling profile links from the search engine cost nothing extra.

| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
| `profile-scraped` | Once per person row stored in your dataset | $4.00 per 1,000 | $3.60 per 1,000 | $3.20 per 1,000 | $2.80 per 1,000 |
| `run-start` | Once per run, right after the first person is delivered | $0.001 | $0.001 | $0.001 | $0.001 |

The price of one person is the price per 1,000 divided by 1,000.

Never charged:

- search results with another name or another current employer (with `strictMatch` on);
- a person that a second search of the same run finds again;
- profile links that do not exist or cannot be read, and inputs that are not searches or LinkedIn links;
- people past your `maxResultsPerSearch`;
- the OUTPUT record;
- a run that delivers nobody: the start fee is charged only after the first person is in your dataset;
- anything past your "Max cost per run". The actor checks the budget before each batch of rows and stops while the total is still below your limit, so the run ends SUCCEEDED with a partial result and a status message saying so.

### Run it on a schedule

1. Open the actor in Apify Console, set your input and click **Save as a new task**.
2. In the task, open **Schedules**, click **Add schedule** and pick how often (every Monday at 08:00, the first of the month and so on).
3. Compare runs on `public_identifier` and `company` to see who joined or left a target account, or who changed title.
4. Optional: add an integration (Google Sheets, Slack, a webhook) so each run lands where your team works.

### FAQ

#### What does this actor read?

Two public sources, without logging in: the search engine's results for LinkedIn profiles (`site:linkedin.com/in` searches, read through Apify Proxy), and each person's public LinkedIn profile page as anyone who is not signed in sees it. It does not use a LinkedIn account, cookies or LinkedIn's internal API, does not send connection requests or messages, and does not read anything behind the sign in.

#### Why do some rows have no followers, photo or schools?

Those come from the public profile page, and LinkedIn does not show that page to logged-out visitors for every member. In our tests it showed it for 58 of 86 people; for tech company staff it was 7 or 8 in 10, for some groups (nurses in Houston, IT staff in India) none. Those rows say `profile_page: "not_public"` and keep the search fields: profile link, headline, title, company, location.

#### Why is the job title sometimes missing?

`job_title` comes from LinkedIn's own one line summary under each search result (place, title, employer). When that line shows only a place and an employer, the title is in `headline` instead. LinkedIn masks titles on most public profile pages, so the page cannot fill it.

#### How does strict match decide the company?

It reads LinkedIn's own line under the result, which names the current employer, and the headline and snippet when that line is missing. "Head of Marketing at Stripe" passes; "ex Stripe", "Former CMO", "designs with Canva" and "Notion Capital" for Notion do not. Turn `strictMatch` off to receive every result with a `match` object instead.

#### How many people can I get per search?

Up to 100 per search and 100 searches per run. The search engine shows 10 people per page; a search ends when a page brings nobody new, a page holds fewer than 7 results, or `maxResultsPerSearch` is reached. For a very large list, split it into several searches, for example by city or by title.

#### How long does a run take?

In our tests: 9 to 12 seconds for one person by name and company, 35 to 48 seconds for 10 people with profile pages read, 138 seconds for 50 people (6 results pages), 22 seconds for 5 profile links. Most of the time is the search engine page, 3 to 15 seconds each, sometimes 30 seconds when it answers slowly.

#### Do I need an account, cookies or a proxy?

No. The actor uses Apify Proxy, which is included. Nothing to set up.

#### Can it find emails or phone numbers?

No. They are not public on LinkedIn. Pass `profile_url` or name and company to [LinkedIn Email Finder](https://apify.com/themineworks/linkedin-email-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) for a work email.

#### Which actor should I use for a whole company?

[LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) walks a company's staff by role. [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) builds lead lists across many companies. [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) returns the company page itself.

#### Which formats can I download?

JSON, CSV, Excel, XML, RSS and HTML from the run's Storage tab or through the API. The dataset has three ready views: People, Search and match, and Profile page details. In CSV and Excel, `schools`, `recent_posts` and `match` are flattened into columns such as `schools/0/school`.

#### Can I use it from Claude, ChatGPT or Cursor (MCP)?

Yes, through Apify's MCP server. Connector URL: https://mcp.apify.com/?tools=themineworks/linkedin-people-search

- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: turn on developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code: `claude mcp add -t http linkedin-people-search "https://mcp.apify.com/?tools=themineworks/linkedin-people-search"`

#### Is it legal to scrape LinkedIn?

The actor reads only what LinkedIn and the search engine show to anyone without logging in, mostly professional information people publish to be found. LinkedIn's and Google's terms and robots.txt files restrict automated access, and personal data is covered by laws such as GDPR and CCPA. You are responsible for how you use the data, including a lawful basis for contacting people. This is general information, not legal advice.

### Integrations

- **Clay**: an HTTP API column that runs the actor with the row's name and company and reads the dataset items, one call per row.
- **Make, Zapier and n8n**: start a run and read its dataset with the Apify apps and nodes, for example "new head of sales at our target accounts every Monday to the CRM".
- **Google Sheets**: send each run's people to a sheet with Apify's Google Sheets integration; one row per person fits a sheet as is.
- **Webhooks**: have Apify call your URL when a run succeeds, then fetch the dataset.
- **API and SDKs**: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- **MCP clients**: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.

### More from The Mine Works

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Email Finder](https://apify.com/themineworks/linkedin-email-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Newsletter Scraper](https://apify.com/themineworks/linkedin-newsletter-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Candidate Finder](https://apify.com/themineworks/linkedin-candidate-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Real estate**

- [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### Support

Found a person the actor missed, or a field that comes back empty? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For a field you need or a new source, email dmineworks@gmail.com.

*Search LinkedIn people by name, job title, company and location with no login, and get each person back as one row with profile link, headline, current title and company, location and, when LinkedIn shows it, followers, photo, schools and recent posts.*

# Actor input Schema

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

Full name of the person to find, for example Satya Nadella. With strict match on, only people whose name holds every word you type are returned. Leave empty to search by title and company.

## `jobTitle` (type: `string`):

Job title or role, as it would appear in a headline, for example head of marketing, software engineer or nurse practitioner.

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

Company the person works at now: a name (Stripe), a website (stripe.com) or a LinkedIn company link. With strict match on, people who only mention the company or used to work there are left out.

## `location` (type: `string`):

City, region or country, for example San Francisco, Germany or Dublin.

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

Any other words a profile should contain, for example a skill, a school or a language: python, Stanford, "German". Quote a phrase to keep it together.

## `searches` (type: `array`):

Run many searches in one go. Each item is an object with any of name, jobTitle, company, location, keywords, for example \[{"name": "Patrick Collison", "company": "Stripe"}, {"jobTitle": "CFO", "company": "Notion"}]. A plain string is used as keywords. Up to 100 searches per run; the fields above count as one more search.

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

LinkedIn profile links to look up directly, no search: https://www.linkedin.com/in/satyanadella, any country subdomain, or just the part after /in/. Up to 1,000 per run.

## `maxResultsPerSearch` (type: `integer`):

The most people to return for each search, 1 to 100. Google shows 10 per results page. For a name lookup 1 to 10 is enough.

## `enrichProfiles` (type: `boolean`):

On: each person's public LinkedIn page is read too, for the exact follower count, the employer's LinkedIn link, photo, school with years, languages, the start of the About text and recent posts. LinkedIn shows this page without login for about half of people; the others keep the search fields. Off: faster. Same price either way.

## `strictMatch` (type: `boolean`):

On: drop results whose name does not hold every word of the name you searched, and, for a company search, people whose current employer is not that company. Off: return everything the search engine found, with a match object on each row saying what matched.

## `fillFromGoogle` (type: `boolean`):

For profileUrls only. LinkedIn hides job titles on most public pages and shows no page at all for some members; with this on, one search engine lookup of that exact profile fills the headline, title, company and location. Same price either way.

## Actor input object example

```json
{
  "jobTitle": "head of marketing",
  "company": "Stripe",
  "maxResultsPerSearch": 10,
  "enrichProfiles": true,
  "strictMatch": true,
  "fillFromGoogle": true
}
```

# 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 = {
    "jobTitle": "head of marketing",
    "company": "Stripe",
    "maxResultsPerSearch": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/linkedin-people-search").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 = {
    "jobTitle": "head of marketing",
    "company": "Stripe",
    "maxResultsPerSearch": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/linkedin-people-search").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 '{
  "jobTitle": "head of marketing",
  "company": "Stripe",
  "maxResultsPerSearch": 10
}' |
apify call themineworks/linkedin-people-search --silent --output-dataset

```

## MCP server setup

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

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/3CobOty7lYugn5F7B/builds/9nHaXs14CVpFyQKhy/openapi.json
