LinkedIn Profile Scraper with Email (No Cookies)
Pricing
from $10.00 / 1,000 results
LinkedIn Profile Scraper with Email (No Cookies)
Extract structured data from public LinkedIn profile URLs — name, headline, work history, education, follower counts, websites. When the person has published their own email or phone openly in their profile content, the exact sentence is cited so you can verify each match. (Beta)
Pricing
from $10.00 / 1,000 results
Rating
0.0
(0)
Developer
Rush
Actor stats
1
Bookmarked
9
Total users
7
Monthly active users
4 days ago
Last modified
Categories
Share
LinkedIn Profile Scraper
Extract structured data from public LinkedIn profile URLs — name, headline, work experience, education, follower counts, websites. When the person has published their own email or phone openly in the visible profile, those are surfaced too with a short excerpt of the surrounding text, so you can verify each match against where it appeared on the profile.
Paste profile URLs in, get a clean dataset out.
What you get per profile
Every row in the output dataset includes:
| Field | What it is |
|---|---|
firstName, lastName, fullName | The person's name |
headline | The one-line summary under the name (current role, often "Title at Company") |
about | The longer "About" / bio text |
location, city, country | Full location label, the city alone, and the two-letter country code |
profilePictureUrl | Direct link to the profile photo |
linkedinBadge | LinkedIn's profile badge (e.g. Top Voice, Creator, Creator, Top Voice) when shown, otherwise null |
followerCount | The number of followers shown on the profile |
connectionCount | The number of connections shown on the profile. Empty when the profile shows "500+" rather than an exact number |
experiences[] | Each visible position with title, company, company LinkedIn link, dates, and a current/past flag |
experiencesTruncated | true when the visible work-history list may not be complete |
currentCompany, currentTitle, currentCompanyLinkedinUrl | The most recent position pulled out of experiences[] so it's easy to use in a spreadsheet |
educations[] | Each visible school with degree and field of study where LinkedIn shows them |
emails[] | Every email we found on the visible profile, each tagged with which field it came from (source) and a short surrounding excerpt (sourceContext) so you can verify it at a glance. Most public profiles don't include an email — when one is visible, this lists each match |
email | The first email from emails[] — easy to drop into a single-column export |
phones[] | Every phone we found, in international format, with the same source-citation as emails |
phone | The first phone from phones[] |
websites[] | Personal or company sites the person linked from their profile |
inputUrl | The URL exactly as you submitted it — useful for joining the dataset back to your input list |
linkedinUrl, publicIdentifier | The cleaned LinkedIn URL plus the handle that comes after /in/ |
urn | LinkedIn's stable identifier for the person — useful for de-duplication, because unlike the handle it doesn't change when someone updates their profile URL |
extractionWarnings | Short notes about parts of the profile that were not visible — omitted when everything came through cleanly |
succeeded, error, extractedAt | Whether the row was retrieved cleanly, the reason if not, and when |
Sample output (real cloud fetch)
Input:
{"profileUrls": ["https://www.linkedin.com/in/satyanadella"]}
Output (truncated for brevity):
{"inputUrl": "https://www.linkedin.com/in/satyanadella","linkedinUrl": "https://www.linkedin.com/in/satyanadella","publicIdentifier": "satyanadella","urn": "urn:li:member:19186432","succeeded": true,"extractedAt": "2026-05-04T02:30:00.000Z","firstName": "Satya","lastName": "Nadella","fullName": "Satya Nadella","headline": "Chairman and CEO at Microsoft","about": "As chairman and CEO of Microsoft, I define my mission and that of my company as empowering every person and every organization on the planet to achieve more.","location": "Redmond, Washington, United States","city": "Redmond","country": "US","profilePictureUrl": "https://media.licdn.com/dms/image/v2/C5603AQHHUuOSlRVA1w/profile-displayphoto-shrink_200_200/0/1656708712373","linkedinBadge": "Creator, Top Voice","followerCount": 11972578,"connectionCount": null,"experiences": [{"title": "Chairman and CEO","company": "Microsoft","companyLinkedinUrl": "https://www.linkedin.com/company/microsoft","startedOn": "2014-02","endedOn": null,"isCurrent": true,"durationMonths": 147},{"title": "Member Board Of Trustees","company": "University of Chicago","companyLinkedinUrl": "https://www.linkedin.com/school/uchicago/","startedOn": "2018","endedOn": null,"isCurrent": true,"durationMonths": 100},{"title": "Board Member","company": "Starbucks","companyLinkedinUrl": "https://www.linkedin.com/company/starbucks","startedOn": "2017","endedOn": "2024","isCurrent": false,"durationMonths": 84}],"currentCompany": "Microsoft","currentTitle": "Chairman and CEO","educations": [{"school": "The University of Chicago Booth School of Business","degree": null,"field": null,"startedOn": "1994","endedOn": "1996"},{"school": "Manipal Institute of Technology, Manipal","degree": "Bachelor's Degree","field": "Electrical Engineering","startedOn": null,"endedOn": null},{"school": "University of Wisconsin-Milwaukee","degree": "Master's Degree","field": "Computer Science","startedOn": null,"endedOn": null}],"websites": ["https://snscratchpad.com/"],"emails": [],"email": null,"phones": [],"phone": null}
When email or phone information appears in the public profile, you'll see entries like:
"emails": [{"email": "jane.doe@acme.vc","source": "about","sourceContext": "…VC partner at Acme. Reach me at jane.doe@acme.vc for intros…","isObfuscated": false}]
extractionWarnings looks like:
"extractionWarnings": ["this is a limited public view — most fields may be empty","work history section was empty for this profile"]
Input format
{"profileUrls": ["https://www.linkedin.com/in/williamhgates","https://www.linkedin.com/in/satyanadella"]}
URL formats accepted:
https://www.linkedin.com/in/{handle}— the standard format- Country-prefixed links such as
https://br.linkedin.com/in/{handle}— tidied up automatically - Trailing slashes and tracking parameters are tidied up automatically — no need to clean URLs by hand
- URLs pointing to the same person are processed only once per run, even when submitted in different formats
What's not in the output
These fields don't appear on the public profile pages this actor reads:
mobileNumberas a separate field — phones live inphones[]only- "Verified email" status — the output reports what was found, not whether the address is currently deliverable
skills,languages,certifications,publications,volunteer,recommendations,honors,projects- Per-experience
locationanddescription— these are part of the row shape but LinkedIn doesn't include them on the public profile view, so they come backnull - Verification badge
- Company industry / size / website / founded year — these live on each company's own page rather than the person's profile
FAQ
Why is email sometimes null?
We surface an email only when the person has published it themselves on the visible profile. We don't guess from name + domain patterns and we don't query third-party email databases. If you see null, the person simply didn't include one.
What does "cited email" mean?
Every email and phone in the output includes the field name (source) and a short surrounding excerpt (sourceContext), so you can audit each match against where it appeared on the profile.
Why does about sometimes come back null?
LinkedIn hides the bio section for some profiles. When that happens, we leave about empty and add a note to extractionWarnings so you can see why the field is blank for that row.
Do you support Sales Navigator URLs? No — see "Input format" above for the URL formats this actor accepts.
Can I scrape private profiles?
No. The row will appear in your dataset with succeeded: false so you can see which inputs didn't yield data.
Why do I sometimes see "LinkedIn asked us to sign in — try again later"? This means LinkedIn didn't return the public profile content for that request. It's usually transient — the affected row is marked failed and you can re-run the URL later.
Why do some profiles consistently return "could not load this profile"? The same message covers two situations that look identical from outside: (1) the handle in the URL doesn't match any profile (typo or made-up name), or (2) LinkedIn is currently restricting public access to that profile. There's no way to tell them apart from the response itself, so the message names both possibilities. First check the URL spelling; if the profile loads fine in your own browser but consistently fails here, the second case is the most likely.
Will scraping LinkedIn at scale get me into trouble? You are responsible for ensuring your use of this actor complies with applicable terms of service, data-protection laws (GDPR, CCPA, etc.), and any rules in your jurisdiction.
What if a profile's data looks incomplete?
Some sections aren't visible on every profile. Missing parts are listed in extractionWarnings.
Could a profile appear twice in my dataset?
Rarely. If a run is interrupted and resumed, a few profiles already delivered may be processed again. If duplicate-free output matters, deduplicate on linkedinUrl — that field is normalised, so the same person comes back as the same string regardless of which URL form was submitted.
Why do I sometimes see 🔁 "trying again" in the logs? The actor will retry a profile on its own when the first attempt didn't succeed. This is automatic and you don't need to do anything.
Disclaimer
This actor reads only publicly visible information from LinkedIn profile pages — the same content any logged-out visitor would see. No LinkedIn account or login of yours is required.
You are responsible for complying with applicable terms of service, data protection laws (GDPR, CCPA, etc.), any contractual obligations relating to the data you collect, and the rules of your jurisdiction.
This actor is in active development (beta). It may contain undiscovered bugs or edge cases, and LinkedIn occasionally changes its public profile pages — when that happens, some fields may temporarily come back empty until the actor is updated. Before running a large batch, try the actor on a small sample (5–10 profiles) to confirm the output meets your needs. If you encounter unexpected behaviour, please report it through the actor's page on Apify Store and include a sample input that reproduces the issue.
The actor is provided as-is, with no warranty of accuracy, completeness, or fitness for any particular purpose.
LinkedIn is a registered trademark of LinkedIn Corporation. This actor is not affiliated with, endorsed by, or sponsored by LinkedIn.
Try other Apify actors by the same author
Browse the catalogue: apify.com/futurizerush
LinkedIn Profile Scraper, LinkedIn Email Finder, Lead Generation, Bulk LinkedIn Extractor, Public Profile Data, B2B Sales Data, Recruiter Tool, Contact Enrichment, Claude Code, OpenClaw, Gemini, Antigravity, Codex, ChatGPT