LinkedIn Profile Scraper + Email (No Cookies) avatar

LinkedIn Profile Scraper + Email (No Cookies)

Pricing

from $5.50 / 1,000 results

Go to Apify Store
LinkedIn Profile Scraper + Email (No Cookies)

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

Data WiKi

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Features

Limited permissions

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:

FieldDescriptionExample
fullName, firstName, lastNameName as shown on the public profileAlex Example
headlineHeadline under the nameHead of Sales at Example Corp
locationLocation text, country code and parsed placeExample City, Exampleland
followerCount, connectionsTextFollowers and the connections text1200
currentCompany, currentTitleCurrent employer and roleExample Corp
experienceOne entry per job with position, company and datesHead of Sales
educationSchools, degrees and datesExample University
skills, topSkillsSkills listed on the profileNegotiation
seniority, departmentWorked out by the Actor from the job titledirector, sales
yearsOfExperience, averageTenureMonths, monthsInCurrentRoleWorked out by the Actor from the job dates9.5
companyEmployer website, industry, size, headquarters and employee countSoftware Development
email, emailStatus, emailConfidence, emailNoteInferred work email, how it was reached, a fixed score and a notesmtp_unavailable
moreProfilesThe similar profiles cards shown on the pagelist of profiles
recentPosts, recentArticlesRecent public posts and articles shown on the pagelist of items
jobChange, changesDifferences from an earlier run, only with compareWithtrue
profileVisibility, completeness, dataWarningsHow much the page showed and why a row may be thinpartial, 70
status, error, scrapedAt, queryResult status, note, time and your inputok

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, department and the company details. 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 emailStatus before any outreach.
  • B2B enrichment: run B2B lead enrichment with email on contacts you already hold, and use emailStatus to decide which addresses to review first.
  • CRM clean-up: add headline, currentCompany and location to 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 company details 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, education and skills of 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 compareWith as a LinkedIn job change tracker for key contacts, reading jobChange and changes.
  • Talent mapping: use department, seniority and skills for talent mapping from LinkedIn profiles in a team or an industry you follow.
  • Research datasets: collect skills and topSkills into a LinkedIn skills dataset for labour-market research.

🛠️ How to scrape LinkedIn profiles

  1. Create a free Apify account and open the Actor in the Apify Store, nothing to install.
  2. Paste profile links into Profile links to extract data from LinkedIn profiles. You can also add profile names or a mixed list.
  3. Set Max profiles (0 means no cap) and choose What to collect: profile details only, or profile details plus email search.
  4. Click Start and watch the log. Each profile appears in the Output tab as soon as it is saved.
  5. Download the dataset as JSON, CSV or Excel, or read it through the API.
  6. 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 status ok or ok_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 tierPrice 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 details or Profile details + email search.
  • emailVerification: smtp asks the employer's mail server whether the address exists (no mail is sent). none returns ranked guesses without checking them.
  • acceptUnverifiedEmail: off by default. When no address could be confirmed, email stays null unless 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.
  • outputFields and excludeFields: keep only some fields, or remove fields, in each row.
  • compareWith: pick the dataset of an earlier run to add changes and jobChange.
  • proxyConfiguration: proxy settings. The run starts without a proxy and switches to a proxy if requests are refused.

💡 Start with a low maxProfiles such 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 status field tells what happened to each input:
StatusMeaningWhat to do
okProfile read and saved (charged).Nothing.
ok_aliasThe page belongs to a different identifier than requested; saved (charged).Check identifierMatchesRequest.
not_foundThe profile is not available or is private.Check the link. Not charged.
blockedLinkedIn kept refusing requests.Try again later. Not charged.
error / parse_errorThe profile could not be loaded or read.Retry later. Not charged.
skippedNot 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.

ActorWhat it extractsWhen to use it
Facebook group scraperPosts, comments, authors, emails and member counts of public groupsYou research leads or a community on Facebook.
Douyin profile scraperFollowers, bio, posts and hashtags of public Douyin creatorsYou need public creator profiles from Douyin.
Instagram hashtag scraperPublic reels by hashtag with creator and engagement dataYou want to find creators by hashtag.
Facebook comment scraperComments and replies from public Facebook postsYou want comment data for sentiment or lead research.
Airbnb price and availability scraperAirbnb listings, nightly prices, availabilityWhen you research the rental market itself before looking up companies
Company emails and phones from websitesEmails, phones and social links published on company websitesYou have company domains rather than person profiles
Glassdoor job postings scraperPublic Glassdoor job ads with salary range, company rating and apply linkWhen you research open roles and pay next to LinkedIn profile data
Batch LinkedIn profile details scraperProfile sections, career insights, employer details and an email lookup for a list of profiles, with a record of where each section came fromYou want one list with no maximum-profiles input and a source option.

For help with runs, see the Apify documentation.

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 outputFields and excludeFields to 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

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.