LinkedIn Profile Scraper avatar

LinkedIn Profile Scraper

Pricing

from $1.95 / 1,000 profiles

Go to Apify Store
LinkedIn Profile Scraper

LinkedIn Profile Scraper

LinkedIn profile scraper: paste profile links or names and export each public profile as a row: name, headline, location, followers, current company and school, experience, education, certifications, publications, websites and articles, as LinkedIn shows them to signed-out visitors.

Pricing

from $1.95 / 1,000 profiles

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

12

Total users

0

Monthly active users

6 hours ago

Last modified

Security

Limited permissions

Share

LinkedIn profile scraper: paste profile links or names and export each public profile as one row, with the name, headline, location, followers, current company and school, job history, education, certifications, publications, websites and articles.

You give it LinkedIn profile links, or just the name at the end of each link. You get the profile as LinkedIn shows it to someone who is not signed in, one row per person, ready for a spreadsheet or a CRM.

It reads public profiles only. A profile that LinkedIn does not serve to the run comes back as a free row saying so, and you pay only for profiles that come back with data.

InputLinkedIn profile links (linkedin.com/in/..., any country site) or profile names such as williamhgates
OutputOne row per profile: name, headline, location, followers, connections, current company and school, experience, education, certifications, volunteering, publications, honours, recommendations, websites, articles, similar profiles
Ceiling1,000 profiles per run
Account neededNone from you
Price$1.95 per 1,000 profiles, the same rate on every plan. The free plan's $5 a month covers about 2,500
Using an AI agent?
Actordami_studio/linkedin-profiles-scraper
Set one fieldprofileUrls, labelled "Profile links or names" in the Console
Cap the billmaxTotalChargeUsd on the run, for example 0.10: it never charges past that
MCP, one linkhttps://mcp.apify.com/?tools=fetch-actor-details,dami_studio/linkedin-profiles-scraper
How oftenWeekly or monthly, to keep a list of contacts' jobs and titles current

🔍 What LinkedIn Profile Scraper does

It opens each profile's public page, the one LinkedIn shows to anyone with the link, and writes down what is on it. Nothing is read through an account, and nothing that only signed-in members see.

That covers the name, headline, location, follower and connection counts, the current company and school, the about text, each position with its title, dates and place, schools, and whatever certifications, volunteering, publications, awards, recommendations, websites and articles the member made public. The row carries what the page carries, and a field the page leaves out is empty rather than guessed.

Turn on Add current company details and it also reads the public page of each person's current employer, once per company per run, and adds the company's industry, size, headquarters, website, follower count and description to the row.

📋 What data you get from each LinkedIn profile

What you getField
Who it isfullName, firstName, lastName, headline, jobTitles, about, badges
Where they arelocation, countryCode
Reachfollowers, connections
Where they work and studied nowcurrentCompany, currentCompanyUrl, currentSchool, currentSchoolUrl
Job historyexperience (title, company, companyUrl, location, startDate, endDate, duration, description, currentPosition)
Educationeducation (school, schoolUrl, degree, fieldOfStudy, startDate, endDate, description)
Credentials and work in publiccertifications, volunteering, publications, honorsAndAwards, organizations, projects, courses, patents, testScores, languages, skills
What others sayrecommendationsReceived (recommender, recommenderUrl, text)
Links and writingwebsites, articles (title, url, publishedAt, likes, imageUrl), recentPostsCount
PicturesprofilePictureUrl, backgroundImageUrl
People LinkedIn shows beside themsimilarProfiles (name, headline, location, followers, profileUrl)
The current company (paid add-on)company (name, industry, companySize, employeesOnLinkedIn, followers, companyType, foundedYear, specialties, website, description, hqCity, hqRegion, hqCountry, locations, logoUrl)
The link and when it was readprofileUrl, publicIdentifier, inputUrl, scrapedAt

▶️ How to scrape LinkedIn profiles

  1. Open LinkedIn Profile Scraper and click Try for free.
  2. Paste profile links or names into Profile links or names, one per line.
  3. Turn on Add current company details if you want the employer's details on each row.
  4. Click Start.
  5. Download the rows as JSON, CSV or Excel, or read them from the API.

Leave the list empty and you get one free sample row showing the shape of the output, with nothing read.

💰 How much does it cost to scrape LinkedIn profiles?

$1.95 per 1,000 profiles, which is $0.00195 each, the same rate on every plan. On the free plan, the $5 Apify gives you each month covers about 2,500 profiles.

Company details cost $0.95 per 1,000 companies, charged once for each company page read, however many profiles in the run work there.

Free rows are never charged: a profile that was not shown, an entry that is not a profile link, the sample row, and the row that says the run stopped at your time or cost limit. A profile listed twice is read once.

📥 What you give it

{
"profileUrls": [
"https://www.linkedin.com/in/williamhgates",
"satyanadella"
],
"maxProfiles": 100,
"includeCompanyDetails": true
}
FieldDefaultWhat it is
profileUrlsnone, the form starts with two examplesUp to 1,000. A profile link from any LinkedIn country site, or the name at the end of the link.
maxProfiles1001 to 1,000. The run reads this many from the top of the list and leaves the rest.
includeCompanyDetailsoffAdds the current company's public details to each row. Paid per company.

📤 What you get back

A real row from a run on 7 November 2026, with company details on and the lists cut short:

{
"ok": true,
"recordType": "profile",
"profileUrl": "https://www.linkedin.com/in/satyanadella",
"publicIdentifier": "satyanadella",
"fullName": "Satya Nadella",
"headline": "Chairman and CEO at Microsoft",
"location": "Redmond, Washington, United States",
"countryCode": "US",
"followers": 12293095,
"connections": "500+",
"badges": ["Creator", "Top Voice"],
"currentCompany": "Microsoft",
"currentCompanyUrl": "https://www.linkedin.com/company/microsoft",
"currentSchool": "The University of Chicago Booth School of Business",
"experience": [
{
"title": "Chairman and CEO",
"company": "Microsoft",
"companyUrl": "https://www.linkedin.com/company/microsoft",
"location": "Greater Seattle Area",
"startDate": "Feb 2014",
"endDate": null,
"duration": "12 years 10 months",
"description": null,
"currentPosition": true
}
],
"education": [
{
"school": "The University of Chicago Booth School of Business",
"degree": null,
"startDate": "1994",
"endDate": "1996"
}
],
"articles": [
{
"title": "My annual letter: Building the frontier ecosystem",
"url": "https://www.linkedin.com/pulse/my-annual-letter-building-frontier-ecosystem-satya-nadella-iujec",
"publishedAt": "2026-10-21T20:41:14.000+00:00",
"likes": 8479
}
],
"recentPostsCount": 5,
"company": {
"name": "Microsoft",
"industry": "Software Development",
"companySize": "10,001+ employees",
"employeesOnLinkedIn": 231116,
"followers": 29468536,
"hqCity": "Redmond",
"hqCountry": "US",
"website": "https://news.microsoft.com/"
},
"scrapedAt": "2026-11-07T16:41:47.821Z"
}
FieldRead it like this
headlineEmpty when the profile page shows no headline to visitors
experience[].titleEmpty when the page shows only the employer's name
followersAn exact count where the page gives one, otherwise LinkedIn's rounded figure turned into a number (3K becomes 3000)
connectionsText as LinkedIn writes it: 500+ means 500 or more
startDate, endDateAs the page writes them, Feb 2014 or 2018. endDate is empty for a current position
Picture linksLinkedIn's own image links. They stop working after a while, so save the image if you need it

🧾 Reading the output

Every real row has ok: true and recordType: "profile". Rows with ok: false are free notes, one per entry that could not be read, with errorCode and error saying why:

errorCodeWhat happened
NOT_SERVEDThe profile was not served this run. Re-run it later. A misspelled profile name ends here too
BAD_INPUTThe entry is not a profile link or name. Nothing was read for it
TIME_LIMITThe run reached its time limit; notRead lists the profiles it did not get to
COST_LIMITThe run reached the maximum cost you set; notRead lists the rest

An empty run returns one sample row with _sample: true. To keep only real profiles, filter on ok being true and recordType being profile. The Notes view of the dataset lists the free rows on their own.

💡 What people use it for

  • Recruiters checking a shortlist: current employer, location and job history for each candidate, in one sheet.
  • Sales teams cleaning a CRM: which contacts moved company, with the new employer's size and industry from the add-on.
  • Researchers comparing public profiles of a group, such as a conference's speakers or a company's leadership.
  • Anyone with a column of LinkedIn links that needs names, titles and places next to them.

A simple chain: take the profile links from your CRM export, run them here with Add current company details on, then filter rows where currentCompany changed since your last run.

🚧 What it does not do

  • No e-mail addresses or phone numbers.
  • No search by name, job title or company: give it profile links or names.
  • No posts. A profile's recent posts are counted in recentPostsCount only.
  • Nothing from inside a LinkedIn account: no messages, no contact lists, nothing only signed-in members see.
  • It is not an official LinkedIn tool. Dami's Studio is independent and is not affiliated with or endorsed by LinkedIn, or by any other company named on this page.

🧭 Which LinkedIn scraper do you need?

If you wantUse
A person's public profile from its linkThis one
A company's size, industry, followers and headquartersLinkedIn Companies Scraper
The posts a company page publishesLinkedIn Company Posts Scraper
Job listingsLinkedIn Jobs Scraper
The ads a company runsLinkedIn Ads Scraper

❓ Questions people ask

Do I need a LinkedIn account to scrape profiles?

No. You don't need a LinkedIn account, a cookie or a login. The actor reads the public page that LinkedIn shows to anyone who opens the link.

Why did a profile come back as a free row instead of data?

LinkedIn did not serve that profile's public page to the run, and a link with a typo ends the same way. Check the link in a private browser window, then run it again later. You are not charged for it.

Why do the job titles or numbers differ from what I see on LinkedIn?

When you are signed in, LinkedIn shows you more than it shows a visitor, and follower counts change every day. Open the profile in a private window to see the version the actor reads.

Can I call it from code or an AI assistant?

Yes. The API tab has ready-made calls, and AI assistants can use it through Apify's MCP server at https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/linkedin-profiles-scraper. In Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("dami_studio/linkedin-profiles-scraper").call(
run_input={"profileUrls": ["satyanadella"], "maxProfiles": 10},
max_total_charge_usd=0.05,
)
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
if row.get("ok") is False:
continue
print(row["fullName"], row["currentCompany"])

The actor reads public profiles the way a signed-out visitor sees them, with no account and nothing private. Profiles are personal data, so GDPR and similar laws apply to what you keep and how you use it: keep only what you need, and mind the rules on contacting people. LinkedIn's own terms still apply to what you do with the data. Apify has a good write-up on the legality of web scraping. We are not lawyers, and this is not legal advice.

🆘 If something breaks

Open an issue on the actor's Issues tab. Include the run ID and the profile link that went wrong, and we will look at it.