Email to LinkedIn Profile Scraper
Pricing
from $25.00 / 1,000 linkedin profile founds
Email to LinkedIn Profile Scraper
Look up public LinkedIn profiles from email addresses: name, headline, profile URL, company, and location. Provider-backed via ScrapeCreators and SociaVault Google Search with optional public-profile enrichment. Cookieless, no LinkedIn login. MCP-ready.
Pricing
from $25.00 / 1,000 linkedin profile founds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Turn one or more email addresses into public LinkedIn profiles. Paste a work email such as satya.nadella@microsoft.com and get one dataset row with matchStatus, profile URL, name, headline, company, and location when a public match exists. Unmatched or role-mailbox addresses return a free CLEAR row so you can tell a completed empty lookup from a provider outage. No LinkedIn login or cookies.
Designed for B2B sales, recruiting, and CRM teams who already have emails and need the matching public LinkedIn URL before outreach. This is the reverse of LinkedIn Profile Email Scraper, which starts from a profile URL and looks for an email.
What you get
| Output | What it answers |
|---|---|
email + matchStatus | Which address was processed and whether a public profile was found |
profileUrl + publicIdentifier | Where the person is on LinkedIn |
fullName, headline, currentCompany, location | Who they are at work from public search and optional enrichment |
confidence, matchStrategy, provider | Why this match was accepted, and which public-data provider supplied it |
clearReason on CLEAR rows | Why there is no billable match — no public hit, role mailbox, or ambiguous result |
OUTPUT / RUN_SUMMARY outcomes | Provenance — complete, empty, invalid input, or upstream outage |
Who it is for (and why it matters)
- Sales development reps — attach a LinkedIn URL to inbound or list-bought work emails before a first touch.
- Recruiters — turn a candidate email list into public profiles so you can review headline, company, and location without a LinkedIn seat.
- RevOps / CRM owners — backfill contact records with a canonical
/in/URL and skip role inboxes likeinfo@without paying for them. - AI agents — one tool call with
emailsreturns structured found or CLEAR rows, so the agent can enrich, skip, or route without guessing.
When to use this Actor
- You have work emails (
first.last@company.com) and need public LinkedIn profile URLs. - You want unmatched addresses recorded as CLEAR so the dataset stays honest.
- You need optional public-profile enrichment (company URL, followers, about) after a match.
- When you already have LinkedIn
/in/URLs, start with LinkedIn Profile Details Scraper for the public about and experience view. - When the starting point is a title, company, or location instead of an email, use LinkedIn Profile Search Scraper.
Best fit for this Actor
- Strongest starting condition: a work email whose local-part is a person's name and whose domain is the employer.
- Useful output: one row per email, billed only when
matchStatusisfound. - When you need emails validated first, pass the list through Email Address Validator, then feed the surviving addresses here.
Input
| Field | Type | Default | Description |
|---|---|---|---|
emails | array (required) | 1 example email | Up to 100 email addresses per run |
maxItems | integer | 50 | Cap on found profiles saved and billed (CLEAR rows stay outside this cap) |
minConfidence | integer | 70 | Minimum 0–100 score required to accept a match |
enrichProfiles | boolean | false | Add company URL, location, followers, about ($0.02/row extra) |
providerOrder | enum | scrapecreators-first | Public-data provider priority; fallback fires automatically |
maxConcurrency | integer | 2 | Emails processed in parallel (1–5) |
Quick start input
{"emails": ["satya.nadella@microsoft.com"],"maxItems": 1,"enrichProfiles": false}
That input selects a single well-known work email so the run stays inside the five-minute quality window and still returns a real found row.
Example input — bulk work emails, enrichment on
{"emails": ["satya.nadella@microsoft.com","sundarpichai@google.com"],"maxItems": 50,"minConfidence": 70,"enrichProfiles": true}
Duplicate emails are deduplicated automatically. Role mailboxes such as info@company.com are written as CLEAR and never billed.
What data you receive
One dataset item is one email lookup. Found rows carry the LinkedIn identity; CLEAR rows document that the lookup finished with no billable match.
{"email": "satya.nadella@microsoft.com","matchStatus": "found","confidence": 88,"profileUrl": "https://www.linkedin.com/in/satyanadella","publicIdentifier": "satyanadella","fullName": "Satya Nadella","headline": "Chairman and CEO at Microsoft","currentCompany": "Microsoft","matchStrategy": "name-company-site","enriched": false,"provider": "scrapecreators","scrapedAt": "2026-08-17T00:00:00.000Z"}
CLEAR example:
{"email": "info@microsoft.com","matchStatus": "clear","clearReason": "role_mailbox","enriched": false,"scrapedAt": "2026-08-17T00:00:00.000Z"}
Every terminal run also writes OUTPUT and RUN_SUMMARY with a named outcome, per-email results, provider diagnostics, and billing counters.
Workflow story: from a CRM email column to outreach-ready LinkedIn URLs
A RevOps lead exports 40 work emails from a webinar registration list. She pastes them into this Actor with enrichProfiles: true and maxItems at 40. The run derives a name and company from each first.last@company.com address, searches public Google results restricted to LinkedIn profiles, and keeps only matches that clear the confidence bar. Twenty-eight rows come back found with profile URLs and current company; nine are CLEAR (no_public_match or role_mailbox); three stay unmatched because the local-part is a nickname with no public footprint. She then filters matchStatus=found, hands the profileUrl values to her sequencer, and skips paying for the CLEAR rows. Event cost is 28 × $0.025 plus enrichment on the rows that actually received public profile fields.
Use through the API
curl -X POST "https://api.apify.com/v2/acts/khadinakbar~email-to-linkedin-profile-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"emails": ["satya.nadella@microsoft.com"],"maxItems": 1,"enrichProfiles": false}'
Results land in the run's default dataset: https://api.apify.com/v2/datasets/{datasetId}/items?clean=true. Paginate large batches with offset/limit. The same Actor is exposed through Apify MCP as apify--email-to-linkedin-profile-scraper.
Use with AI agents through Apify MCP
Given these work email addresses, find each person's public LinkedIn profile URL, name, headline, and company. Return CLEAR for addresses with no public match. Keep only dataset
profileUrlvalues. Cap the run at 25 found profiles.
Inspect the terminal outcome, read the dataset, keep profileUrl as the source identifier, and treat clearReason as a completed empty lookup for that address. Connect through Apify MCP.
{"emails": ["satya.nadella@microsoft.com"],"maxItems": 25,"minConfidence": 70,"enrichProfiles": true,"providerOrder": "scrapecreators-first","maxConcurrency": 2}
Then read results with get-actor-output, keep matchStatus=found rows for outreach, and pass remaining emails to a validator or a different data source.
Pricing
This Actor uses Pay per event plus Apify platform usage. Open the live Pricing tab for current event details, and use Apify's run cost controls to keep the workflow aligned with your budget.
| Event | Price | Charged when |
|---|---|---|
| Actor start | $0.00005 | Once per run (scaled by memory) |
profile-found | $0.025 | One found LinkedIn profile saved |
profile-enriched | $0.02 | Additional, only when enrichment succeeded |
CLEAR rows, invalid input, and unmatched emails are not billed as profile-found.
| Run | Found rows | Enrichment | Event cost (approx.) |
|---|---|---|---|
| 1 work email, match | 1 | off | ~$0.025 |
| 1 work email, match | 1 | on | ~$0.045 |
| 40 emails, 28 found | 28 | off | ~$0.70 |
| 40 emails, 28 found | 28 | on | ~$1.26 |
Your run log prints the exact cost cap before any charge fires. Platform usage is billed on top at Apify's rates — the live Pricing tab is the current source of truth.
Best results
- Prefer
first.last@company.comwork emails; they produce name + company search queries. - Run Email Address Validator first when the list is messy, then look up the surviving addresses here.
- Keep
minConfidenceat 70 unless you have a reason to accept weaker name-only matches. - Turn on
enrichProfileswhen you need location, followers, or a company page URL for routing. - After you have profile URLs, pass them to LinkedIn Profile Details Scraper for the public about / experience view, or to LinkedIn Profile Email Scraper only when you started from a profile and need the reverse direction.
Builder's note
I built this after probing ScrapeCreators and SociaVault live: neither vendor exposes an email-to-LinkedIn endpoint, and quoted "email" site:linkedin.com/in searches are usually empty because people rarely publish their inbox on a public profile. The working public path is Google Search over LinkedIn /in/ results, using the name and company encoded in a work email, then scoring the hits so satya.nadella@microsoft.com keeps the Microsoft CEO and drops the identically named support specialist. That is why this Actor bills found profiles, writes honest CLEAR rows, and keeps ambiguous results out of the found set.
Responsible use
Use this Actor on emails you are authorized to process for legitimate sales, recruiting, research, or verification. It reads public web search results and public LinkedIn profile pages only. It does not log into LinkedIn, does not use your cookies, and is not a private people-graph or data-broker dump. Follow GDPR, CCPA, CAN-SPAM, LinkedIn's terms, and any local law that applies to your outreach. Honor opt-out and do-not-contact requests.
This tool is provided for lawful public-data collection. You are responsible for how you use the output.