Linkedin Profile Details Scraper avatar

Linkedin Profile Details Scraper

Pricing

from $22.00 / 1,000 profile scrapeds

Go to Apify Store
Linkedin Profile Details Scraper

Linkedin Profile Details Scraper

Scrape full LinkedIn profiles with your own session: headline, about, top skills, experience, education, certifications, skills and optional contact info. Built to protect your account: separate session, your user agent, residential IP, human pacing.

Pricing

from $22.00 / 1,000 profile scrapeds

Rating

0.0

(0)

Developer

Ahmed Khaled Ali

Ahmed Khaled Ali

Maintained by Community

Actor stats

18

Bookmarked

511

Total users

1

Monthly active users

73 days

Issues response

13 days ago

Last modified

Share

Get full LinkedIn profiles as a logged-in member: headline, about, top skills, complete experience, education, certifications and skills, plus optionally the contact info of your 1st-degree connections (email, phone, websites, birthday). Add a list of profile URLs and download clean data as Excel, CSV or JSON, or pull it through the API.

⚠️ Read this first

LinkedIn watches automated browsing of profiles very closely in 2026 and often ends the session after a few profiles, even with all the protections below. In rare cases repeated session endings can lead LinkedIn to restrict the account.

  • Never use the cookies of the LinkedIn tab you use every day. Give the Actor its own session (see step 1 below) so your everyday session stays separate.
  • Use small batches (a handful of profiles per run) and keep the default pauses.
  • If a run says LinkedIn ended the session, wait before trying again and create a new session for the Actor.

What does LinkedIn Profile Details Scraper do?

It opens each profile with your LinkedIn session, reads every section, opens the full lists ("Show all experiences", "Show all skills"...) when a section has more entries, and saves one row per profile:

  • 👤 Top card: name, headline, location, profile picture, cover image, connection degree, followers, connections
  • 📝 About section and top skills
  • 💼 Experience: every position with company, dates, location and description; several roles at one company become separate entries
  • 🎓 Education and 📜 licenses & certifications, with issue dates, credential IDs and credential links
  • 🛠️ All skills
  • 📇 Contact info (optional) visible to your account: email, phone, websites, birthday, IM, address (usually only for your 1st-degree connections)

How to use it

  1. Create a LinkedIn session just for the Actor. In Chrome open chrome://extensions, find Cookie-Editor → Details → turn on Allow in Incognito. Open an Incognito window (Ctrl/Cmd+Shift+N), log in to LinkedIn, click Cookie-Editor → Export → JSON and paste the result into LinkedIn cookies. Then close the Incognito window without signing out.
  2. Copy your user agent. In Chrome open DevTools (F12) → Console, type navigator.userAgent, press Enter and paste the text (without quotes) into Your browser's user agent.
  3. Set the proxy to RESIDENTIAL and select the country you normally use LinkedIn from.
  4. Add the profile URLs (linkedin.com/in/...) and click Start.

How the Actor protects your session

What LinkedIn checksWhat the Actor does
Is it the same browser?Full cookie set (not just li_at), your user agent with a matching platform, screen size and Chrome version
Where is it?A residential IP in your country, the same IP for the whole run, and a browser clock set to that country's time zone
Is it a real browser?A full (non-headless) Chrome with automation traces hidden
Does it behave like a person?Reads each profile by scrolling, with natural pauses, and waits 20–50 seconds (configurable) before the next profile
Sensitive actionsContact info is off by default: opening that window is what LinkedIn guards most closely. Edit pages are never opened

If LinkedIn ends the session anyway, the run stops right away, keeps the profiles already scraped and tells you.

Input

FieldDescription
urlsProfile URLs (linkedin.com/in/...)
cookieCookie export (JSON from Cookie-Editor) of a LinkedIn session made for the Actor in an Incognito window. Stored encrypted
userAgentYour browser's user agent (recommended)
proxyConfigurationProxy settings; use RESIDENTIAL in your country
includeContactInfoAlso open the Contact info window (off by default; see the FAQ)
min, maxPause between profiles in seconds (default 20–50)
debugSaves screenshots and page HTML for troubleshooting
{
"urls": ["https://www.linkedin.com/in/jane-example/"],
"cookie": "[{\"name\":\"li_at\",\"value\":\"...\",\"domain\":\".www.linkedin.com\"}, ...]",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/141.0.0.0 Safari/537.36",
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "EG" }
}

Output

One row per profile. The Output tab has three views: Overview, Career and Contact info. Example (a fictional person):

{
"profileUrl": "https://www.linkedin.com/in/jane-example/",
"publicIdentifier": "jane-example",
"name": "Jane Example",
"title": "Full Stack Web Developer at Example Tech",
"location": "Cairo, Egypt",
"profileImgURL": "https://media.licdn.com/dms/image/...",
"coverURL": "https://media.licdn.com/dms/image/...",
"distance": "1st",
"followers": 1834,
"connections": "500+",
"about": "A self-taught developer who moved from the medical sector to software...",
"profileContacts": {
"linkedinProfile": "https://www.linkedin.com/in/jane-example",
"websites": ["https://github.com/jane-example"],
"email": "jane@example.com",
"birthday": "December 7"
},
"experience": [
{
"expTitle": "Full Stack Web Developer",
"expCompName": "Example Tech · Full-time",
"expDuration": "Jan 2021 - Present · 2 yrs 11 mos",
"expLocation": "Remote",
"expDescription": "Built the customer dashboard in React and Node.js...",
"expCompURL": "https://www.linkedin.com/company/13224787/",
"expCompLogo": "https://media.licdn.com/dms/image/..."
}
],
"education": [
{
"eduFrom": "Example University",
"eduDegree": "Bachelor's degree, Veterinary Medicine",
"eduDate": "Sep 2013 - Jan 2019",
"eduDescription": "",
"eduURL": "https://www.linkedin.com/school/926996/",
"eduLogo": "https://media.licdn.com/dms/image/..."
}
],
"license": [
{
"licenseName": "English Proficiency Certificate",
"compName": "Example English Test",
"licenseDate": "Nov 2022 · Expires Nov 2024",
"credentialID": "1336409705",
"licenseURL": "https://certs.example.com/1336409705",
"compURL": "https://www.linkedin.com/company/25016372/",
"compLogo": "https://media.licdn.com/dms/image/..."
}
],
"skills": ["SQL", "Career Counseling"],
"topSkills": ["React", "Node.js"],
"scrapedAt": "2026-10-03T08:00:00.000Z"
}

How much does it cost?

You pay a fixed price per profile saved to the dataset; see the Pricing tab. Proxy and compute costs are included. Profiles that are unavailable or can't be read are skipped and not charged. You can also set a maximum cost per run in the run options; the run stops as soon as it is reached.

Integrations and API

Use the results in Google Sheets, Make, Zapier, n8n, Slack or any CRM through Apify integrations, or call the Actor from code:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('ahmed-khaled/linkedin-profile-details-scraper').call({
urls: ['https://www.linkedin.com/in/jane-example/'],
cookie: process.env.LINKEDIN_COOKIES_JSON,
userAgent: process.env.MY_USER_AGENT,
proxyConfiguration: { useApifyProxy: true, apifyProxyGroups: ['RESIDENTIAL'], apifyProxyCountry: 'US' },
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("ahmed-khaled/linkedin-profile-details-scraper").call(run_input={
"urls": ["https://www.linkedin.com/in/jane-example/"],
"cookie": os.environ["LINKEDIN_COOKIES_JSON"],
"userAgent": os.environ["MY_USER_AGENT"],
"proxyConfiguration": {"useApifyProxy": True, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US"},
})
items = client.dataset(run["defaultDatasetId"]).list_items().items

FAQ

Why does it need my cookies? Full profiles, complete lists, skills and contact info are only visible to logged-in members. Your cookies are used only inside your own run and are stored encrypted by Apify.

The run says LinkedIn ended the session. LinkedIn is very strict with automated profile browsing. Wait a while, create a new session for the Actor (Incognito login, export, close without signing out) and use smaller batches with longer pauses.

Will the Actor log me out of LinkedIn in my browser? Not if you give it its own Incognito session: your browser's session is then separate. Logouts happen when the cookies of your everyday LinkedIn tab are used in the Actor at the same time as in your browser.

Why is profileContacts empty? Include contact info is off by default. When on, LinkedIn still shows contact info mostly to 1st-degree connections, and only what each member chose to share.

A field is missing or looks wrong. Open an issue in the Issues tab. Turn on Save troubleshooting snapshots and attach the screenshots from the run's Debug snapshots; it helps fix the problem fast.

This Actor processes personal data. Make sure you have a legitimate reason to collect it, process it in line with data protection laws such as the GDPR, and respect LinkedIn's terms of service.