LinkedIn Mass People Profile Finder with Job and Location
Pricing
from $3.99 / 1,000 results
LinkedIn Mass People Profile Finder with Job and Location
LinkedIn Mass People Profile Finder with Job and Location finds LinkedIn profiles in bulk using job titles, locations, and other criteria. Collect profile names, job roles, companies, locations, and professional details for lead generation and recruitment.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
ScraperX
Maintained by CommunityActor stats
0
Bookmarked
42
Total users
9
Monthly active users
4 days ago
Last modified
Categories
Share
LinkedIn Mass People Profile Finder with Job and Location — Find Profiles in Bulk from Names, Titles & Companies
You have a list of people — names, job titles, companies — but not their LinkedIn URLs. This Actor finds them.
Feed it free-text queries like "Michael Dell" "Dell Technologies" CEO, one per line, and it returns every matching public LinkedIn profile with the profile URL, name, headline, current experience, location, education, connection count and follower count parsed straight out of the search result.
Built for bulk lead enrichment, recruitment sourcing and CRM cleanup — hundreds of queries per run, no LinkedIn login, no cookie.
What you get
| 🔗 Profile identity | 💼 Professional details | 🧭 Search context |
|---|---|---|
| LinkedIn profile URL | Headline | Original query |
| Profile slug | Current experience / company | Match rank per query |
| Country subdomain (uk, in, de…) | Location | Number of matches found |
| Full name | Education | Search engine used |
| Raw result title & segments | Connections count | Proxy tier used |
| Raw snippet text | Followers count | Name-in-title confidence flag |
Key features
- Query-based, not URL-based. You do not need to know anyone's LinkedIn URL — a name plus a company or job title is enough.
- Bulk input. One query per line; each becomes its own dataset row with all of its matches nested inside.
- All matches or best match.
returnAllMatcheson gives you every candidate profile (up to 10) so you can disambiguate common names yourself; off returns only the single best-ranked match for a clean one-row-per-person export. - Keyword gating for precision.
requiredKeywordskeeps a match only if every keyword appears in its title or snippet —["CEO", "Dell"]filters out unrelated people with the same name. This is the difference between a usable list and a noisy one. - Profile summary parsing. Experience, location, education, connections and followers are extracted from the search snippet, so you get context without opening a single profile.
- Country subdomain control. Keep localized URLs (
uk.linkedin.com,in.linkedin.com) when they carry useful geography, or canonicalise everything towww.linkedin.comfor deduplication. - Automatic proxy ladder. The Actor manages blocks and proxy escalation itself — no proxy configuration needed in normal use.
- Transparent results. Every row records which search engine answered, which proxy tier was used, how many matches were found, and the exact search query executed. Failures come back with an
errorfield rather than vanishing.
Use cases
- Lead enrichment at scale — turn a CRM export of names and companies into a list of LinkedIn profile URLs.
- Recruitment sourcing — find candidates matching a title and employer, complete with location and education.
- Sales prospecting — locate the decision-maker at each target account and confirm their current role.
- Event and webinar follow-up — match a registration list to LinkedIn profiles before outreach.
- Data cleanup & deduplication — verify that the person in your database still holds the role you recorded.
- Investor / partner research — find the people behind a company name quickly.
- Academic and market research — build datasets of professional profiles matching structured criteria.
- Account-based marketing — map every named contact in a target account to a real profile.
How it works
- You provide free-text queries, one per line.
- Each query is executed as a
site:linkedin.com/insearch, so only LinkedIn person profiles come back. - Every result is parsed into a match object: profile URL, slug, name, headline, and — with summary parsing on — experience, location, education, connections and followers pulled from the snippet.
- Your keyword filter is applied, dropping matches that do not contain every required keyword.
- Matches are ranked, and either all of them or just the best one is kept.
- One row per query is pushed to the dataset, with the match list nested inside and full diagnostics attached.
Quick start
- Open the Actor and enter your queries — one per line. Wrap exact terms in quotes:
"Michael Dell" "Dell Technologies" CEO - Leave Return All Matches Per Query on while you check quality.
- (Optional) Add Required Keywords such as the company name to filter out namesakes.
- Click Start, then export the Output tab as JSON (recommended — matches are nested) or CSV.
Minimal input
{"queries": ["\"Michael Dell\" \"Dell Technologies\" CEO","\"Chuck Robbins\" Cisco CEO"]}
Input configuration
| Field | Type | Default | Description |
|---|---|---|---|
queries | array | — (required) | Free-text search queries, one per line. Typically name + company + title. Quote exact phrases for tighter matches. |
returnAllMatches | boolean | true | On: return every candidate profile found (up to maxMatchesPerQuery). Off: return only the single best-ranked match. |
maxMatchesPerQuery | integer | 10 | How many candidate profiles to keep per query. Search engines return at most 10 results per query, so this is capped at 10. |
requiredKeywords | array | [] | Keep a match only if every keyword (case-insensitive) appears in its title or snippet. Example: ["CEO", "Dell"]. Empty = no filter. |
includeProfileSummary | boolean | true | Parse experience, location, education, connections and followers from the snippet. Off returns only URL and title fields. |
keepCountrySubdomain | boolean | true | Keep localized subdomains in matches[].profileUrl (e.g. uk.linkedin.com). Off canonicalises to www.linkedin.com. The top-level linkedin field is always www.linkedin.com. |
proxyConfiguration | object | no proxy | Override the automatic proxy ladder. Leave as default unless you have a specific reason — the Actor handles blocks itself. |
Query-writing tips
- Quote the parts that must match exactly:
"Jane Doe" "Acme Corp". - Add the job title when the name is common:
"John Smith" "Microsoft" "Product Manager". - Add a city for geographically ambiguous names:
"Maria Garcia" "Deloitte" Madrid. - Use
requiredKeywordsas a second safety net — the query finds candidates, the keywords enforce them.
Output data
One row per query. All candidate profiles live in the nested matches array.
Row level
| Field | Type | Description |
|---|---|---|
input | string | The query you supplied. |
linkedin | string | Best-match profile URL, always canonicalised to www.linkedin.com. null if nothing was found. |
matchCount | number | How many matches were kept for this query. |
matches | array | The candidate profiles (see below). |
searchQuery | string | The exact search executed, e.g. site:linkedin.com/in "Michael Dell" …. |
engineUsed | string | Which search engine answered. |
proxyTierUsed | string | Which proxy tier the successful request used. |
error | string | Reason nothing was found, when applicable. |
Match level (matches[])
| Field | Description |
|---|---|
rank | Position in the result set (1 = best). |
profileUrl | Profile URL, with or without country subdomain per your setting. |
slug | LinkedIn profile slug. |
countrySubdomain | Localized subdomain when present (uk, in, de…). |
name | Parsed person name. |
headline | Parsed headline. |
experience | Current role / company from the snippet. |
location | Location from the snippet. |
education | Education from the snippet. |
connections | Connection count from the snippet. |
followers | Follower count from the snippet. |
titleRaw, titleSegments, titleSegmentCount | Raw result title and its parsed segments. |
snippetRaw | The raw snippet text. |
queriedNameInTitle | Whether the queried name actually appears in the result title — a quick confidence signal. |
Example output
{"input": "\"Michael Dell\" \"Dell Technologies\" CEO","linkedin": "https://www.linkedin.com/in/michaeldell","matchCount": 2,"searchQuery": "site:linkedin.com/in \"Michael Dell\" \"Dell Technologies\" CEO","engineUsed": "search-engine-a","proxyTierUsed": "direct","error": null,"matches": [{"rank": 1,"profileUrl": "https://www.linkedin.com/in/michaeldell","slug": "michaeldell","countrySubdomain": null,"name": "Michael Dell","headline": "Chairman and CEO at Dell Technologies","experience": "Dell Technologies","location": "Austin, Texas, United States","education": "The University of Texas at Austin","connections": "500+","followers": "3,100,000","queriedNameInTitle": true}]}
Illustrative values — a live run returns current search data.
Usage examples
Clean one-row-per-person export
{"queries": ["\"Jane Doe\" \"Acme Corp\" \"VP Marketing\"","\"John Smith\" \"Globex\" CTO"],"returnAllMatches": false,"includeProfileSummary": true}
High-precision matching for common names
{"queries": ["\"John Smith\" \"Microsoft\" \"Product Manager\""],"returnAllMatches": true,"requiredKeywords": ["Microsoft", "Product"],"maxMatchesPerQuery": 10}
Bulk enrichment from a CRM export
Build one query per contact — "<first last>" "<company>" "<title>" — paste them all in, and export the result with returnAllMatches: false for a straight join back onto your CRM.
Recruitment sourcing by role and city
{"queries": ["\"Senior React Developer\" Berlin","\"Frontend Engineer\" Berlin \"React\""],"returnAllMatches": true,"requiredKeywords": ["React"]}
Fast, minimal pass
{"queries": ["…500 queries…"],"includeProfileSummary": false,"returnAllMatches": false,"keepCountrySubdomain": false}
Run it from your own code
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_API_TOKEN>")run = client.actor("scraperx/linkedin-mass-people-profile-finder").call(run_input={"queries": ['"Michael Dell" "Dell Technologies" CEO'],"returnAllMatches": False,"requiredKeywords": ["Dell"],})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["input"], "->", row["linkedin"], "| matches:", row["matchCount"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_API_TOKEN>' });const run = await client.actor('scraperx/linkedin-mass-people-profile-finder').call({queries: ['"Michael Dell" "Dell Technologies" CEO'],returnAllMatches: false,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL
curl -X POST "https://api.apify.com/v2/acts/scraperx~linkedin-mass-people-profile-finder/runs?token=<YOUR_APIFY_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"queries":["\"Michael Dell\" \"Dell Technologies\" CEO"],"returnAllMatches":false}'
Integrations
Send results to Google Sheets, Airtable, Slack, Make, Zapier, Google Drive or your CRM via webhooks. Combine with Schedules to re-verify a contact list on a regular cycle.
Pricing
Pay-per-event: a small Actor-start charge plus a charge per row delivered — one row per query, regardless of how many matches it contains. Querying with returnAllMatches: true therefore costs the same as false, but gives you far more data per row.
Current rates are on the Pricing tab of this Actor's page, and Apify shows an estimate before and during every run.
Limits & good to know
- Maximum 10 matches per query. Search engines return at most 10 results per query, which is why
maxMatchesPerQueryis capped there. - Snippet coverage varies. Location, education, connections and followers come from the search snippet, and not every snippet includes every field. Blanks mean the snippet did not carry that detail — not that the profile lacks it.
- One row per query, always. Queries that find nothing still produce a row with
errorset, so your export lines up with your input list. - Namesakes are real. For common names, always use
requiredKeywordsand checkqueriedNameInTitlebefore trusting a match. - The Actor finds public profiles only, as exposed by search engines. Profiles hidden from search will not appear.
- Leave the proxy configuration alone unless you have a specific reason — the built-in ladder already handles blocks.
- Default run options are 4 GB memory and a 1-hour timeout — raise the timeout for very long query lists.
FAQ
Do I need a LinkedIn account or cookie? No. The Actor finds public profiles through search, without touching LinkedIn's login.
What should a query look like?
Name plus one or two distinguishing terms: "Jane Doe" "Acme Corp" "VP Marketing". Quote exact phrases.
How do I get exactly one profile per person?
Set returnAllMatches to false. The top-level linkedin field is then your answer column.
How do I avoid matching the wrong John Smith?
Add requiredKeywords (company, title, city) and check the queriedNameInTitle flag on each match.
Does it return e-mail addresses or phone numbers? No. LinkedIn does not publish them, and this Actor does not guess or generate them.
Why are location or education empty for some matches?
Those fields are parsed from the search snippet, and snippets vary. The profile URL and headline are the reliable fields.
Should I keep country subdomains?
Keep them if the geography is useful (uk.linkedin.com implies a UK-based profile). Turn them off if you need clean deduplication.
Which export format should I use?
JSON when you want all matches; CSV works well with returnAllMatches: false, where each row is a single person.
Legal & responsible use
This Actor finds publicly indexed LinkedIn profiles through ordinary search — it does not log in, use credentials, or access private profile data. Names, headlines and locations are personal data: if you process them, ensure you have a lawful basis under GDPR and comparable regulations, honour deletion and opt-out requests, and follow LinkedIn's User Agreement and applicable marketing law when doing outreach.
Support
Need extra parsing, a different match strategy, or a custom enrichment pipeline? Open an issue on the Issues tab of this Actor.