LinkedIn Profile Scraper avatar

LinkedIn Profile Scraper

Pricing

from $2.50 / 1,000 contact person data scrapes

Go to Apify Store
LinkedIn Profile Scraper

LinkedIn Profile Scraper

Scrape LinkedIn profiles from a list of URLs: name, headline, current_company, current_title, location, connection_count_numeric, follower_count, full experience and education history, skills and optional contact details. Export JSON, CSV or Excel.

Pricing

from $2.50 / 1,000 contact person data scrapes

Rating

0.0

(0)

Developer

herus13

herus13

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

1

Monthly active users

3 days ago

Last modified

Share

LinkedIn Profile Scraper extracts structured data from LinkedIn profiles. Give it profile URLs and each one comes back as a row with name, headline, current role, location, full experience and education history, skills, badges and — optionally — contact details.

What you get

One dataset row per profile. Export as JSON, CSV or Excel.

{
"profile_url": "https://www.linkedin.com/in/alice-walker-1234/",
"name": "Alice Walker",
"headline": "VP Engineering at TechCo",
"current_company": "TechCo",
"current_title": "VP Engineering",
"location": "Boston, MA",
"industry": "Software",
"connection_count_numeric": 1234,
"follower_count": 56789,
"open_to_work": false,
"about": "Builder of teams and systems...",
"_meta": {"author": "https://apify.com/herus13", "status": "ok", "message": null}
}

_meta is run metadata, not scraped data. A target that fails appears as a row with only _meta (status failed, the reason in message); those rows are never charged.

Rows also carry public_identifier (the vanity slug, stable across name changes), the premium, verified and influencer badges, and the structured career sections: experience with company, title, location, dates and description per role; education with school, degree, field and years; certifications, skills and skill_endorsements; and languages, volunteer, honors, publications, patents, projects, courses, organizations and test_scores wherever the person filled them in; recommendations received (recommender and text); similar_profiles, the "Other similar profiles" list (name, public_identifier, profile_url, headline); and object_urn, LinkedIn's member id (urn:li:member:<n>). Turn on scrape_contact_info and a contact object is added with email, phones, websites, Twitter and instant-messaging handles. A profile that cannot be read is never charged: its _meta row and the run log name it with the reason, and a run where every profile failed ends FAILED saying why.

What it costs

EventFreeBronzeSilverGold+
Record scraped (profile-scraped)$0.007$0.00633$0.00567$0.005
Contact Person Data Scrape (contact-info-scraped)$0.004$0.0035$0.003$0.0025
Actor Start (apify-actor-start)$0.01$0.01$0.01$0.01

You pay per profile delivered, not per minute: $0.007 a profile, so 1,000 profiles is about $7.00. Contact details add $0.004 per profile and are charged only when contact data actually comes back, which puts 1,000 enriched profiles at roughly $11.00. A profile that comes back blocked, private or not found is never charged. Higher Apify subscription tiers pay the lower rates shown above, and the residential proxy is included in the price of the run. The $0.01 start fee is charged once per run, per GB of memory.

Input

FieldTypeRequiredDefaultWhat it does
profile_urlsarrayyes—LinkedIn profile addresses to collect, one per entry — a full URL such as https://www.linkedin.com/in/williamhgates/, or the bare /in/ slug. Each entry returns one dataset row with the person's name, headline, current role, location and career history. Required: a run with no addresses has nothing to collect.
cookiestringno—Your own signed-in LinkedIn li_at session cookie. With it every profile comes back complete — skills, exact connection and follower counts, every section. For convenience you may paste a bare li_at, the full cookie string li_at=…; bcookie=…; JSESSIONID=…, or a browser "Copy as cURL" command; the actor uses the li_at from it. Leave blank for the public set shown to signed-out visitors. Copy it in the country you set in proxy_country.
authorized_accessbooleanyesfalseConfirms you are collecting profiles you own or have explicit permission to access with your own cookie. Default false; set it to true to start a run. Required.
scrape_contact_infobooleannofalseAlso collect the contact details a profile exposes — email, phone numbers, websites, Twitter handles and instant-messaging handles — returned under contact. Needs a cookie. Default false. It is charged only when contact data actually comes back.
proxy_countrystringno"VN"Two-letter country code the run's residential IP exits from, for example US, GB, DE or JP. When you supply a cookie this must match the country you were signed in from when you copied it, or LinkedIn ends the session after a request or two. Default VN. Without a cookie the country is unconstrained.
max_concurrencyintegerno5How many profiles are collected at the same time. Default 5, minimum 1, maximum 20. A higher number finishes a long list sooner; the default keeps a steady pace on your own account.
max_requests_per_minuteintegerno30Ceiling on how many requests a run may send each minute. Default 30, minimum 1, maximum 120. The default is a deliberately human pace; raise it to work through a long list faster.
request_delayintegerno0Seconds to wait between requests, to spread a run out over time. Default 0, minimum 0, which runs at full speed inside the ceiling set by max_requests_per_minute.

How to run it

  1. Open the actor on Apify Console.
  2. Paste one or more profile URLs, tick the authorized-access confirmation, and add your li_at cookie if you want the full profile.
  3. Set the proxy country to match where that cookie was issued, then Run. Export JSON, CSV or Excel from the dataset.
{
"profile_urls": ["https://www.linkedin.com/in/williamhgates/"],
"authorized_access": true,
"cookie": "<your_li_at_cookie>",
"proxy_country": "US",
"scrape_contact_info": true
}

Minimal input:

{
"profile_urls": ["https://www.linkedin.com/in/williamhgates/"],
"authorized_access": true
}

Available as the MCP tool herus13--linkedin-profile-scraper on mcp.apify.com and through the Apify API; send the same JSON.

Why this scraper

  • Works with or without a cookie — leave cookie blank and you still get the public set: name, headline, current roles, education, location and photo. Add your own li_at and every section opens up.
  • Exact counts, not buckets — connection_count_numeric and follower_count come back as real numbers rather than the "500+" that public pages show.
  • Deep career history in one row — experience, education, certifications, skills with endorsement counts, honors, publications, patents and projects, all on the same record, at no extra charge.
  • You pay for what arrives — blocked, private and not-found profiles are free, and contact enrichment is charged only when contact data is actually returned.
  • Failures say what went wrong — an unreadable profile names its reason, so a bad cookie or a country mismatch is obvious instead of looking like an empty result.
  • Nothing to install — paste URLs, press Run; a residential proxy is included in the price of the run.

Use cases

  • CRM enrichment — A list of profile URLs becomes structured records a CRM can key on: current company and title, location, industry and the full role history behind them.
  • Recruiting and sourcing — Complete experience and education history is what makes candidate screening possible at list scale, instead of opening profiles one at a time.
  • Lead qualification — Headline, current role and company tell you whether a lead is worth pursuing before any outreach, and contact details are one switch away where the profile exposes them.
  • Talent-market datasets — Aggregate profiles across a company or a function to read tenure distribution, common prior employers and where skills concentrate.
  • Investor and competitor research — Follower counts, badges and hiring history on a leadership team give a fast read on a company's trajectory.

FAQ

Do I need a LinkedIn cookie? No. Leave cookie blank for the public set — name, headline, experience with titles and descriptions, education, location, photo, the exact follower_count, connection_count ("500+" above LinkedIn's cap, so connection_count_numeric stays empty there), and whichever of skills, volunteering, publications, honors, recommendations and similar profiles the person made public. A cookie is needed for skill endorsement counts, exact connection counts above 500, badges and contact details. To copy one: sign into LinkedIn in your browser, open DevTools, go to Application, Cookies, linkedin.com and take the li_at value. For convenience you can also paste the whole cookie string (li_at=…; bcookie=…; JSESSIONID=…) or a "Copy as cURL" command from the Network tab — the actor takes the li_at from it. It usually stays valid about a year when used from the same country.

Why must the country match my cookie? LinkedIn ties a session to the country it was issued in. A cookie copied in Vietnam and used from a US address is treated as a hijacked session and dropped within a request or two. Set proxy_country to the country you signed in from and the two stay aligned.

Will my account get flagged? Stay near the defaults — max_requests_per_minute 30 and max_concurrency 5 — which is a human pace. Pulling thousands of profiles an hour is what gets accounts noticed.

Will every field be filled on every profile? No. It depends on what the person entered and on their privacy settings. Name, headline, experience and education almost always arrive; skills, honors, projects and the rest appear only where the profile owner added them.

Is a proxy included? A residential proxy is included in the price of the run. The exit country follows proxy_country, which must match where your cookie was issued.

What happens if my input is wrong? The run stops before it scrapes anything, so no results are charged. Its status and log name each field that is wrong and say what to change — fix the input and run again.

Is scraping LinkedIn legal? This actor collects only data visible to the account whose cookie you supply, or the public profile when you supply none. You are responsible for complying with LinkedIn's terms and applicable data-protection laws, and for having a lawful basis before collecting personal data.

Building a sourcing or lead pipeline? Pair this actor with: