LinkedIn Profile Scraper — Profiles & Your Own Connections avatar

LinkedIn Profile Scraper — Profiles & Your Own Connections

Pricing

from $1.00 / 1,000 results

Go to Apify Store
LinkedIn Profile Scraper — Profiles & Your Own Connections

LinkedIn Profile Scraper — Profiles & Your Own Connections

Scrape LinkedIn profiles for name, headline, full work history, education and skills. Paste profile URLs, or flip one toggle to export your own first-degree connections and scrape every one — no 1,000-result cap. Clean JSON, CSV or Excel at $0.001 per profile, no monthly rental.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(4)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

5

Bookmarked

60

Total users

1

Monthly active users

0.1 hours

Issues response

21 hours ago

Last modified

Share

Scrape any LinkedIn profile, or your entire first-degree network in one run. Paste profile URLs, or tick one box and the actor pulls your own connection list and scrapes every person on it — name, headline, full experience history, education and skills, as clean JSON or CSV.

InputRows emitted
A LinkedIn profile URLOne fully enriched profile
Several profile URLsOne row per profile
Your own connections (toggle, no URLs needed)One row per first-degree connection

Pure HTTP through LinkedIn's own internal API. No browser, no headless Chrome, no third-party bypass service.



How it works

  1. You supply a session cookie. LinkedIn profile data is only visible to logged-in members, so the actor uses your own session. Nothing is stored — the cookie is used for this run and discarded.
  2. It works out who to scrape. Either from the Start URLs you paste, or — with Scrape my own connections on — by reading your My Network list and turning every connection into a profile URL.
  3. It resolves each profile. The actor fetches the profile page, extracts the internal profile URN, then calls LinkedIn's own GraphQL endpoints for the top card and profile cards.
  4. It writes one row per person to the dataset, ready to export as JSON, CSV or Excel.

Traffic runs through residential proxy, because datacenter IPs get blocked.


Two ways to use it

A. You already have profile URLs

Paste them into Start URLs and leave the connections toggle off.

{
"startUrls": [
{ "url": "https://www.linkedin.com/in/williamhgates/" },
{ "url": "https://www.linkedin.com/in/satyanadella/" }
],
"cookies": [
{ "name": "li_at", "value": "AQED...", "domain": ".linkedin.com" },
{ "name": "JSESSIONID", "value": "ajax:...", "domain": ".linkedin.com" }
],
"maxItems": 100
}

B. You want your own network

Most people cannot produce a list of their connections' profile URLs by hand. Turn on Scrape my own connections and leave Start URLs empty — the actor builds the list for you.

{
"scrapeMyConnections": true,
"maxConnections": 5000,
"cookies": [
{ "name": "li_at", "value": "AQED...", "domain": ".linkedin.com" },
{ "name": "JSESSIONID", "value": "ajax:...", "domain": ".linkedin.com" }
],
"maxItems": 5000
}

This reads your My Network → Connections list directly, so there is no 1,000-result search limit. Whether you have 300 connections or 12,000, it walks the whole list.


Input

FieldTypeRequiredNotes
cookiesarrayyesFull EditThisCookie export. Must contain li_at and JSESSIONID.
scrapeMyConnectionsbooleannoScrape your own first-degree connections instead of supplying URLs. Default false.
maxConnectionsintegernoCap on connections enumerated when the toggle is on. Default 5000.
startUrlsarraynoProfile URLs. Leave empty when the toggle is on.
maxItemsintegernoMax profiles scraped per run. Default 100.
maxConcurrencyintegernoParallel requests. Default 10.
maxRequestRetriesintegernoRetries before giving up on a request. Default 10.
proxyobjectnoOptional override. Leave empty to use the built-in residential proxy.
  1. Install EditThisCookie for Chrome.
  2. Log in to linkedin.com in that browser.
  3. With linkedin.com open, click the extension icon and press Export.
  4. Clear the Cookies field in this actor and paste.

Paste the whole exported list, keeping the brackets. Both cookies are needed: li_at is the session, JSESSIONID is the CSRF token for LinkedIn's internal API. Pasting only the li_at value stops the run in a few seconds with an explanation rather than failing silently.


Output

One row per profile.

{
"name": "Harsh Shuddhalwar",
"headline": "Software Developer 💻 || Full-stack & cloud",
"profilePicture": "https://media.licdn.com/...",
"profileUrl": "harsh-shuddhalwar",
"experience": [
{
"title": "Senior Software Developer",
"tenure": "Sep 2023 - Present · 1 yr 6 mos",
"company": "withRemote · Full-time",
"location": "Remote",
"description": "Developed and delivered..."
}
],
"education": [
{ "school": "G H Raisoni Institute", "startDate": null, "endDate": null }
],
"skills": []
}

Key fields

FieldDescription
nameFull name as displayed on the profile.
headlineProfessional headline, up to ~220 chars, emojis included.
profilePictureImage URL. Temporary — LinkedIn expires these after roughly six months.
profileUrlProfile slug. Prefix with linkedin.com/in/ for the full URL.
experience[]title, tenure, company (name + employment type), location, description.
education[]school, startDate, endDate. Dates are often null because members hide them.
skills[]Endorsed skills. Frequently empty depending on profile privacy.

Pricing

Pay per event. No monthly rental.

EventWhen it firesPrice
Actor startOnce per run, per GB of memory$0.005
Dataset itemEach profile written$0.001

A 1,000-profile run costs about $1.01.


FAQ

Do I need a LinkedIn cookie? Yes. Profile detail is only visible to logged-in members. Without a session LinkedIn returns HTTP 999 to everything.

Is my cookie stored? No. It is used for the requests in this run and nothing else.

Can this scrape someone else's connections? No. LinkedIn exposes a connection list only to the account that owns it. The toggle reads your own network, never anyone else's.

Why are some skills or dates empty? Members can hide them. When a field is hidden, the actor returns null or an empty array rather than inventing a value.

My run failed with an HTTP 999 or a redirect to login. The session expired. Log in to LinkedIn again, export a fresh cookie and re-run.

Will this get my account restricted? Any tool that uses your session carries some risk. Traffic runs through residential proxy and at modest concurrency to reduce it, but scrape at a sensible pace and avoid very large runs on a brand-new account.


🤖 For AI Agents & LLM Apps

Purpose: Extract full LinkedIn profile records — identity, work history, education, skills — from profile URLs, or from the caller's own first-degree connection list.

Auth: Requires the end user's LinkedIn session cookies (li_at + JSESSIONID) as an array of cookie objects. There is no cookie-free mode; LinkedIn returns HTTP 999 to unauthenticated requests.

Minimal tested input:

{
"cookies": [{"name":"li_at","value":"...","domain":".linkedin.com"},
{"name":"JSESSIONID","value":"...","domain":".linkedin.com"}],
"startUrls": [{"url":"https://www.linkedin.com/in/williamhgates/"}],
"maxItems": 1
}

Connection-list mode: set scrapeMyConnections: true and omit startUrls. Returns one row per first-degree connection of the cookie's owner. No 1,000-result cap.

Output fields (flat): name, headline, profilePicture, profileUrl, experience[] (title, tenure, company, location, description), education[] (school, startDate, endDate), skills[].

Billing: $0.005 per run start (per GB), $0.001 per profile returned.

Failure modes worth handling: malformed cookies fail immediately with a descriptive status message; an expired session surfaces as HTTP 302/401/403 with a "cookie expired" message; hidden fields return null or [] rather than being omitted.


Additional Services

Custom fields, a full dataset, or a different LinkedIn surface — email muhamed.didovic@gmail.com.


Support

Issues and feature requests via the actor's Issues tab, or email above.


⚠️ Disclaimer

This actor accesses only data visible to the logged-in account whose session you supply. Use it on data you are entitled to access, and comply with LinkedIn's Terms of Service and applicable data-protection law — including the GDPR and CCPA — when storing or processing results. Personal data carries obligations around lawful basis, retention and subject access. You are the data controller for anything you collect; the actor's author is not. Do not use output for unlawful discrimination, harassment, or unsolicited bulk messaging.


SEO Keywords

linkedin scraper, linkedin profile scraper, linkedin data extraction, scrape linkedin profiles, linkedin connections export, export linkedin connections, first degree connections, linkedin my network export, linkedin profile api, linkedin lead generation, recruitment data, candidate sourcing, linkedin crawler, linkedin json export, linkedin csv export, professional profile data, linkedin employment history, linkedin skills scraper, b2b prospecting, sales navigator alternative, apify linkedin actor