LinkedIn Profile Search Scraper
Pricing
from $10.00 / 1,000 profile founds
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
Maintained by CommunityActor stats
0
Bookmarked
91
Total users
40
Monthly active users
11 days ago
Last modified
Categories
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:
- LinkedIn Profile Scraper & Email Finder "No Login Required" for enrichment after you have a returned public profile URL or ID and want email-focused profile data.
- LinkedIn Profile Posts Scraper for post-level analysis after you have a returned public profile URL or ID and want public posts tied to selected profiles.
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.
| Field | Type | Purpose |
|---|---|---|
keywords | string | Free-text people-search terms combined into the Google query. |
jobTitle | string | Matches a current or past title in the profile headline. |
location | string | City, region, or country used in the search text and geo hint. |
currentCompany | string | Company name matched in profile text. |
school | string | School or university matched in profile text. |
country | string | Two-letter country code that routes Google domain and result language. Default us. |
maxResults | integer | Maximum number of unique public profiles to return. Default 25, maximum 500. |
enrich | boolean | When 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.
| Field | Type | Purpose |
|---|---|---|
query | string | Search query used for the match. |
fullName | string or null | Profile name as returned by the search or enrichment step. |
firstName | string or null | First name when available. |
lastName | string or null | Last name when available. |
headline | string or null | Public profile headline. |
location | string or null | Public profile location. |
profileUrl | string or null | Public LinkedIn profile URL. |
publicIdentifier | string or null | LinkedIn public identifier. |
snippet | string or null | Search snippet captured for the profile. |
currentCompany | string or null | Company matched or surfaced in the profile. |
jobTitle | string or null | Title matched or surfaced in the profile. |
rank | integer or null | Search result rank. |
source | string or null | Source label for the record. |
enriched | boolean or null | Indicates whether the profile was deep-enriched. |
about | string or null | Public about section when enriched. |
experience | array or null | Public experience entries when enriched. |
education | array or null | Public education entries when enriched. |
skills | array or null | Public skills list when enriched. |
connectionsCount | integer or null | Public connections count when available. |
followerCount | integer or null | Public follower count when available. |
scrapedAt | string or null | Timestamp of the scrape. |
_status | string or null | Record status from the run. |
_message | string or null | Record 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
- The Actor folds your filters into a single Google query restricted to public LinkedIn personal profiles.
- Search is run through a managed, cookieless search layer.
- Results are paginated until
maxResultsunique profiles are collected. - Each matched profile is written as a structured dataset record.
- When
enrichis 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.