LinkedIn Profile URL Finder avatar

LinkedIn Profile URL Finder

Pricing

Pay per event

Go to Apify Store
LinkedIn Profile URL Finder

LinkedIn Profile URL Finder

Find likely public LinkedIn profile URLs from names, companies, domains, titles, and locations with confidence scores for enrichment workflows.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

6 days ago

Last modified

Categories

Share

Find likely public LinkedIn profile URLs from person names, company/domain hints, job titles, and locations.

What does LinkedIn Profile URL Finder do?

LinkedIn Profile URL Finder helps recruiting, sales, operations, and enrichment teams turn a list of people into likely public LinkedIn profile URLs.

It searches public search results for linkedin.com/in pages, extracts visible result titles and snippets, normalizes profile URLs, and scores each candidate.

The actor does not require LinkedIn cookies, LinkedIn login, or private profile access.

It is designed for bulk workflows where you already have a lead list and need a reliable best-effort URL column.

Who is it for?

  • Recruiters enriching candidate spreadsheets.
  • Sales teams preparing account-based prospect lists.
  • RevOps teams cleaning CRM contacts.
  • Data enrichment teams building Clay, Zapier, Make, or Airtable workflows.
  • Agencies preparing lead lists for outreach.
  • Founders validating people data before manual research.

Why use this actor?

Manual LinkedIn URL lookup is slow.

Search result pages often contain enough public information to identify the right profile.

This actor makes that process repeatable, structured, and easy to export.

You get one output row per input person, plus confidence evidence you can filter before sending data downstream.

How it works

  1. You provide people with fullName and optional company, domain, title, location, and keywords.
  2. The actor builds a public search query using site:linkedin.com/in.
  3. It fetches public search result HTML through Apify's Google SERP proxy.
  4. It extracts LinkedIn /in/ profile candidates.
  5. It scores candidates by name, company, domain keyword, title, and location matches.
  6. It saves the best URL and optional candidate list to the dataset.

Data you can extract

FieldDescription
fullNameInput person name
companyInput company hint
domainInput company domain hint
titleInput job title hint
locationInput location hint
searchQueryQuery used for public search
bestProfileUrlBest normalized LinkedIn profile URL
bestProfileTitleSearch result title for the best match
bestProfileSnippetSearch result snippet for the best match
confidencehigh, medium, low, or none
scoreNumeric match score from 0 to 100
candidateCountNumber of LinkedIn candidates found
candidatesOptional scored candidate list
reasonsWhy the best match was selected
statusfound, not_found, or error
searchedAtISO timestamp

How much does it cost to find LinkedIn profile URLs?

This actor uses pay-per-event pricing.

You pay a small start fee for each run and a per-person fee for each processed row.

Start with a small test batch, review confidence scores, and then scale to larger lists.

Because the actor uses a dedicated SERP proxy, the pricing is designed to include search infrastructure costs.

Input example

{
"people": [
{
"fullName": "Satya Nadella",
"company": "Microsoft",
"domain": "microsoft.com",
"title": "CEO",
"location": "Redmond"
},
{
"fullName": "Sundar Pichai",
"company": "Google",
"domain": "google.com",
"title": "CEO",
"location": "Mountain View"
}
],
"maxCandidates": 5,
"includeCandidates": true,
"requestDelayMs": 500
}

Output example

{
"fullName": "Satya Nadella",
"company": "Microsoft",
"domain": "microsoft.com",
"title": "CEO",
"location": "Redmond",
"bestProfileUrl": "https://www.linkedin.com/in/satyanadella",
"confidence": "high",
"score": 100,
"candidateCount": 5,
"status": "found",
"reasons": [
"all name tokens matched in result title",
"company matched",
"domain keyword matched",
"title matched",
"location matched",
"public LinkedIn profile URL"
]
}

Input fields

people

Required array of people to enrich.

Each row needs fullName.

Optional hints improve matching and reduce false positives.

maxCandidates

Number of candidates to keep per person.

Use 3 to 5 for most workflows.

includeCandidates

Set to true when you want evidence and alternatives.

Set to false when you only need the best URL column.

requestDelayMs

Delay between searches.

Use the default for normal batches.

Increase it for very large runs.

Tips for better matches

  • Include company names when possible.
  • Include company domains for stronger disambiguation.
  • Add titles for common names.
  • Add city or country when the company has many employees.
  • Filter downstream rows where confidence is high or score is above your threshold.
  • Review candidates for ambiguous names before automated outreach.

Common workflows

Recruiting sourcing

Upload a list of candidate names and current companies.

Export bestProfileUrl to your applicant tracking system or sourcing spreadsheet.

Sales prospecting

Resolve contacts from CRM exports before building outreach sequences.

Use confidence scores to separate automatic matches from manual review.

Data enrichment

Add a LinkedIn URL column to Clay, Airtable, or Google Sheets workflows.

Use the Apify API to run this actor whenever a new batch is ready.

CRM cleanup

Find missing LinkedIn URLs for existing contacts.

Keep searchQuery and reasons for auditability.

Integrations

  • Google Sheets: export the dataset as CSV.
  • Clay: run the actor through Apify integration or API calls.
  • Zapier: trigger a run and send dataset rows into a CRM.
  • Make: enrich rows in scheduled batches.
  • Airtable: import URL and confidence fields.
  • HubSpot or Salesforce: update contact records after manual approval.

API usage with Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/linkedin-profile-url-finder').call({
people: [{ fullName: 'Satya Nadella', company: 'Microsoft' }],
maxCandidates: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

API usage with Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('automation-lab/linkedin-profile-url-finder').call(run_input={
'people': [{'fullName': 'Satya Nadella', 'company': 'Microsoft'}],
'maxCandidates': 5,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

API usage with cURL

curl "https://api.apify.com/v2/acts/automation-lab~linkedin-profile-url-finder/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"people":[{"fullName":"Satya Nadella","company":"Microsoft"}],"maxCandidates":5}'

MCP usage

Use this actor with Apify MCP in Claude Desktop or Claude Code.

MCP URL:

https://mcp.apify.com/?tools=automation-lab/linkedin-profile-url-finder

Claude Code setup command:

$claude mcp add apify-linkedin-profile-url-finder https://mcp.apify.com/?tools=automation-lab/linkedin-profile-url-finder

Claude Desktop JSON config:

{
"mcpServers": {
"apify-linkedin-profile-url-finder": {
"url": "https://mcp.apify.com/?tools=automation-lab/linkedin-profile-url-finder"
}
}
}

Example prompts:

  • "Find LinkedIn profile URLs for these 50 people and return only high-confidence matches."
  • "Enrich this recruiting list with profile URLs and explain ambiguous candidates."
  • "Create a CSV-ready table with name, company, best LinkedIn URL, score, and reasons."

Accuracy and confidence

This actor is a best-effort resolver, not an official identity verification service.

A high score means the public search result strongly matched the provided hints.

It does not guarantee employment, current role, or profile ownership.

For compliance-sensitive workflows, review results before use.

Limitations

  • Search engines may return different results by time and region.
  • Very common names can produce ambiguous candidates.
  • Some LinkedIn profiles are hidden from public search results.
  • The actor does not open private LinkedIn profile pages.
  • The actor does not bypass LinkedIn login walls.

FAQ

Why did a person return not_found?

The public search page did not expose a LinkedIn /in/ result for the exact hints.

Try adding a company, removing overly specific title/location hints, or adding a domain.

Why is confidence low?

The candidate may match only a partial name or company clue.

Review candidates and reasons before accepting the URL.

Why do I see multiple candidates?

Common names and large companies often produce several plausible profiles.

Use the highest score first, then inspect alternatives when the decision matters.

Legality and ethical use

This actor works with publicly visible search result snippets and URLs.

Use the data only for lawful purposes.

Respect privacy, platform terms, outreach rules, and applicable data protection laws.

Avoid using profile URLs for spam, harassment, discrimination, or sensitive profiling.

Best practices for bulk runs

Start with a sample of 10 to 25 people.

Check confidence distribution.

Adjust hints.

Then run larger batches.

For thousands of records, split the input into smaller chunks so you can inspect and retry safely.

Changelog

0.1

Initial version with public search, LinkedIn /in/ URL extraction, candidate scoring, confidence labels, and candidate evidence.

Support

If results look wrong, save the input row, output row, and candidate list.

Those fields make it easier to reproduce and tune matching behavior.