LinkedIn Profile Search Scraper avatar

LinkedIn Profile Search Scraper

Pricing

from $10.00 / 1,000 profile founds

Go to Apify Store
LinkedIn Profile Search Scraper

LinkedIn Profile Search Scraper

Search public LinkedIn profiles by keyword, job title, location, company, and school. Cookieless, MCP-ready.

Pricing

from $10.00 / 1,000 profile founds

Rating

5.0

(1)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

91

Total users

40

Monthly active users

11 days ago

Last modified

Share

LinkedIn Profile Search Scraper helps recruiters, sales teams, researchers, and AI agents search public LinkedIn profiles by keyword, job title, location, company, and school. It accepts structured people-search input and returns one record per matched public profile, with fields such as full name, headline, location, current company, profile URL, source, and scrape timestamp. When deep enrichment is enabled, the record can also include about, experience, education, skills, connectionsCount, and followerCount. This Apify Actor is usable through Apify MCP.

Best fit and connected workflows

This Actor fits workflows where the starting point is a person search, not an existing profile URL. It is a good match when you want to:

  • build a targeted list of public LinkedIn profiles from role, company, school, or location signals,
  • review matched people records in a dataset table,
  • pass selected profiles to downstream Apify Actors for further processing.

A natural next step after discovery is one of these verified related Actors:

Practical scenario

Maya is building a shortlist of public LinkedIn profiles for a product marketing search. She starts with jobTitle: "product marketing manager", location: "London", and currentCompany: "SaaS". The Actor returns records with fullName, headline, location, currentCompany, profileUrl, and rank. Maya reviews the returned headline and currentCompany fields, chooses a few profiles that match the brief, and sends the profileUrl values to a downstream enrichment workflow.

Input

Use any combination of the available filters. All fields are optional.

FieldTypePurpose
keywordsstringFree-text people-search terms combined into the Google query.
jobTitlestringMatches a current or past title in the profile headline.
locationstringCity, region, or country used in the search text and geo hint.
currentCompanystringCompany name matched in profile text.
schoolstringSchool or university matched in profile text.
countrystringTwo-letter country code that routes Google domain and result language. Default us.
maxResultsintegerMaximum number of unique public profiles to return. Default 25, maximum 500.
enrichbooleanWhen true, each found profile is additionally fetched from its public LinkedIn page for about, experience, education, and skills.

Example input

{
"keywords": "head of growth",
"jobTitle": "product manager",
"location": "San Francisco Bay Area",
"currentCompany": "Stripe",
"school": "Stanford University",
"country": "us",
"maxResults": 10,
"enrich": false
}

Output

The Actor writes matched profile records to the default dataset and returns a run summary in the default key-value store.

FieldTypePurpose
querystringSearch query used for the match.
fullNamestring or nullProfile name as returned by the search or enrichment step.
firstNamestring or nullFirst name when available.
lastNamestring or nullLast name when available.
headlinestring or nullPublic profile headline.
locationstring or nullPublic profile location.
profileUrlstring or nullPublic LinkedIn profile URL.
publicIdentifierstring or nullLinkedIn public identifier.
snippetstring or nullSearch snippet captured for the profile.
currentCompanystring or nullCompany matched or surfaced in the profile.
jobTitlestring or nullTitle matched or surfaced in the profile.
rankinteger or nullSearch result rank.
sourcestring or nullSource label for the record.
enrichedboolean or nullIndicates whether the profile was deep-enriched.
aboutstring or nullPublic about section when enriched.
experiencearray or nullPublic experience entries when enriched.
educationarray or nullPublic education entries when enriched.
skillsarray or nullPublic skills list when enriched.
connectionsCountinteger or nullPublic connections count when available.
followerCountinteger or nullPublic follower count when available.
scrapedAtstring or nullTimestamp of the scrape.
_statusstring or nullRecord status from the run.
_messagestring or nullRecord message from the run.

Example output record

{
"query": "site:linkedin.com/in head of growth",
"fullName": "Andrew Capland",
"firstName": "Andrew",
"lastName": "Capland",
"headline": "Helping Heads of Growth have more impact",
"location": null,
"profileUrl": "https://www.linkedin.com/in/andrewcapland",
"publicIdentifier": "andrewcapland",
"snippet": "Director of Growth at Wistia, and Head of Growth at Postscript...",
"currentCompany": "Wistia",
"jobTitle": null,
"rank": 1,
"source": "serpapi",
"enriched": false,
"about": null,
"experience": null,
"education": null,
"skills": null,
"connectionsCount": null,
"followerCount": null,
"scrapedAt": "2026-06-19T07:20:36.094Z",
"_status": null,
"_message": null
}

How it works

  1. The Actor folds your filters into a single Google query restricted to public LinkedIn personal profiles.
  2. Search is run through a managed, cookieless search layer.
  3. Results are paginated until maxResults unique profiles are collected.
  4. Each matched profile is written as a structured dataset record.
  5. When enrich is enabled, the Actor fetches additional public profile data from the profile page through ScrapeCreators, adding about, experience, education, and skills.

The Actor is cookieless and uses public data only.

Pricing

This Actor uses Pay per event pricing plus Apify platform usage. The live Pricing tab shows the current billing details for the Actor and the platform.

Billing events in the live contract are:

  • Actor start
  • Profile found
  • Profile enriched

A search for twenty-five profiles bills twenty-five Profile found events. If deep enrichment is enabled for those same twenty-five profiles, the run also bills twenty-five Profile enriched events. Review the live Pricing tab before running the Actor so you can confirm the current pricing details for your use case.

Use with AI agents (MCP)

Tool description: search public LinkedIn profiles from structured people-search fields and receive a dataset of matched public profile records with optional enrichment.

Exact Actor identity: khadinakbar/linkedin-profile-search-scraper

Find public LinkedIn profiles for product managers in London at SaaS companies. Return the matched profiles with name, headline, location, company, profile URL, source, and scrape timestamp. Keep the search focused and use the dataset output for follow-up selection.

The output is suitable interpreted as a ranked set of public profile records. profileUrl and publicIdentifier identify the matched public profile, source shows the search origin, and enriched indicates whether the record includes public page details beyond the search snippet. The dataset contains one record per unique public profile found. Pagination is handled by the Actor until maxResults is reached. Cost scales with billed events, so tighter inputs and lower maxResults values keep runs more targeted.

Apify API example

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({
token: process.env.APIFY_TOKEN,
});
const input = {
keywords: 'head of growth',
jobTitle: 'product manager',
location: 'San Francisco Bay Area',
country: 'us',
maxResults: 5,
enrich: false,
};
const run = await client.actor('khadinakbar/linkedin-profile-search-scraper').call(input);
const datasetItems = await client.dataset(run.defaultDatasetId).listItems();
console.log(datasetItems.items);

Best results and outcome guidance

Use the narrowest useful combination of keywords, title, location, company, and school. If your goal is fast discovery, start with enrich: false and a lower maxResults. If you need public about, experience, education, or skills, enable enrich for the selected profiles. The country field uses a two-letter code, which helps route the Google domain and result language.

Design note

I found that the dataset contract includes both search-time fields like snippet and enrichment fields like about, experience, education, and skills, which makes the record shape clear for both discovery and deeper profile review.

FAQ

How is this Actor different from a URL-based LinkedIn scraper?
This Actor starts from search inputs such as keywords, title, location, company, and school, then returns matching public profile records.

When should I use the email finder workflow instead?
Use LinkedIn Profile Scraper & Email Finder "No Login Required" after discovery when you already have returned public profile URLs or IDs and want email-oriented enrichment.

When should I use the posts workflow instead?
Use LinkedIn Profile Posts Scraper when the returned profile URLs should feed a public-post analysis workflow.

What fields are most useful for filtering the results?
fullName, headline, currentCompany, location, profileUrl, source, and rank are the main discovery fields. If enrichment is enabled, about, experience, education, skills, connectionsCount, and followerCount add more context.

How do I read the run output?
The dataset contains the matched profiles. The key-value store includes the run summary under SUMMARY.

Responsible use

This Actor works with public LinkedIn search results and public profile pages. Use the returned data in ways that respect applicable laws, platform terms, and data-handling obligations. Review your collection, storage, and outreach practices before using the output in recruiting, sales, or research workflows.