MindCase
Kritish Puri

Getting LinkedIn Work Emails Without Sales Navigator

One call turns a LinkedIn profile URL into a verified work email — no Sales Navigator seat, no chaining two separate vendors together.

linkedinproduct
Getting LinkedIn work emails without Sales Navigator

LinkedIn doesn't publish an email field on a profile, and it was never going to. The usual workarounds are a Sales Navigator seat, two separate vendors chained together — one to find the profile, another to resolve the email — or someone on your team copying names into a spreadsheet by hand. All three get there eventually. None of them are a single API call.

That two-vendor chain is the one worth looking at closely, because it's the version most teams already run without questioning it: a profile-search tool hands off a name, title, and company to a separate enrichment vendor, which guesses or resolves an email from those fields. Two accounts, two invoices, two rate limits to stay under, and a handoff step in between where the identity fields have to match cleanly or the enrichment call comes back empty. It works. It's also more moving parts than the job needs.

If you're an agent (or building one) reading this rather than a human, the full machine-readable schema for every endpoint below lives at mindcase.co/skills.md.

What makes finding a work email from LinkedIn hard?

A LinkedIn profile gives you a name, a title, and a company — enough to recognize someone, not enough to reach them. Sales Navigator closes that gap, but it's a recurring seat built for prospecting inside LinkedIn's own interface, not a lookup you call from a script. The other common route — a profile-search tool feeding a separate email-enrichment vendor — works, but it means running two subscriptions and reconciling two rate limits for what's really one task.

Email API does that task in one step: paste a profile URL, get back a verified work email. No login, no connection request, no second vendor.

If you've already built a shortlist using How to Use LinkedIn for Lead Generation, this is the step after it — turning that shortlist into people you can actually email.

How do you turn a LinkedIn profile URL into a work email?

If you already have the profile URL — from a CRM export, a list someone built by hand, or Company Employees API earlier in your pipeline — this is one call.

curl -X POST "https://api.mindcase.co/v1/data/linkedin/emails/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "params": {
    "urls": [
      "https://www.linkedin.com/in/jane-doe",
      "https://www.linkedin.com/in/john-smith"
    ]
  }
}'

# $0.02 per email

Each row returns two fields: profileUrl and email. That's the whole record — Email API doesn't guess at a pattern from a name and a company domain, it resolves the actual address tied to that profile and returns it verified. Company page URLs, post URLs, and search URLs aren't profiles and won't resolve — this only reads individual profile pages.

For a couple of URLs, wait=true returns the result inline within the request itself, which is what both examples above use. A list in the hundreds — the kind you'd build from a full company roster or a saved search — runs past that inline window, so drop wait and poll the job's results endpoint instead. The lookups themselves don't change, only how you collect them.

How do you get profile URLs if you don't have them yet?

Say you're building a partnerships list of Developer Advocates in the US — you don't have a list of profile URLs to start from, just a role and a region.

curl -X POST "https://api.mindcase.co/v1/data/linkedin/profiles/run?wait=true" \
-H "Authorization: Bearer $MINDCASE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "params": {
    "currentJobTitles": ["Developer Advocate", "Developer Relations Engineer"],
    "locations": ["United States"],
    "maxProfiles": 50
  }
}'

# $0.10 per search page (25 profiles) + $0.004 per enriched profile

Take the profileUrl field from each row this returns and feed it straight into Email API from the step above. Fifty profiles in, fifty email lookups out — two calls instead of a subscription.

Fifty profiles at $0.004 each is $0.20, plus two search pages at $0.10 each (50 profiles ÷ 25 per page) for $0.20 more — $0.40 to find the list. Fifty email lookups at $0.02 each add $1.00. A partnerships list of 50 Developer Advocates, from a job title and a country down to verified emails, costs $1.40 and two API calls. Not every row in that fifty will resolve to an email — the count you pay for at the emails step is emails actually returned, not URLs submitted, so the real total is usually a little lower than the ceiling.

What can't you get this way?

Two cases.

A profile with nothing public to resolve. If a person's LinkedIn presence doesn't carry enough signal to tie to a real, deliverable work address, that row comes back without one. The endpoint resolves a real mailbox rather than guessing a firstname.lastname@company.com pattern, so it doesn't fabricate a plausible-looking address to fill the gap either — an empty result here is more trustworthy than a wrong one — and since pricing is per email actually returned, not per URL submitted, that row doesn't add to the bill either.

Ongoing prospecting inside LinkedIn's own interface. If your team already has Sales Navigator seats and lives inside that UI — saved searches, InMail, list-building — an API doesn't replace that. It's built for a different motion: resolving a URL you already have, not managing a running outreach workflow with its own saved lists and message history inside LinkedIn itself. The seat and the API answer different questions, and a team doing heavy day-to-day prospecting inside LinkedIn is usually already paying for both.

Which endpoint should you use for which job?

EndpointInputPriceBest for
Email APILinkedIn profile URL(s)$0.02 / emailTurning a profile you already have into a contact
LinkedIn ProfilesProfile URL, or ICP filters$0.004 / profile (+ $0.10 / search page when searching by filters)Finding the profiles before you resolve emails for them
Company EmployeesOne company URL$0.004 / profileAccount-based outbound into one company — public profile data only, no email field

How do you use this data responsibly?

The email itself is resolved from public profile information, but what you do with it afterward is where the responsibility sits. Honor opt-out and do-not-contact requests immediately, don't hold onto an email longer than the outreach it was pulled for needs, and check outbound rules for the regions your list is based in before you send — those rules vary by where the recipient is, not where you are, and a list built globally in one call can span several of them at once.

Batch size matters too, separately from compliance. Run a small slice of your list through both steps first and read the actual emails that come back before you commit the rest of the budget — a bad batch costs more than the $0.02 per row, it costs the sender reputation of whatever inbox sends the follow-up.

FAQ

No. There's no login and no connection request. You pass a public profile URL and get back a work email if one resolves.

$0.02 per email returned through Email API. Finding profiles first through LinkedIn Profiles is $0.004 per profile, plus $0.10 per search page if you're searching by filters rather than a direct URL.

That row comes back without one rather than a guessed address. The endpoint only returns emails it can verify are tied to that specific profile.

Yes. Search LinkedIn Profiles by job title, company, or location first, then feed the profileUrl field from those results into Email API.