LinkedIn Profile Scraper — Public Profile Data Extraction avatar

LinkedIn Profile Scraper — Public Profile Data Extraction

Pricing

from $2.50 / 1,000 contact person data scrapes

Go to Apify Store
LinkedIn Profile Scraper — Public Profile Data Extraction

LinkedIn Profile Scraper — Public Profile Data Extraction

Extract public profile data from LinkedIn without login. Gets name, headline, experience, education, skills, certifications, languages, and more.

Pricing

from $2.50 / 1,000 contact person data scrapes

Rating

0.0

(0)

Developer

bootforge

bootforge

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

1

Monthly active users

19 hours ago

Last modified

Share

LinkedIn Profile Scraper

The LinkedIn Profile Scraper is an Apify actor that extracts structured data from public LinkedIn profiles using your own li_at session cookie. Give it profile URLs (or bare vanity slugs) and it returns name, headline, about, full experience history, education, skills, certifications, honors, projects, connection and follower counts, badges, and — optionally — contact info (email, phone, websites). It pulls every field from LinkedIn's authenticated Voyager API in a single request per profile.

Use it to build lead lists, enrich a CRM, run recruiting sourcing, or feed a talent dataset — exported to JSON, CSV, or Excel.

Table of contents

What the LinkedIn profile scraper does

  • 🧾 25+ structured fields per profile — name, headline, about, location, industry, current company and title, all from one authenticated call.
  • 💼 Full experience & education history — reverse-chronological roles with company, title, location, dates, and description; schools, degrees, and years.
  • 🎯 Skills, certifications & achievements — skills with endorsement counts, certifications, languages, honors, publications, patents, projects, courses, organizations, and test scores.
  • 📊 Exact numeric counts — real connection_count_numeric and follower_count (the cookie path, not the public "500+" bucket).
  • 🏷️ Profile badgespremium, verified, influencer, and open_to_work signals.
  • 📇 Optional contact enrichment — email, phones, websites, twitter, and IM handles via a separate call, billed only when data is returned.

How to scrape LinkedIn profiles

  1. Click Try for free and open the actor.
  2. Paste one or more profile_urls (full URLs or bare /in/ slugs).
  3. Add your cookie — the li_at session cookie from your logged-in LinkedIn (see the input section below).
  4. Set proxy_country to the country where you logged in and copied the cookie.
  5. Optional: enable scrape_contact_info for email, phone, and websites.
  6. Click Start, then export results as JSON, CSV, or Excel, or pull them from the Apify API.
{
"profile_urls": ["https://www.linkedin.com/in/williamhgates/"],
"cookie": "<your_li_at_cookie>",
"proxy_country": "US",
"scrape_contact_info": true
}

LinkedIn profile scraper input

FieldDescription
profile_urlsRequired. LinkedIn profile URLs to scrape (e.g. https://www.linkedin.com/in/username).
cookieRequired. Your li_at session cookie. Get it in DevTools → ApplicationCookieslinkedin.com → copy the li_at value. Every structured field comes from the authenticated API, so a valid cookie is mandatory.
scrape_contact_infoFetch the contact-info endpoint (email, phone, websites, twitter, IM). Only charged when data is returned. Default false.
proxy_countryResidential proxy country code. Must match the country where you generated the cookie — LinkedIn deauthorizes a cookie used from a different geo. Default VN.
max_concurrencyMax concurrent profile requests (default 5, max 20).
max_requests_per_minuteRate cap to avoid LinkedIn throttling (default 30, max 120).
transportHTTP engine for the public fetch: auto (curl_cffi TLS impersonation), curl_cffi, httpx, or primp. The authenticated cookie path uses a browser session regardless.
strategy_modeRetry ordering: cost_first (default), speed_first, balanced, or stealth_first.
request_delayFixed delay in seconds between requests (default 0).

The cookie is required. Sign into LinkedIn in your normal browser, open DevTools (F12 / Cmd+Opt+I), go to Application → Storage → Cookies → https://www.linkedin.com, copy the Value of the li_at row, and paste it into the cookie field. Cookies typically last about a year when used from the same country. Note your sign-in country and set proxy_country to match.

LinkedIn profile data output

Each profile is one dataset row. Sample:

{
"public_identifier": "alice-walker-1234",
"status": "ok",
"profile_url": "https://www.linkedin.com/in/alice-walker-1234/",
"name": "Alice Walker",
"headline": "VP Engineering at TechCo",
"location": "Boston, MA",
"industry": "Software",
"about": "Builder of teams and systems...",
"connection_count_numeric": 1234,
"follower_count": 56789,
"open_to_work": false,
"premium": true,
"current_company": "TechCo",
"current_title": "VP Engineering",
"experience": [
{"company": "TechCo", "title": "VP Engineering", "location": "Boston, MA", "start_date": "Mar 2022", "end_date": "Present", "description": "..."}
],
"education": [
{"school": "Stanford", "degree": "MS", "field_of_study": "Computer Science", "start_year": "2014", "end_year": "2016"}
],
"skills": ["Python", "Distributed Systems", "Leadership"],
"contact": {
"email": "alice@techco.com",
"phones": [{"number": "+1-555-0100", "type": "MOBILE"}],
"websites": [{"url": "https://alice.dev", "category": "PERSONAL"}],
"twitter": ["alicewalker"]
},
"scraped_at": "2026-07-08T12:00:00+00:00"
}
FieldDescription
public_identifier, profile_urlLinkedIn vanity slug (stable across name changes) + source URL, for joining back to your input.
status, errorok / blocked / not_found / failed, with a reason when not ok.
name, headline, about, location, industry, profile_photo_urlCore profile fields.
current_company, current_titleCurrent role, flattened for CSV.
connection_count_numeric, follower_countExact numeric counts (cookie path).
open_to_work, premium, verified, influencerProfile badges.
experience, education, certifications, skills, skill_endorsementsStructured career sections.
languages, volunteer, honors, publications, patents, projects, courses, organizations, test_scoresAdditional sections, populated when the person added them.
contactEmail, phones, websites, twitter, IM — only when scrape_contact_info is enabled.
scraped_atISO timestamp.

By default only successfully-scraped profiles reach the dataset. A profile that is blocked, private, or missing fails fast with a specific reason rather than a silent empty row.

How much it costs

This actor uses pay-per-event pricing — you pay for what you scrape, not for time.

EventUSD
Actor start (per run)$0.01
Profile scraped$0.005
Contact info scraped (only when data returned)$0.005
Typical runCost
1,000 profiles~$5
1,000 profiles + contact enrichment~$10
100 profiles~$0.50

You are never billed for a profile that comes back blocked, not_found, or failed, and contact enrichment is only charged when contact data is actually returned.

LinkedIn ties session validity to IP geography — a li_at cookie issued in one country is deauthorized within a request or two if the proxy exits in a different country. You must use a residential proxy whose exit country matches where you signed in. Set proxy_country accordingly (US, GB, VN, DE, JP, ...).

This actor runs on DataImpulse residential IPs — pay-as-you-go, per-country targeting, no monthly minimum — so the exit IP can be aligned to your cookie's origin country. If you run your own scrapers (inside or outside Apify) and need reliable residential proxies for LinkedIn or other sites, you can get DataImpulse here:

👉 Get DataImpulse residential proxies (referral link)

Why this LinkedIn profile scraper

  • Full Voyager API data — 25+ structured fields per profile, deeper than public-HTML scrapers that only see truncated counts and shallow sections.
  • One request per profile — every field returns in a single authenticated call; no extra charge for more fields.
  • Adaptive billing — you pay only when a profile is delivered; blocked, private, and not-found inputs are free.
  • Actionable failures — a run that can't fetch names the cause directly (invalid cookie, geo mismatch, rate limit, anti-bot block) instead of a vague error.
  • Open source — the underlying linkedin-scraper Python package ships a Typer CLI and a FastAPI server; the Apify wrapper is a thin layer, so you can inspect the parser.

FAQ

Where do I get the li_at cookie, and is login required? Yes — the cookie is mandatory because every field comes from LinkedIn's authenticated API. Sign into LinkedIn in your browser, open DevTools → ApplicationCookieslinkedin.com, and copy the li_at value into the cookie field. It typically stays valid about a year when used from the same country.

Why must the proxy country match my cookie? LinkedIn binds session validity to IP geography. A cookie generated in Vietnam used through a US IP is treated as a hijacked session and deauthorized within one or two requests. Set proxy_country to your sign-in country and the exit IP is aligned automatically.

Which proxies work best for LinkedIn? Residential proxies with per-country targeting. This actor runs on DataImpulse residential IPs so the exit can match your cookie's origin country. Datacenter proxies get flagged quickly.

Will my cookie get my account banned? Stay under the default rate limits (max_requests_per_minute: 30, max_concurrency: 5) for sustainable use. LinkedIn flags accounts that pull thousands of profiles per hour, so scrape at a human pace.

Will every field populate on every profile? No — it depends on what the person filled in and their privacy settings. Core fields (name, headline, experience, education) almost always populate; skills, honors, projects, and others appear only when the profile owner added them.

Is scraping LinkedIn legal? This actor collects only data visible to your own logged-in account. You are responsible for complying with LinkedIn's terms and applicable data-protection laws, and for having a lawful basis before collecting personal data.

Rate this actor ⭐

If the LinkedIn Profile Scraper saved you time, please leave a review on its Apify Store page — ratings help other people find it and tell us what to build next. Hit a bug or missing field? Open an issue or contact us through the actor's Issues tab and we'll fix it fast — recency and reliability are what keep this actor ranking.

Building a full data pipeline? Pair this actor with our other scrapers — same proxy config format, same Pydantic-validated output, all open source.