Last year we ran a partner webinar that pulled in 900 registrants. Great, right? Except half of them signed up with personal Gmail addresses, and sales wanted work emails.
But here’s what we DID have: LinkedIn profile URLs. The reps had been saving them for months. So over lunch, I ran those URLs through a LinkedIn email finder API, and the follow-up sequence went out to about 610 verified work addresses instead of a Gmail graveyard.
Reply rate roughly doubled compared to the previous webinar. Same content. Better inboxes.
Here’s how that works, where it fits in a lead generation stack, and the mistakes I made so you don’t have to.
What a LinkedIn email finder API actually does
A LinkedIn email finder API takes a profile URL and returns that person’s verified work email with a confidence score. One input, one structured answer:
linkedin.com/in/someone → lookup → work_email + confidence_level
Now, an important thing most people get wrong. The API does NOT scrape LinkedIn while you wait. Instead, the profile URL acts as a lookup key into a licensed contact database. CUFinder’s holds over 1 billion professional profiles. That’s why the call comes back in seconds, and why nothing ever touches your LinkedIn account or session.
The documented numbers for this endpoint: a 94% confidence score on matches, and 5 credits per record found. Not 100%. Nobody honest claims 100%, and we’ll get to what that gap means for your lists.

The call, in thirty seconds
This is the entire technical contract. One parameter, the profile URL:
from cufinder import Cufinder
client = Cufinder('your-api-key-here')
result = client.fwe('linkedin.com/in/iain-mckenzie')
# {
# "status": 1,
# "data": {
# "confidence_level": 94,
# "query": "linkedin.com/in/iain-mckenzie",
# "work_email": "iain.mckenzie@stripe.com",
# "credit_count": 9787
# }
# }
That’s it. No name, no company, no guessing email patterns. The full field list lives in the LinkedIn Profile Email Finder API reference, and it’s the same contract behind every lead generation workflow in this article.
📌 Remember: the email lives at data.work_email in the response, next to data.confidence_level. Read both, filter on the second.
And if you want the full Python pipeline (batching, retries, CSV in and out), I wrote the hands-on Python build as a separate tutorial. This page stays on strategy: the five workflows where the API earns its keep.
Workflow 1: Enrich an event or webinar list
So where does this actually earn its keep? Start with the story I opened with, because it generalizes to every event you’ll ever run.
People register for webinars and conferences with whatever email keeps their work inbox clean. But their LinkedIn profile is their professional identity. And if your team captured profile URLs during registration, prospecting, or badge scans, you’re sitting on a goldmine with no email column.
The workflow: export the list, batch the profile URLs through the email finder, and sequence ONLY the verified addresses. My webinar run went 900 URLs in, roughly 610 verified work emails out. The gap is normal. Don’t fight it. A smaller list of real inboxes beats a bigger list of guesses every single time.
Timing matters more than people think here. Event interest decays fast. A follow-up that lands two days after the webinar gets read; the same email three weeks later is a cold email with a name-drop. Because the lookups run in minutes, not intern-weeks, you can hit the window while your talk is still in short-term memory.
Workflow 2: Fill the email gap in your CRM
Your CRM is full of contacts with profiles and no inboxes. This is the fix.
Every SDR who saves a prospect from LinkedIn creates a contact record with a profile URL and an empty email field. Multiply that by a year of prospecting and you’ve got hundreds of half-records nobody can sequence.
The pattern is simple, and it’s honest about who does what. Your workflow tool (HubSpot workflows, Salesforce Flow, Zapier, whatever you run) watches for new contacts that have a linkedin_url and no email. It calls the API. Then it writes back two fields: work_email and the confidence score. The API is the middle piece. The trigger and the write-back belong to your stack.
Store the confidence score. Future-you, deciding which segment gets the aggressive sequence, will thank present-you.
Workflow 3: Turn Sales Navigator lists into sequences
This is the classic outbound loop: build a prospect list in Sales Navigator, collect the profile URLs, resolve them to emails, load the sequencer.
Two honest notes from running this. First, match rates dip on certain profiles: students, career-gap folks, very small companies. Budget for that instead of being surprised by it. Second, the reason the reply-rate math works is that you’re landing in the person’s REAL work inbox, not an address pattern-guessed from firstname.lastname@domain.
And if you have an ICP but no profile URLs yet? Flip the order: use Person Search to find the people first (it filters by role, company size, location, and industry), then resolve emails for the ones that fit.
Workflow 4: Recruiting outreach
Same mechanic, different audience. Recruiters live on LinkedIn, and InMail response rates are what they are. A candidate’s profile URL resolves to a work email exactly the same way a prospect’s does.
One etiquette rule I’d underline twice: candidates didn’t opt into your pipeline. Keep it short, make it specific to THEIR background, and send one follow-up, not five. The API gets you the inbox; what you do with it decides whether you’re a recruiter or a spammer.
A recruiter friend of mine runs this weekly: shortlist on Monday, enrich and resolve emails Tuesday morning, personalized notes out by lunch. Her reasoning is blunt: everyone InMails, almost nobody writes a good email. The channel itself is the differentiation.
Workflow 5: Chain it with profile enrichment
Here’s the one most teams miss. The email finder returns the EMAIL, nothing else. But the same profile URL, passed to LinkedIn Profile Enrichment, returns the person’s title, company, company size, industry, and location. Together they build a lead record you can route and score:
profile URL → enrichment (1 credit: title, company, location) → email finder (5 credits: work email) → CRM
Notice the order. Enrichment costs 1 credit; the email lookup costs 5. So enrich FIRST, check the person against your ICP, and only pay for emails you’ll actually use. On a 1,000-profile list where only 60% fit your ICP, that ordering saves real money, and it keeps junk out of your CRM as a bonus.
Before you hit send: verification and deliverability
That’s the happy path. Now the part that saves your sender reputation.
Confession time. The first time I ran a batch like this, I sequenced EVERY address that came back, no filtering. That earned me a 6% bounce rate, and bounce rates are how mailbox providers decide you’re a spammer. Google’s bulk sender guidelines want spam rates parked well under half a percent, and a bouncy list is the fastest way to blow past that.
So treat the confidence score as a filter, not decoration. My rule now:
- High confidence: straight into the sequence
- Below your bar: route to a re-verification step, or drop it
- Catch-all domains (servers that accept mail for ANY address, so verification can’t fully confirm the inbox): send low volume, watch the bounces
🧠 Sanity check: pick a confidence bar BEFORE the batch run, and route everything under it to re-verification. Deciding after the export never happens.
What it costs and where the limits are
The pricing shape is simple: 5 credits per record FOUND. No-match lookups generally aren’t charged. Duplicates ARE, so dedupe your list before the run.
The rate limit is 100 requests per minute per key, on a fixed 60-second window; past that you’ll see HTTP 429 until the window resets. Details on the usage limits page. For a batch of a few thousand URLs, that’s an overnight run with pacing, not a problem.
And here’s the cost framing that actually matters: price per VERIFIED contact, not price per API call. A cheap lookup that returns risky addresses costs you bounces, reputation damage, and wasted sales touches downstream. Salesforce’s State of Sales research keeps finding reps spend only around a quarter to a third of their week actually selling. Don’t hand the saved research time back as bounce cleanup.
💡 Sequence math: 900 URLs → ~610 verified work emails → one sequence, zero pattern-guessed addresses. Budget for the gap; don't force it shut with risky emails.
Is this compliant?
Using a licensed B2B database keyed by profile URLs is standard industry practice; live-scraping LinkedIn is what violates the LinkedIn User Agreement. That distinction matters. The API route never logs into, crawls, or automates LinkedIn itself.
Your obligations sit on the OTHER side: how you store and use the data. The short version for B2B outreach:
- Have a lawful basis under GDPR for EU contacts (legitimate interest is the usual one for relevant B2B outreach, documented, not assumed)
- Honor opt-outs immediately, and make opting out easy
- Delete on request: CCPA and GDPR both grant deletion rights
I’m a marketer, not a lawyer. For anything regulated or high-volume, get real legal advice. But the pattern above keeps honest teams out of trouble.
Frequently asked questions
Is it possible to get someone’s email from LinkedIn?
Yes, three ways: it’s listed in their contact info, they share it with you, or an email finder API matches their profile to a licensed contact database. The third is the only one that works at scale.
How do I extract emails from LinkedIn?
Don’t extract. Look up. Scraping profiles for contact data violates LinkedIn’s User Agreement and mostly fails anyway, since emails rarely appear on profiles. Passing profile URLs to an email finder API gets the same outcome legitimately.
Does a LinkedIn email finder API violate LinkedIn’s terms?
The API itself doesn’t touch LinkedIn. It queries its own licensed database using the URL as a key. Your compliance duties are about privacy law and email practice, not LinkedIn’s platform rules.
How are people getting my emails from LinkedIn?
Through licensed B2B contact databases assembled from public and partner sources, matched to your profile. If you’d rather not be in them, GDPR and CCPA give you access and deletion rights with any provider.
What input does the API need?
Just the LinkedIn profile URL. The linkedin_url parameter is the only required attribute. No name, company, or domain needed for this endpoint.
What match rate should I expect?
Never 100%. Active professionals at established companies match best; students, tiny companies, and dormant profiles match worst. My webinar list came back around two-thirds. Plan your sequence volume on that kind of number.
Is there a free LinkedIn email finder API?
Several vendors, CUFinder included, offer free trials or starter credits, and that’s the right way to test match rates on YOUR list before committing. Watch verification quality on free tiers. A free email that bounces isn’t free.
What does each lookup cost?
On the CUFinder endpoint, 5 credits per record found; no-match lookups generally aren’t charged. Dedupe before bulk runs, because duplicate lookups do consume credits.
Go find those emails
Five workflows, one endpoint:
event lists → CRM gaps → Sales Navigator loops → recruiting → enrichment chains
Start with whichever list is annoying you most right now. For me it was a webinar export. Filter on confidence, mind the bounce budget, and if you want to build the pipeline yourself, the Python tutorial is waiting. More lead generation recipes live in the API workflow guides.
Which of the five would move your pipeline first? Tell me. I read the replies.
