LinkedIn Profile Scraper + Email (No Cookies)
Pricing
from $5.50 / 1,000 results
LinkedIn Profile Scraper + Email (No Cookies)
Scrape public LinkedIn profiles in bulk with no login or cookies. Get jobs, education, skills, certifications, company data and a work email with confidence score. Spot job changes between runs. Clean JSON for lead enrichment, recruiting and sales prospecting.
Pricing
from $5.50 / 1,000 results
Rating
0.0
(0)
Developer
Data WiKi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Features
Share
🚀 What is LinkedIn Profile Scraper + Email?
LinkedIn Profile Scraper + Email is an Apify Actor that turns public LinkedIn profile links into one row per person: jobs, education, skills, employer details and an inferred work email. It needs no login or cookies and reads only what a visitor sees. Download the rows as JSON, CSV or Excel.
- No account to manage: This LinkedIn profile scraper without login needs no cookies, so there is no password or session to provide. You can scrape LinkedIn profiles without login this way.
- Runs in the cloud: you can use the LinkedIn profile scraper online from the Apify Console, with nothing to install.
- Bulk lists: paste many links or profile names at once and duplicates are removed. A bulk LinkedIn profile scraper run needs nothing more than a list.
- Work email with a status: the LinkedIn profile scraper email search infers a likely address and labels how it was reached, because an inferred address can be wrong.
- Job-change comparison: compare a run with an earlier dataset to see who changed role or employer.
📊 What data can you extract from LinkedIn?
The Actor works as a LinkedIn profile data extractor for public pages and returns 61 fields per profile. It can only return what the page shows to a logged-out visitor, so many fields can be null. These are the main fields:
| Field | Description | Example |
|---|---|---|
fullName, firstName, lastName | Name as shown on the public profile | Alex Example |
headline | Headline under the name | Head of Sales at Example Corp |
location | Location text, country code and parsed place | Example City, Exampleland |
followerCount, connectionsText | Followers and the connections text | 1200 |
currentCompany, currentTitle | Current employer and role | Example Corp |
experience | One entry per job with position, company and dates | Head of Sales |
education | Schools, degrees and dates | Example University |
skills, topSkills | Skills listed on the profile | Negotiation |
seniority, department | Worked out by the Actor from the job title | director, sales |
yearsOfExperience, averageTenureMonths, monthsInCurrentRole | Worked out by the Actor from the job dates | 9.5 |
company | Employer website, industry, size, headquarters and employee count | Software Development |
email, emailStatus, emailConfidence, emailNote | Inferred work email, how it was reached, a fixed score and a note | smtp_unavailable |
moreProfiles | The similar profiles cards shown on the page | list of profiles |
recentPosts, recentArticles | Recent public posts and articles shown on the page | list of items |
jobChange, changes | Differences from an earlier run, only with compareWith | true |
profileVisibility, completeness, dataWarnings | How much the page showed and why a row may be thin | partial, 70 |
status, error, scrapedAt, query | Result status, note, time and your input | ok |
The same data also covers certifications, projects, volunteering, publications, honorsAndAwards, languages, courses, organizations and receivedRecommendations. Each row also carries the recent public posts and articles that the page shows.
Hidden or masked values stay null and are counted in blurredValues. Photo links can expire.
💡 Use cases for LinkedIn profile data
- Lead lists: use it as a LinkedIn lead generation tool for people you already picked, with title, company and a likely email in one table. Export the rows as a LinkedIn lead list to Excel for your team.
- Sales prospecting: build a sales prospecting list from LinkedIn profiles using
currentTitle,seniority,departmentand thecompanydetails. The list stays short enough for your reps to check by hand. - Prospect lists: build a prospect list from LinkedIn links your team collected, then read each
emailStatusbefore any outreach. - B2B enrichment: run B2B lead enrichment with email on contacts you already hold, and use
emailStatusto decide which addresses to review first. - CRM clean-up: add
headline,currentCompanyandlocationto existing records for LinkedIn CRM enrichment. - Profile enrichment: LinkedIn profile enrichment adds job and skill data to people you already know.
- Contact enrichment: LinkedIn contact enrichment adds the
companydetails of each person's current employer. - Single records: LinkedIn person enrichment of one record at a time works the same way, with one link.
- Recruiting research: read
experience,educationandskillsof candidates you already know as one step of a LinkedIn recruiting sourcing tool of your own. Candidate research from LinkedIn profiles then starts from structured rows. - Job-change alerts: schedule the same list and use
compareWithas a LinkedIn job change tracker for key contacts, readingjobChangeandchanges. - Talent mapping: use
department,seniorityandskillsfor talent mapping from LinkedIn profiles in a team or an industry you follow. - Research datasets: collect
skillsandtopSkillsinto a LinkedIn skills dataset for labour-market research.
🛠️ How to scrape LinkedIn profiles
- Create a free Apify account and open the Actor in the Apify Store, nothing to install.
- Paste profile links into Profile links to extract data from LinkedIn profiles. You can also add profile names or a mixed list.
- Set Max profiles (0 means no cap) and choose What to collect: profile details only, or profile details plus email search.
- Click Start and watch the log. Each profile appears in the Output tab as soon as it is saved.
- Download the dataset as JSON, CSV or Excel, or read it through the API.
- Schedule the Actor if you want to run the same list again, and pick the earlier dataset in Compare with earlier run to see job changes.
💰 How much does it cost to scrape LinkedIn?
Pricing is pay per event: you pay for each profile row the Actor saves, and nothing for rows that fail.
- Results (
main_result): charged once for every saved row with the statusokorok_alias. A profile that the page showed only in part still counts as a saved row. - Actor start (
apify-actor-start): $0.00005 per run. The Actor is set to 1024 MB of memory, which is one GB, so the start fee is one event.
| Plan tier | Price per 1,000 results |
|---|---|
| Free | $8.00 (0.008 x 1,000) |
| Bronze | $7.20 (0.0072 x 1,000) |
| Silver | $6.50 (0.0065 x 1,000) |
| Gold and above | $5.50 (0.0055 x 1,000) |
Example: 500 profiles on the Gold tier cost 500 x $0.0055 = $2.75 plus the $0.00005 start fee. The same 500 profiles on the Free tier cost 500 x $0.008 = $4.00 plus the start fee. Apify platform usage (compute) is billed on top of the events above.
You can set a maximum spend per run. The Actor then stops cleanly and keeps the rows already saved. See the Pricing tab for current rates.
⬇️ Input
Only Profile links (urls) is required. You can add profile names in publicIdentifiers, a mixed list in queries, and long member IDs in profileIds. Member IDs that start with ACoA usually come back as not_found, so links and names work best. Open the Input tab for every option.
This example uses two fictional profiles with the email search on:
{"urls": ["https://www.linkedin.com/in/example-person-one","https://www.linkedin.com/in/example-person-two"],"maxProfiles": 10,"profileScraperMode": "Profile details + email search","emailVerification": "smtp","acceptUnverifiedEmail": false}
maxProfiles: stops after this many profiles. The default is 10, the allowed range is 0 to 1,000,000, and 0 means no cap.profileScraperMode:Profile detailsorProfile details + email search.emailVerification:smtpasks the employer's mail server whether the address exists (no mail is sent).nonereturns ranked guesses without checking them.acceptUnverifiedEmail: off by default. When no address could be confirmed,emailstaysnullunless you turn this on.includeCompany,includeSimilarProfiles,includeActivity: switch the employer details, similar profiles and recent posts on or off. Company details are always on when the email search is on.outputFieldsandexcludeFields: keep only some fields, or remove fields, in each row.compareWith: pick the dataset of an earlier run to addchangesandjobChange.proxyConfiguration: proxy settings. The run starts without a proxy and switches to a proxy if requests are refused.
💡 Start with a low
maxProfilessuch as 10 to check the output before you run a long list.
⬆️ Output
The scraped results are shown as a dataset in the Storage tab. The table view is for convenience and does not show all the fields. Results are split into several tables (profiles, emails, company, experience, education, skills and more). A second table lists every input with its status, and a run summary record holds the totals. You can export JSON, CSV, Excel, HTML or XML, and you can export LinkedIn profiles to CSV with only the columns you choose. The JSON output has one object per profile, which suits LinkedIn profile data for AI notebooks or agents.
This is a fictional, shortened row from the input above. It does not describe a real person:
{"publicIdentifier": "example-person-one","linkedinUrl": "https://www.linkedin.com/in/example-person-one","firstName": "Alex","lastName": "Example","fullName": "Alex Example","headline": "Head of Sales at Example Corp","followerCount": 1200,"currentCompany": "Example Corp","currentTitle": "Head of Sales","seniority": "director","department": "sales","experience": [{ "position": "Head of Sales", "companyName": "Example Corp", "isCurrent": true }],"company": { "name": "Example Corp", "website": "https://www.example.com", "industry": "Software Development" },"email": null,"emailStatus": "smtp_unavailable","profileVisibility": "public","status": "ok","completeness": 70,"query": "https://www.linkedin.com/in/example-person-one"}
⚠️ Limitations and error handling
- As a LinkedIn public profile scraper, the Actor reads only public pages as a visitor. Private, login-only, premium and contact-hidden data is never collected, and those fields stay
null. - It needs links or names. It does not search LinkedIn for people.
- It is a LinkedIn data extractor for single profiles and their current employer, not for whole companies.
- It does not send messages or connection requests.
- Requests are paced on purpose and the Actor slows down when LinkedIn limits requests, so very long lists take time. Run a small test to see how it behaves for your list.
- The email is inferred from the person's name and the employer's website, so use it as a bulk LinkedIn email finder only for profiles you already have. The mail-server check may be unavailable, so results vary, and the domain can be wrong when it has to be taken from the company name.
- The
statusfield tells what happened to each input:
| Status | Meaning | What to do |
|---|---|---|
ok | Profile read and saved (charged). | Nothing. |
ok_alias | The page belongs to a different identifier than requested; saved (charged). | Check identifierMatchesRequest. |
not_found | The profile is not available or is private. | Check the link. Not charged. |
blocked | LinkedIn kept refusing requests. | Try again later. Not charged. |
error / parse_error | The profile could not be loaded or read. | Retry later. Not charged. |
skipped | Not saved because the spend limit was reached. | Raise the limit and run again. Not charged. |
Only rows with the status ok or ok_alias go into the main dataset and are charged. The other rows appear in the input status table at no charge.
🔌 Integrating LinkedIn Profile Scraper + Email with other apps
You can run this LinkedIn profile scraper Apify Actor from the Apify API, on a schedule, or from webhooks that fire when a run finishes. Ready-made code samples are in the API tab. The Apify integrations connect the dataset to Make, Zapier, Google Sheets, Slack and Airbyte. A LinkedIn profile scraper n8n workflow can call the Actor through the Apify node.
Use a schedule to run the same list weekly and use compareWith to catch job changes. Called from your own code, it is a LinkedIn profile data scraper you can script. To start a run, send a request to https://api.apify.com/v2/actors/data_wiki~linkedin-profile-scraper-email-no-cookies/runs.
🔗 Other scrapers for leads and profile data by data_wiki
None of these other Actors reads LinkedIn. They are related by use case: public profile or lead data without a login.
| Actor | What it extracts | When to use it |
|---|---|---|
| Facebook group scraper | Posts, comments, authors, emails and member counts of public groups | You research leads or a community on Facebook. |
| Douyin profile scraper | Followers, bio, posts and hashtags of public Douyin creators | You need public creator profiles from Douyin. |
| Instagram hashtag scraper | Public reels by hashtag with creator and engagement data | You want to find creators by hashtag. |
| Facebook comment scraper | Comments and replies from public Facebook posts | You want comment data for sentiment or lead research. |
| Airbnb price and availability scraper | Airbnb listings, nightly prices, availability | When you research the rental market itself before looking up companies |
| Company emails and phones from websites | Emails, phones and social links published on company websites | You have company domains rather than person profiles |
| Glassdoor job postings scraper | Public Glassdoor job ads with salary range, company rating and apply link | When you research open roles and pay next to LinkedIn profile data |
| Batch LinkedIn profile details scraper | Profile sections, career insights, employer details and an email lookup for a list of profiles, with a record of where each section came from | You want one list with no maximum-profiles input and a source option. |
For help with runs, see the Apify documentation.
⚖️ Is it legal to scrape LinkedIn?
The Actor collects only data that is visible to visitors without a login, and it does not collect private, premium or login-only data. That does not make every use lawful. The profile data is personal data: names, job history, photos, locations and inferred emails.
- You decide the purpose. You need a lawful basis to collect and store the data, for example under GDPR or CCPA, and you must handle access and deletion requests.
- Outreach rules apply. Anti-spam and e-privacy laws apply to any email you send, and an inferred address may belong to someone else or not exist.
- Check the site's terms. LinkedIn's terms may restrict automated collection, and you decide and carry the risk.
- Collect less. Use
outputFieldsandexcludeFieldsto keep only what you need, and delete data you no longer need.
This is not legal advice, and the Actor makes no promise that your use is lawful. Talk to a lawyer if you are unsure. See Apify's posts on the legality of web scraping and ethical web scraping.
❓ FAQ
Is it legal to scrape LinkedIn data?
It depends on your country, your purpose, how you handle personal data and the site's terms. The Actor reads only public pages, but you remain responsible for your use. This is not legal advice, so read the legality section above and ask a lawyer if you are unsure.
Can you scrape LinkedIn profiles without an account?
Yes. The Actor needs no login or cookies. The trade-off is that you only get the partial view that logged-out visitors see.
How accurate is the work email?
Treat it as an inferred address, not a fact. The Actor builds likely addresses from the name and the employer's website, and in smtp mode asks the employer's mail server whether one exists. Many servers accept everything or refuse such checks, and the check may be unavailable, so results vary. Read emailStatus and emailConfidence, which is a fixed score per outcome and not a probability.
How do I find work email from LinkedIn profile data?
Use it as a LinkedIn work email finder by choosing Profile details + email search and keeping emailVerification on smtp. The result is an inferred address with a status. A LinkedIn profile to email finder like this starts from a profile link and ends with that address. You can find email from LinkedIn profile links in bulk, with a status for each address. The Actor sends no email.
Why is the email empty?
When no address could be confirmed and Show best unverified guess is off, email stays null and emailStatus says why. LinkedIn does not show emails to logged-out visitors, so the Actor does not read them from the page.
Why are some fields empty?
The Actor sees only what the public page shows, and the page did not show them. Blurred or hidden values stay null, and dataWarnings and profileVisibility explain thin rows.
Does this LinkedIn profile scraper need proxies?
No. The Actor needs no cookies or proxy settings to start. The run starts without a proxy and switches to a proxy when LinkedIn refuses requests. You can set proxy settings in the input.
How many profiles can I scrape?
Set maxProfiles up to 1,000,000, or 0 for no cap. Requests are paced, so run a small test first to see how long your list takes.
Can I use it through an API or an AI agent?
Yes. Start it from the Apify API or use the hosted Apify MCP server at https://mcp.apify.com, where an agent can find the Actor with search-actors, read it with fetch-actor-details and run it with call-actor. AI agents can use it as a LinkedIn profile scraper on links you provide.
💬 Your feedback
Found a bug or need another field? Open an issue in the Issues tab of the Actor. Need a custom solution? Contact hello.datawiki@gmail.com.