LinkedIn Email Scraper API
Our LinkedIn email scraper reads the public contact fields of a profile or company and returns them as JSON: the external website, a phone number when listed, and an email when one is genuinely public. This LinkedIn email and lead scraper is honest by design, since a LinkedIn member's email is a private field that almost never appears logged-out.
Why it is hard
A LinkedIn member's email lives behind the logged-in "Contact info" modal, which needs a first-degree connection, so it is essentially never in the public page. What is public is the external website (companies expose it in their Organization data), so this endpoint returns a website far more often than an email, and the response says so on every call.
Quickstart
curl "https://api.linkedinscraperapi.com/api/v1/linkedin/email?url=https://www.linkedin.com/company/microsoft/&api_key=$API_KEY" import requests
BASE = "https://api.linkedinscraperapi.com"
API_KEY = "YOUR_API_KEY"
# Pass a /company/ or /in/ URL (or username= for a person).
data = requests.get(
f"{BASE}/api/v1/linkedin/email",
params={
"url": "https://www.linkedin.com/company/microsoft/",
"api_key": API_KEY,
},
timeout=30,
).json()
# website is the field that actually populates; email is usually null.
print("website:", data["website"])
print("email:", data["email"], "| phone:", data["phone"])
print(data["note"]) # states the member-email wall on every response Response
{
"url": "https://www.linkedin.com/company/microsoft/",
"is_company": true,
"email": null,
"website": "https://news.microsoft.com/",
"phone": null,
"note": "LinkedIn member emails are private (behind the logged-in \"Contact info\" modal) and are essentially never present in the public/logged-out page; only an external website (and rarely a company phone) is publicly exposed."
} | Field | Type | Description |
|---|---|---|
url | string | The canonical profile or company URL the lookup resolved to. |
is_company | boolean | True when the target is a /company/ page, false for a /in/ person profile. |
email | string | A public email when one is exposed (a mailto: link or an email field in the page data). Usually null, since member emails are private. |
website | string | The external website, the first non-LinkedIn URL in the Organization or Person data. The field that most often populates. |
phone | string | A phone number when the page lists one (mostly companies), otherwise null. |
note | string | A plain-language statement of the member-email wall, returned on every response so the scope is never ambiguous. |
Use it for
Company website enrichment
Lead qualification
Contact-channel discovery
CRM website backfill
Pricing
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
Can I get a LinkedIn member's email from this API?
Almost never, and we say so on every response. A LinkedIn member's email sits behind the logged-in "Contact info" modal, which requires a first-degree connection, so it is essentially never present in the public logged-out page. This endpoint returns the contact fields that are actually public, chiefly the external website, and returns email as null when no public address exists. It does not bypass the private Contact-info modal.
What does the LinkedIn email and lead scraper actually return?
It returns url, is_company, email, website, phone, and a note. In practice website is the field that populates, since companies expose their homepage in their Organization data. email and phone come back only when a mailto: or a listed number is genuinely public, and null otherwise. The note states the member-email wall in plain language so the scope is always clear.
Why is website populated but email null?
Because they have different visibility. A company's external website is part of the public Organization data LinkedIn renders logged-out, so it comes through reliably. A member's email is a private field gated behind a login and a connection, so it is not in the public page. That is why this endpoint returns a website far more often than an email, and why it is honest about the difference rather than implying it can reveal private addresses.
Can I pass a person profile as well as a company?
Yes. Pass a /in/ profile URL or a bare username to look up a person, or a /company/ URL to look up a company. The endpoint detects which it is and returns is_company accordingly. For people, website comes from the profile's public links when present; the email remains private in almost all cases.
Is it legal to collect contact data this way?
This endpoint only reads contact fields that are already public, and it is explicit about how little of that is an email. Collecting publicly available business data is generally permitted, but sending is regulated: laws such as the US CAN-SPAM Act require a working opt-out, and the EU GDPR requires a documented lawful basis. Treat any address as a public business contact, message people about genuine business reasons, and honor every unsubscribe. This is general information, not legal advice.
Do I need a LinkedIn login or the official API?
No. You only need a linkedinscraperapi key, passed as the api_key query parameter. There is no LinkedIn login, no cookies, and no Partner Program approval. We read the public logged-out page. The free tier includes 1,000 requests per month.