LinkedIn Profile Finder - Email to LinkedIn URL Lookup

io.github.AnshumanAtreyPublished by GitHub account AnshumanAtreyv0.2.14Updated Oct 30, 2026

LinkedIn Profile Finder - Email to LinkedIn URL Lookup

The publisher's own server: Finder Jobs

VerifiedStreamable HTTPWeb executableWeb Search & ScrapingBusiness & Commerce

Overview

AI-generated overview

Apify-hosted MCP server that turns email addresses into public LinkedIn profile URLs with a confidence score, for lead enrichment and recruiting.

What you can do
  • Look up a single email address or a bulk list and get back a LinkedIn URL per row with a 0-100% confidence score
  • Skip role mailboxes and return found: false instead of guessing when no candidate exists
  • Show the evidence behind each match, such as where the name came from and how many platforms confirmed the handle
  • Apply a confidence gate so only matches at or above the threshold count as confident
  • Optionally fetch the full matched profile or use a paid backfill fallback for misses, depending on input settings
When to use it
Useful when you have a list of email addresses and want to enrich them with LinkedIn profiles for sales outreach, recruiting, CRM cleanup or simply seeing who emailed you. It suits batch enrichment through an AI agent rather than reading LinkedIn directly.
Requirements
Runs as a remote endpoint at mcp.apify.com over streamable HTTP with OAuth; an Apify API token is sent as an Authorization bearer header and runs bill to that Apify account. Optional free Groq and Brave Search keys, plus Bright Data and Findymail keys for profile scraping and backfill, widen coverage.
Before you install
Every run costs money on the Apify account: a run-start fee, a per-email fee whether or not a match is found, and a per-match fee above the confidence gate. Results are inferred from public signals, not read from LinkedIn, so URLs are leads to verify. It processes personal data, so privacy rules such as GDPR and CCPA and opt-out requests apply.

Installation

In SourceWeft

  1. Open LinkedIn Profile Finder - Email to LinkedIn URL Lookup in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.AnshumanAtrey%2Flinkedin-harvester/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

{
  "mcpServers": {
    "linkedin-profile-finder-email-to-linkedi": {
      "type": "http",
      "url": "https://mcp.apify.com/?tools=anshumanatrey/linkedin-harvester"
    }
  }
}

README

LinkedIn Profile Finder - Email to LinkedIn URL Lookup

Turn an email address into the person's public LinkedIn profile, with a confidence score on every match. Paste one email or a whole list and get back a clean table of LinkedIn URLs for your CRM, outreach or recruiting pipeline. No LinkedIn login, no cookies, nothing tied to your account.

Use it as a reverse email lookup, an email to LinkedIn API or a lead enrichment step from the Apify Console, the Apify API, Python, JavaScript, n8n, Make or an AI agent, and export the rows as JSON, CSV or Excel. Available as an Apify Actor. $0.005 per email checked plus $0.02 per confident match. Works with no API keys; free Brave Search and Groq keys widen coverage.

What does it do?

  • Email in, best-match LinkedIn URL out, with a 0 to 100% confidence score on every row so you know which matches to trust.
  • Bulk or one-off. A single address or thousands, one result row each.
  • Pay for results. Half a cent per email checked; the match fee applies only when a URL clears your confidence gate.
  • Public information only. GitHub commit authors, Gravatar, PGP keyservers and handle probes on 8 platforms. No data broker, no private database.
  • Account-safe. It never logs into LinkedIn or touches your session, so there is nothing to get flagged.

How is it different from other email to LinkedIn finders?

  • Every row shows its evidence. The confidence score comes with where the name came from (the address, a GitHub commit, Gravatar) and on how many platforms the handle was confirmed, so a match can be checked instead of taken on trust.
  • A miss is a clean miss. Role mailboxes (info@, support@, sales@) are skipped, and an address with no candidate returns found: false rather than a confident guess.
  • Possible matches are free. Rows between 50% and your gate come back with their score and no match fee, for you to verify.
  • No data broker behind it. Results are rebuilt from public developer and social profiles on every run, so nothing comes from a purchased database.

When should I use it?

  • Sales and growth: enrich inbound leads and sign-ups with the right LinkedIn profile before you reach out.
  • Recruiting: turn a list of candidate emails into LinkedIn profiles.
  • RevOps and CRM: clean, verify and backfill contact records at scale.
  • Founders and operators: see who actually emailed you.

How much does it cost to find a LinkedIn profile from an email?

Pay per event. Platform compute is included in the prices.

EventPriceWhen it is charged
Run start$0.01Once per run
Email checked$0.005Once per email, found or not
Confident match$0.02Only when a URL clears your confidence gate (80% by default)

On paid Apify plans the email and match fees are 10% less on Scale ($0.0045 and $0.018) and 20% less on Business and above ($0.004 and $0.016). The run start fee is the same on every plan.

Job (Free and Starter price)Cost
The 6-email run below (1 confident match)$0.06
1 email, confident match$0.035
100 emails, 30 confident matches$1.11
1,000 emails, 250 confident matches$10.01

A run stops at its spending limit: an email is looked up only while the limit can still pay for it and a confident match, and a limit that cannot pay for one email ends with nothing looked up or charged.

How does the price compare with other email to LinkedIn finders?

Actors on the Apify Store that turn an email into a LinkedIn profile, found by searching "email to linkedin", "linkedin profile finder email" and "reverse email lookup linkedin" on 2026-10-30, with 30 or more users in the last 30 days, ordered by users. Free-plan prices from each listing.

ActorUsers, 30 daysPrice
oday/mawsool-email-linkedin-lookup166$0.002 per email looked up
neuralverge/neuralverge-email-enrichment96$0.01 per result row
b2bsearch/reverse-email-lookup37$0.0032 per person found, $0.008 with full details
b2bsearch/email-to-linkedin32$0.0032 per profile found, misses free
enrich-crm/enrich-crm-reverse-email30$0.03 per enrichment result
This actor9$0.005 per email checked, $0.02 per confident match, $0.01 per run

Where others are cheaper: oday's lookup costs less per email, and b2bsearch's two actors charge less per found profile and nothing for misses. This actor costs more per match because a match is charged only above your confidence gate and arrives with its evidence; compare on a sample of your own list.

Which inputs does it take?

Only the emails are needed; every other field has a working default.

FieldRequiredWhat it does
Email address (email)One of the twoA single address for a quick one-off, such as [email protected]
Emails (bulk) (emails)One of the twoOne email per row, or several separated by commas. Role mailboxes like info@ are skipped
AI assistance (aiMode)Noregex (No AI: fastest, clear matches only), balanced (default: AI only on uncertain matches) or full (AI on every email; needs a Groq key)
Minimum confidence to scrape (%) (minConfidencePct)NoThe confidence gate, 80 by default. Only matches at or above it are charged as confident
Check public profiles (recommended) (deepEnrich)NoOn by default. Looks the address up on GitHub, Gravatar, PGP keyservers and 8 platforms' handles, which is what resolves a URL without a search key
Scrape the matched profile (scrapeProfiles)NoOff by default. Fetches the full LinkedIn profile after a confident match; needs a Bright Data key
Run mode (runMode)Noincremental (default, free resolvers only) or backfill (also the paid Findymail fallback for misses)
Groq API key (groqApiKey)NoFree key for the AI name-splitting in Balanced and Full AI modes
Brave Search API key (braveApiKey)NoFree key that adds a web-search check on each candidate, the designed way to lift 78% matches over the gate
Google Custom Search key (googleCseKey) and CX id (googleCseCx)NoLegacy alternative to Brave for the search step
Bright Data API key (brightdataApiKey)NoNeeded only for Scrape the matched profile
Findymail API key (findymailApiKey)NoNeeded only for Backfill mode

Example input:

json
{  "emails": ["[email protected]", "[email protected]"],  "aiMode": "balanced"}

What does the output look like?

This is the real dataset from a run on 2026-09-12 (build 0.1.5, no API keys, default settings): six emails in 25 seconds at 1 GB of memory. One row, a private person's personal address, is left out here.

EmailFoundLinkedIn URLConfidenceConfidentNameName fromEvidence
[email protected]yeslinkedin.com/in/anshumanatrey97%yesAnshuman AtreyGitHub commithandle confirmed on 4 platforms
[email protected]yeslinkedin.com/in/satyanadella78%noSatya Nadellaaddresshandle confirmed on 4 platforms
[email protected]yeslinkedin.com/in/jensenhuang78%noJensen Huangaddresshandle confirmed on 6 platforms
[email protected]yeslinkedin.com/in/timcook78%noTim Cookaddresshandle confirmed on 3 platforms
[email protected]no0%norole mailbox, no candidate

Confident means the row cleared the 80% gate. Those are the only rows that carry the match fee. Rows between 50% and 79% are possible matches, returned free with their score, for you to verify before use.

One row as JSON (the signals block is what the scorer saw):

json
{  "email": "[email protected]",  "found": true,  "linkedin_url": "https://www.linkedin.com/in/anshumanatrey",  "confidence": 0.97,  "passes_gate": true,  "gate_threshold": 0.8,  "derived_name": "Anshuman Atrey",  "name_source": "github_commit",  "source": "handle_pivot",  "evidence": "handle 'anshumanatrey' confirmed on 4 platform(s) -> likely LinkedIn slug",  "signals": {    "names": [{"value": "Anshuman Atrey", "source": "github_commit"}],    "handles": ["anshumanatrey"],    "confirmed_socials": ["GitHub: https://github.com/anshumanatrey", "YouTube: https://www.youtube.com/@anshumanatrey", "Telegram: https://t.me/anshumanatrey"]  }}

How fast is it?

About 4 seconds per email at the 1 GB default, so a 100-email list finishes in about 7 minutes. The 6-email run above used 0.0069 compute units.

Common questions

How accurate are the matches?

Measured on the run above: 5 of 6 addresses resolved to a URL, 1 above the gate, and the role mailbox was correctly skipped.

  • Work emails ([email protected]) give the name from the address itself. The handle probes then look for that name as a handle across GitHub, GitLab, dev.to, npm, Gravatar, Linktree, About.me, YouTube and Telegram. Three or more hits put the match at 78%.
  • Personal addresses resolve when the person has a public developer or social footprint. A GitHub commit author name or a Gravatar display name is authoritative and lifts confidence to the high 90s.
  • Over the gate. A confident match needs a name from an authoritative source plus a handle that is consistent across platforms. A free Brave Search key adds a web-search check on each candidate.

Does it log into LinkedIn?

No. It never logs in, uses no cookies and touches no session. LinkedIn login-walls its pages, so a URL is a strong lead confirmed by cross-platform evidence, not a fetched profile. Turn on Scrape the matched profile with a Bright Data key if you need the full profile.

How do I run it from Python or an AI agent?

Through the Apify API, with your Apify token:

python
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("anshumanatrey/linkedin-harvester").call(run_input={"emails": ["[email protected]"]})for row in client.dataset(run["defaultDatasetId"]).iterate_items():    print(row["email"], row["linkedin_url"], row["confidence"])

AI agents can call it through the Apify MCP server at https://mcp.apify.com, and n8n and Make have Apify nodes.

Am I charged for emails that find nothing?

The $0.005 email fee covers the lookup, found or not. The $0.02 match fee applies only to a URL at or above your confidence gate, so misses and possible matches cost nothing more.

Is it legal to use?

It reads public information only. Use it for legitimate sales, recruiting, research and verification, follow the privacy laws that apply to you (GDPR, CCPA and local equivalents), and honor opt-out and do-not-contact requests.

Limitations

  • A URL is resolved from public evidence, not read from LinkedIn, which login-walls its pages.
  • Personal addresses with no public developer or social footprint usually stay unresolved.
  • Without a Brave Search key, most work-email matches land at 78%, just under the default gate; lower the gate or add the free key.
  • Role mailboxes (info@, support@, sales@) are skipped by design.

Who maintains it?

Built and maintained by Anshuman Atrey (@AnshumanAtrey), who publishes a portfolio of OSINT actors on Apify Store. For a feature request or a bug, message LinkedIn (fastest), open an issue on the GitHub repo, or write through atrey.dev.

Sibling actors

ActorUse case
holehe-email-osintEmail -> registered accounts across 120+ platforms
domain-history-contact-osintDomain -> previous owner, WHOIS history, archived contacts with source URLs
theharvester-osintDomain -> emails, subdomains and IPs from 54+ public sources

Documentation

The actor is open source. To run it from the command line with your own keys:

bash
git clone https://github.com/AnshumanAtrey/linkedin-harvester.gitcd linkedin-harvesterpip3 install -r requirements.txt
GROQ_API_KEY=your_groq_key BRAVE_API_KEY=your_brave_key \  python3 -m harvester.find "[email protected]"

Free keys: Groq at console.groq.com/keys, Brave at brave.com/search/api

Last updated

2026-10-30 (version 0.2)

Source: README.md at commit a580e4d

Tools

0
This server asks you to sign in, so SourceWeft could not read its tools without an account and has not indexed them. What a connected account sees can depend on that account and its permissions.

Version history

5
  1. v0.2.14LatestOct 30, 2026
  2. v0.2.13Oct 29, 2026
  3. v0.2.10Oct 20, 2026
  4. v0.2.5Sep 25, 2026
  5. v0.1.4Sep 24, 2026

Score

85% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Finder integrations