LinkedIn Profile Scraper avatar

LinkedIn Profile Scraper

Pricing

from $2.52 / 1,000 results

Go to Apify Store
LinkedIn Profile Scraper

LinkedIn Profile Scraper

Scrape LinkedIn profiles without login, cookies, or authentication. Extract public profile data including experience, education, skills, and more.

Pricing

from $2.52 / 1,000 results

Rating

0.0

(0)

Developer

Artificially

Artificially

Maintained by Community

Actor stats

1

Bookmarked

122

Total users

3

Monthly active users

86 days

Issues response

10 hours ago

Last modified

Share

LinkedIn Profile Scraper - No Login Required

Scrape LinkedIn profiles without login, cookies, or authentication. Extract public profile data including experience, education, skills, and more.

Use with AI agents (MCP)

This actor works as a tool for AI agents through Apify's MCP server at https://mcp.apify.com: the agent passes LinkedIn profile URLs or usernames and gets back one JSON item per profile. For agents, set compactOutput: true to get slim items without photos and long text blobs, and keep limits small (a handful of profiles per call).

Quick setup (sign in with your Apify account when asked):

  • Claude (claude.ai or Claude Desktop): Settings → Connectors → Add custom connector, and paste https://mcp.apify.com?tools=artificially/linkedin-profile-scraper
  • Claude Code or Cursor via the Apify CLI (latest version, apify upgrade): apify mcp install claude-code --tools artificially/linkedin-profile-scraper (use cursor instead of claude-code for Cursor)
  • Any MCP client (Cursor, VS Code, Windsurf):
{
"mcpServers": {
"apify": { "url": "https://mcp.apify.com?tools=artificially/linkedin-profile-scraper" }
}
}

Try asking:

  • "Get the LinkedIn profile of williamhgates: headline, current company, experience and education."
  • "For these 20 LinkedIn profile URLs, return name, headline and current company as a table."

Key Features

  • No Login Required - Works without LinkedIn credentials
  • No Cookies Needed - Uses public profile pages
  • Bulk Scraping - Process multiple profiles at once
  • Comprehensive Data - Experience, education, skills, certifications
  • Only pay for complete profiles - Blocked, login-walled or restricted pages are retried on fresh IPs and, if they still fail, skipped. They are never saved to your dataset and never charged.
  • Optional partial data for restricted profiles - Turn on includeRestrictedProfiles to also keep the public data LinkedIn still shows on restricted profiles, at a lower price.

You only pay for complete profiles

LinkedIn sometimes blocks requests or shows a cut-down page with a sign-in pop-up instead of the real profile. The scraper detects these pages and:

  1. Retries on a fresh proxy IP with increasing wait times
  2. Switches to residential proxies for the remaining attempts (on by default, no extra cost to you)
  3. If the profile still can't be loaded, skips it without saving or charging

Skipped profiles are listed in the FAILED_PROFILES record of the run's key-value store, and a SUMMARY record shows saved vs skipped counts (savedFull, savedRestricted, skipped, skippedByReason), so you can re-run just the failures.

Restricted profiles (optional, partial data)

When you are not logged in, LinkedIn shows a restricted version of many ordinary (non-celebrity) profiles: the headline, job titles, experience details and skills are hidden or masked. Retrying rarely helps, and in large runs only about one in three ordinary profiles comes back complete.

By default restricted profiles are skipped and not charged. If you set includeRestrictedProfiles: true, the scraper keeps the public data those pages still show and saves it as a partial item:

  • Partial items are flagged isRestricted: true (complete profiles have isRestricted: false).
  • They are saved to a separate Restricted profiles dataset of the run (see the Output tab or the run's Storage tab), so your main dataset only ever contains complete profiles.
  • They are charged with a separate, lower-priced Restricted profile (partial data) event. See the Pricing tab for current rates.
  • Hidden job titles are never guessed or filled in. headline is always null, and experience and skills are always empty.
  • A restricted profile is only saved when it has a real name plus at least a location, a current company or a school. Otherwise it is skipped for free.
FieldComplete profileRestricted profile
fullNameYesYes
headlineYesNo (always null)
locationYesYes, when shown
profilePhoto, backgroundPhotoYesWhen shown (placeholder images are dropped)
aboutYesShort preview only, when shown
connectionsCount, followersCountYesYes, when shown
currentCompanyYesYes, when shown
experience[] (titles, dates, descriptions)YesNo (always empty)
companies[] (name, companyUrl)Not includedCompanies from the work history whose names are public. No titles or dates, and it can include past employers
education[]School, degree, field, datesSchool, school URL and dates only
skills[]YesNo (always empty)
certifications[]YesWhen shown
languages[]YesWhen shown
volunteerExperience[]YesWhen shown
isRestrictedfalsetrue

What Data You Get

FieldDescription
fullNameProfile owner's name
headlineProfessional headline
locationGeographic location
profilePhotoProfile picture URL
aboutAbout/summary section
connectionsCountNumber of connections
followersCountNumber of followers
currentCompanyCurrent employer
experience[]Work history with company, title, duration
education[]Schools, degrees, dates
skills[]Listed skills
certifications[]Professional certifications
languages[]Languages spoken
isRestrictedfalse for complete profiles, true for partial restricted profiles

Input

FieldTypeRequiredDefaultDescription
profileUrlsarrayNo-Full LinkedIn profile URLs
usernamesarrayNo-LinkedIn usernames only
includeExperiencebooleanNotrueExtract work history
includeEducationbooleanNotrueExtract education
includeSkillsbooleanNotrueExtract skills
includeCertificationsbooleanNotrueExtract certifications
includeLanguagesbooleanNotrueExtract languages
includeVolunteerbooleanNofalseExtract volunteer work
maxAttemptsPerProfileintegerNo4Attempts per profile before it is skipped (each on a fresh IP)
residentialFallbackbooleanNotrueSwitch to residential proxies after half the attempts fail
compactOutputbooleanNofalseSave slim items with only the key fields. Recommended for AI agents
includeRestrictedProfilesbooleanNofalseAlso save restricted profiles with partial data (isRestricted: true) at the lower restricted-profile price

Example Input

{
"profileUrls": [
"https://www.linkedin.com/in/williamhgates"
],
"includeExperience": true,
"includeEducation": true,
"includeSkills": true
}

Output Example

{
"profileUrl": "https://www.linkedin.com/in/williamhgates",
"username": "williamhgates",
"fullName": "Bill Gates",
"headline": "Co-chair, Bill & Melinda Gates Foundation",
"location": "Seattle, Washington, United States",
"profilePhoto": "https://...",
"about": "Co-chair of the Bill & Melinda Gates Foundation...",
"connectionsCount": "500+",
"experience": [
{
"title": "Co-chair",
"company": "Bill & Melinda Gates Foundation",
"companyUrl": "https://www.linkedin.com/company/bill-melinda-gates-foundation",
"location": "Seattle, WA",
"duration": "Jan 2000 - Present",
"startDate": "Jan 2000",
"endDate": "Present"
}
],
"education": [
{
"school": "Harvard University",
"degree": null,
"dates": "1973 - 1975"
}
],
"skills": ["Technology", "Leadership", "Philanthropy"],
"isRestricted": false,
"scrapedAt": "2024-01-20T12:00:00Z"
}

Restricted profile (with includeRestrictedProfiles: true, saved to the Restricted profiles dataset):

{
"profileUrl": "https://www.linkedin.com/in/example-person",
"username": "example-person",
"fullName": "Example Person",
"headline": null,
"location": "Greater Chicago Area",
"about": "Over the last 7 years I've worked with...",
"connectionsCount": "500+",
"followersCount": "18K",
"currentCompany": "Example Talent Solutions",
"experience": [],
"education": [
{
"school": "Northern Illinois University",
"schoolUrl": "https://www.linkedin.com/school/northern-illinois-university/",
"degree": null,
"fieldOfStudy": null,
"dates": "2012 - 2016"
}
],
"skills": [],
"companies": [
{ "name": "Example Talent Solutions", "companyUrl": "https://www.linkedin.com/company/example" }
],
"isRestricted": true
}

Cost

Pay-per-result pricing: a small start fee per run plus a fee per saved profile. Restricted profiles saved with includeRestrictedProfiles are charged at a separate, lower per-profile price, and only that price (they are not also charged as complete profiles). See the Pricing tab for current rates.

Blocked, login-walled and not-found profiles are not saved and not charged. You can also set a maximum cost per run in the run options; the scraper stops cleanly when it is reached.

Tips

  1. Use Apify Proxy - Strongly recommended for reliable results. Residential fallback is enabled by default
  2. Batch requests - More efficient than many small runs
  3. Public profiles only - Private profiles won't return data
  4. Rate limits - LinkedIn may limit aggressive scraping

This scraper only accesses publicly available data. Users are responsible for ensuring their use complies with applicable laws and LinkedIn's terms of service.

Support

  • Built by: Artificially
  • Issues: Report bugs via Apify Console