LinkedIn Profile Extractor & Enricher (No Login Required) avatar

LinkedIn Profile Extractor & Enricher (No Login Required)

Pricing

from $3.50 / 1,000 results

Go to Apify Store
LinkedIn Profile Extractor & Enricher (No Login Required)

LinkedIn Profile Extractor & Enricher (No Login Required)

Extract public LinkedIn profiles from URLs or IDs without login. Get name, headline, location, about, followers, current role, experience, education, skills, certifications, languages, projects and more as clean JSON. Bulk input, live results, no cookies needed.

Pricing

from $3.50 / 1,000 results

Rating

0.0

(0)

Developer

Insights Data

Insights Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

👤 What is LinkedIn Profile Extractor & Enricher?

LinkedIn Profile Extractor & Enricher turns a list of LinkedIn profile URLs or public identifiers into clean, structured LinkedIn profile data for sales, recruiting and research teams. Just paste your profile links and click Start: no LinkedIn account, no cookies and no coding needed. You get name, headline, location, about text, followers, current position, experience, education, skills, certifications, languages, projects, publications, websites and more.

Note: the Actor returns public profile details only. It does not return email addresses or phone numbers.

It's a LinkedIn profile scraper for people who already know which profiles they want and need the public details in a spreadsheet, CRM or database. Think of it as LinkedIn profile enrichment: you bring the links, it fills in the profile details. Use it to:

  • Add context to lead lists: LinkedIn lead enrichment for sales prospecting. Add current job titles, companies and locations to the names you already have (no emails or phone numbers).
  • Update CRM records: LinkedIn CRM enrichment for contacts that already have a profile link. You can schedule runs to refresh larger lists.
  • Support recruiting: LinkedIn recruiting research with work history, education and skills for each candidate on your shortlist.
  • Research accounts before outreach: read the headline, about text and websites of the people you're about to contact.
  • Study career paths: compare roles, schools and fields of study across a group of profiles.
  • Feed data pipelines: every profile is one JSON row, ready for a database, a vector store or an LLM workflow.

What can LinkedIn Profile Extractor & Enricher do?

  • 📦 Bulk input: a bulk LinkedIn profile scraper for long lists. Paste many profile URLs or public identifiers at once, one per line. Duplicates are skipped and not billed.
  • 🔓 No login, no cookies: you never connect your LinkedIn account.
  • ⚡ Live results: each profile appears in the Output tab as soon as it's read.
  • 🧩 13 ready-made views: overview, identity, about, experience, education, skills and languages, certifications, projects, publications, recommendations, honors and awards, volunteering, websites.
  • 🧾 A status for each input: the free Inputs table is designed to give each link you entered a row with its status and a plain-language reason.
  • 🙅 Empty means empty: fields the public page doesn't show are left empty (null or []) instead of being filled with guesses.
  • 🛡️ Apify Proxy when needed: if LinkedIn limits access, the Actor switches to Apify Proxy by itself. A run can still stop early if LinkedIn keeps limiting access.
  • 🔌 A LinkedIn data extractor on the Apify platform: run it via API, schedule runs, monitor them, and export to JSON, CSV, Excel, XML or HTML.

📋 LinkedIn Profile Extractor data: what can you extract?

Each saved profile is one row with the fields below (names exactly as in the dataset). If you need a LinkedIn profile details extractor for a lead list, these are the details you get:

FieldWhat you get
👤 fullName, firstName, lastNameName as shown on the profile
🔗 publicIdentifier, profileUrlThe profile's public identifier and a clean profile link
📝 headlineThe headline under the name
📍 locationLocation shown on the profile
📄 aboutThe About / summary text
🤝 connectionsCountConnections as shown. LinkedIn shows "500+" for large networks, saved as 500, so 500 means "500 or more"
👥 followerCountFollower count
💼 currentPositionTitle and company of the first position without an end date
💼 experienceTitle, company, start and end date, location and description per position
🎓 educationSchool, degree, field of study, start and end date
🧠 skillsSkills listed publicly
📜 certificationsName, issuer, issue date, expiration date and link
🗣️ languagesLanguages listed on the profile
🛠️ projectsTitle, dates, description and link
📚 publicationsTitle, publisher, date, description and link
💬 recommendationsPublic recommendations: name and text
🏆 honorsAndAwardsTitle, issuer, date and description
💚 volunteeringRole, organization, cause, dates and description
🌐 websitesWebsite links from the profile
🆔 idLinkedIn member ID, when the page shows exactly one
📸 photoUrlLink to the profile photo
⚠️ errorEmpty (null) for every saved profile. It's kept so every row has the same fields; problems with an input are reported in the Inputs table instead

Note: LinkedIn hides some sections from logged-out visitors on many profiles (often skills or certifications). These fields stay empty. Dates are YYYY, YYYY-MM or YYYY-MM-DD, depending on what the profile shows; any other date format is kept as the original text. followerCount can be a rounded number when the profile shows only a short form such as "12M".

Looking for a LinkedIn profile picture extractor? The Actor gives you the photo link (photoUrl), not the image file.

What data can't LinkedIn Profile Extractor & Enricher extract?

  • Email addresses and phone numbers
  • Posts, activity, comments and reactions
  • Company pages, school pages and job posts (person profiles only)
  • Profiles that are private or hidden from logged-out visitors
  • Profiles given as Sales Navigator links or numeric / internal profile IDs (these need a login)

Need LinkedIn job posts instead? Try Advanced LinkedIn Job Search API.


🧭 How to scrape LinkedIn profiles

LinkedIn Profile Extractor & Enricher is designed for an easy start, even if you've never extracted data from the web before. Here's how to scrape LinkedIn data without writing code:

  1. Create a free Apify account using your email.
  2. Open LinkedIn Profile Extractor & Enricher. It runs as a LinkedIn profile extractor online, in your browser, with nothing to install.
  3. Paste your profile links or public identifiers into LinkedIn profile URLs, one per line. Leave the other settings as they are.
  4. Click Start. The Log tab on the run page shows progress messages for each profile.
  5. Open the Output tab to see the results. For a LinkedIn profile data download, go to Storage → Datasets → Export and choose JSON, CSV, Excel, XML or HTML.

💲 How much does it cost to scrape LinkedIn profiles?

LinkedIn Profile Extractor & Enricher uses pay-per-event pricing. Your bill has three parts:

  1. Results: a price for each profile saved to the dataset. It depends on your Apify plan (table below). Failed, skipped and duplicate inputs are not billed.
  2. Actor start: $0.00005 per run at the default 1 GB memory.
  3. Platform usage: the compute the run uses, billed at your Apify plan's own rates. It isn't included in the prices below.

The plan discount applies to the result price only. The start fee is the same on every plan, and platform usage is billed at your Apify plan's own rates.

Apify planPrice per profilePrice per 1,000 profiles
🆓 Free$0.005$5.00
🌱 Starter$0.0045$4.50
🚀 Scale$0.004$4.00
🏢 Business and higher$0.0035$3.50

Example result charges (the start fee and platform usage come on top):

ExamplePlanResult charges
🆓 10 profiles in one runFreeabout $0.05
🌱 1,000 profiles in one runStarterabout $4.50
🚀 1,000 profiles in one runScaleabout $4.00
🏢 1,000 profiles in one runBusiness and higherabout $3.50

Platform usage depends on your run, so there's no fixed figure for it here. Start with a small test run (for example 10 profiles), check its total cost on the run page, and scale up from there.

If a run stops early (you stop it, it reaches your maximum charge limit, or LinkedIn limits access), the profiles saved so far stay in your dataset. You pay for those profiles, plus the start fee and the platform usage of the time the run was active. Links that weren't tried are not billed.

To cap your spending, set a maximum charge limit in the run options when you start a run. When the limit is reached, the Actor stops and keeps every profile saved so far.

See the pricing tab for the current prices.

Is scraping LinkedIn profiles free?

You can start for free. The Apify Free plan gives you $5 in monthly credit, and Free-plan runs work the same as paid runs. The credit is used up by the result charges and platform usage together, so the number of profiles you get is lower than $5 ÷ $0.005 = 1,000. So you can scrape LinkedIn profiles free of charge for small lists.

Want to try the LinkedIn profile API free? Create a free account, run 10 profiles and check the results and the cost before you spend anything.


⬇️ LinkedIn Profile Extractor input

To run LinkedIn Profile Extractor & Enricher, you only need one or more LinkedIn profile URLs or public identifiers. Set the input in the Actor's interface or send it as JSON via the API.

Settings most people change

SettingFieldWhat it does
🔗 LinkedIn profile URLsurls (required)Your profiles, one per line. Full URLs, regional links and bare public identifiers all work. This is the only field most people need.
🛡️ Proxy configurationproxyConfigurationLeave the default. The run starts without a proxy and switches to Apify Proxy by itself if LinkedIn limits access. "useApifyProxy": false only sets how the run starts; it doesn't turn that switch off. You can also choose a proxy to start with.

Got a CRM column full of profile links? That's LinkedIn URL enrichment: paste the column into urls and you get one structured row per profile.

Optional extra lists (most people can ignore these)

Each of these is merged with urls into one list. They exist so you can send input from other tools without renaming fields.

SettingFieldWhen to use it
🎯 Target URLsqueriesA second list of profile URLs or public identifiers
🔖 Public identifierspublicIdentifiersA list of public identifiers only, e.g. satyanadella for https://www.linkedin.com/in/satyanadella
🔢 LinkedIn profile IDsprofileIdsNumeric or internal LinkedIn IDs are not supported: they can't be opened without a login, so they're listed in the Inputs table as failed (not billed). Profile URLs or public identifiers put here are handled like normal inputs.

Here's an example that reads two public profiles:

{
"urls": [
"https://www.linkedin.com/in/williamhgates",
"https://www.linkedin.com/in/satyanadella"
],
"proxyConfiguration": { "useApifyProxy": false }
}

See the input tab for a full description of all fields.

The Actor cleans up query strings and trailing slashes, accepts regional subdomains, and skips duplicates.

  • ✅ Good: https://www.linkedin.com/in/satyanadella
  • ✅ Good: satyanadella
  • ✅ Good: https://de.linkedin.com/in/satyanadella/?trk=public_profile
  • ❌ Bad: https://www.linkedin.com/company/microsoft (a company page, not a person)
  • ❌ Bad: a Sales Navigator link (/sales/...) or a numeric member ID (these need a login)

⬆️ LinkedIn Profile Extractor output

Results appear in the run's Output tab while the run is going. Your LinkedIn profile dataset comes with 13 views (overview, experience, education and so on).

  • Download: for a LinkedIn profile data export, go to Storage → Datasets → Export and choose JSON, CSV, Excel, XML or HTML. You can also pick only the fields you need there.
  • JSON: to export LinkedIn profile to JSON for a script or LLM pipeline, choose JSON there or read the dataset via the API.
  • Spreadsheets: in CSV or Excel, nested fields such as experience are split into numbered columns (experience/0/title, experience/1/title, and so on). For one row per position or school, open the Experience or Education view instead.

The run also gives you two extra results, both linked on the run's Output tab:

  • 🧾 Inputs: one row per input with input, status, fullName, publicIdentifier, profileUrl, errorCode and errorMessage. Free, not billed.
  • 📊 Run summary: the run totals (profiles saved, profiles billed, failed, skipped, duration). It's stored as a record called SUMMARY in the run's storage, which you can also find in the Storage tab.

Inputs table statuses

StatusWhat it meansBilled?
✅ savedThe profile was read and saved to the datasetYes
❌ failedThe input couldn't be read. errorMessage says why: profile doesn't exist, private or hidden, not a person profile link, numeric ID, LinkedIn limited access, connection problem, or page layout not readableNo
⏭️ skippedNot tried, or not saved, because the run stopped first: "spend limit reached" (your maximum charge limit), "LinkedIn is limiting access" or "connection lost"No
🔁 duplicateThe same profile appears earlier in your listNo

JSON example

Results for the input example above (long values shortened with "..."):

[
{
"firstName": "Bill",
"lastName": "Gates",
"fullName": "Bill Gates",
"publicIdentifier": "williamhgates",
"profileUrl": "https://www.linkedin.com/in/williamhgates",
"headline": "Chair, Gates Foundation and Founder, Breakthrough Energy",
"location": "Seattle, Washington, United States",
"about": "Chair of the Gates Foundation. Founder of Breakthrough Energy.",
"connectionsCount": 500,
"followerCount": 40730830,
"experience": [
{ "title": "Co-chair", "companyName": "Gates Foundation", "startDate": "2000", "endDate": null, "location": null, "description": null }
],
"education": [
{ "schoolName": "Harvard University", "degreeName": null, "fieldOfStudy": null, "startDate": "1973", "endDate": "1975" }
],
"skills": ["Software Development"],
"certifications": [],
"languages": ["English"],
"projects": [],
"publications": [],
"websites": ["https://gatesnot.es/sourcecode-li"],
"id": "251749025",
"photoUrl": "https://media.licdn.com/dms/image/v2/...",
"currentPosition": { "title": "Co-chair", "companyName": "Gates Foundation" },
"recommendations": [],
"honorsAndAwards": [],
"volunteering": [],
"error": null
},
{
"firstName": "Satya",
"lastName": "Nadella",
"fullName": "Satya Nadella",
"publicIdentifier": "satyanadella",
"profileUrl": "https://www.linkedin.com/in/satyanadella",
"headline": "Chairman and CEO at Microsoft",
"location": "Redmond, Washington, United States",
"about": "As chairman and CEO of Microsoft, I define my mission and that of my company as empowering every person and every organization on the planet to achieve more.",
"connectionsCount": 500,
"followerCount": 12229902,
"experience": [
{ "title": "Chairman and CEO", "companyName": "Microsoft", "startDate": "2014-02", "endDate": null, "location": "Greater Seattle Area", "description": null }
],
"education": [
{ "schoolName": "University of Wisconsin-Milwaukee", "degreeName": "Master's Degree", "fieldOfStudy": "Computer Science", "startDate": null, "endDate": null }
],
"skills": [],
"certifications": [],
"languages": [],
"projects": [],
"publications": [],
"websites": ["https://snscratchpad.com/"],
"id": "19186432",
"photoUrl": "https://media.licdn.com/dms/image/v2/...",
"currentPosition": { "title": "Chairman and CEO", "companyName": "Microsoft" },
"recommendations": [],
"honorsAndAwards": [],
"volunteering": [],
"error": null
}
]

Inputs table example

{
"input": "https://www.linkedin.com/company/microsoft",
"status": "failed",
"fullName": null,
"publicIdentifier": null,
"profileUrl": null,
"errorCode": "invalid_input",
"errorMessage": "Not a LinkedIn profile URL or public identifier. This is a LinkedIn company link, not a person's profile."
}

💡 Tips and known limits

How many results can you scrape with LinkedIn Profile Extractor & Enricher?

There is no per-run limit, and your maximum charge limit is respected. The number you get depends on how many of your profiles are public and on whether LinkedIn limits access during the run. A quick test run with a few of your profiles shows what to expect.

What happens when LinkedIn limits access?

The Actor first switches to Apify Proxy. If several profiles in a row still can't be loaded, the run stops early. Every profile saved so far is kept, and the links that weren't tried are marked "Not attempted: LinkedIn is limiting access" in the Inputs table. Try those links again in a later run.

Known issues

  • Hidden sections: some sections are hidden from logged-out visitors on many profiles, so they come back empty.
  • Connections: connectionsCount stops at 500 because LinkedIn shows "500+".
  • Followers: followerCount can be rounded when only a short form like "12M" is shown.
  • Page changes: the Actor is designed to report a profile it can't read (layout_changed in the Inputs table) rather than save wrong data.

🔌 LinkedIn Profile Extractor integrations and API

Can I use LinkedIn Profile Extractor & Enricher as an API?

Yes. The Apify API lets you use the Actor as a LinkedIn profile API: start runs, schedule them, and fetch results from your own code. API runs are charged the same way as runs started in Console, so the LinkedIn profile API pricing is the plan table in the pricing section above. Use the apify-client NPM package for Node.js or the apify-client PyPI package for Python. See the API tab for ready-to-use code.

Is there a LinkedIn profile scraper API for my own app?

This Actor can be one. Send a list of profile URLs and get JSON back with the same fields as the dataset, which makes it a simple LinkedIn profile data API for internal tools. Each saved profile is billed as one result.

Can I use it as a LinkedIn profile enrichment API for my CRM?

Yes, for contacts that already have a profile link. Send the links from your CRM through the API or an integration such as Make or Zapier, and write the returned fields (job title, company, location, experience) back to each contact. Used this way, it's a LinkedIn enrichment API for public profile details. It doesn't add emails or phone numbers.

How to use the LinkedIn profile scraper Python client

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("insights_data/linkedin-profile-extractor-enricher").call(run_input={
"urls": [
"https://www.linkedin.com/in/williamhgates",
"https://www.linkedin.com/in/satyanadella",
],
"proxyConfiguration": {"useApifyProxy": False},
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["fullName"], "-", item["headline"])

Can I integrate LinkedIn Profile Extractor & Enricher with other apps?

Yes. Connect it with almost any cloud service through Apify integrations: Make, Zapier, n8n, Slack, Google Sheets, Google Drive, Airbyte, GitHub, LangChain and more. Use webhooks to trigger actions whenever a run finishes, and Schedules in Apify Console to run it automatically.

Example workflow: schedule a weekly LinkedIn profile data fetch for the profile links in a Google Sheet, then send the current job titles to your CRM. To spot job changes, compare each run with the previous one in your sheet or CRM. You can also build a LinkedIn profile scraper n8n workflow that reads new profile links, runs the Actor and writes the results back.

Can I use LinkedIn Profile Extractor & Enricher with AI agents (MCP)?

Yes. Connect it to Claude and other AI assistants through the Apify MCP server. Open the MCP tab for setup steps.


🧰 Other LinkedIn and recruiting scrapers

These Actors from the same author complement LinkedIn Profile Extractor & Enricher when you research jobs, companies and founders:

  • 💼 Advanced LinkedIn Job Search API: scrape public LinkedIn jobs by search URL, job URL or title + location. Get title, company, salary, seniority, applicants and the full description as clean JSON. No login or cookies needed.
  • 🦄 Y Combinator Scraper: extract company profiles, founders, open roles, press and Launch YC posts from Y Combinator's public directory. Built for lead gen, recruiting and deal sourcing.
  • 📌 Welcome to the Jungle Jobs Scraper: scrape Welcome to the Jungle jobs by keyword, location, salary, remote or direct URLs. Ideal for recruiting intel and salary research.

❓ FAQ

Web scraping is generally legal if you extract publicly available data, but you should respect personal data and intellectual property rules. LinkedIn profiles contain personal data, so laws such as the GDPR apply: only collect it with a legitimate reason, and take LinkedIn's User Agreement into account. This Actor reads only what LinkedIn shows to logged-out visitors. This isn't legal advice; check the rules for your use case.

Can you scrape LinkedIn profiles without an account?

Yes, for public profile data. The Actor reads only what logged-out visitors can see, so you don't need a LinkedIn account to use it.

LinkedIn scraper no login: is my own account at risk?

No. Your LinkedIn account isn't connected or used at all, so nothing in a run happens under your name.

LinkedIn profile scraper no cookies: what does that mean?

You don't copy any cookies from your browser into the input. You only enter profile links or public identifiers, and the Actor opens those public profiles the way a logged-out visitor does.

How does LinkedIn Profile Extractor & Enricher work?

It works like a logged-out visitor opening each profile page, only faster. As a LinkedIn profile scraper without login, it cleans up your links, removes duplicates, opens each public profile, reads the visible sections and saves one structured row right away. Each input also gets a status row in the Inputs table, and the run summary is saved at the end.

Do I need LinkedIn profile API access or a developer app?

No. The official way to get LinkedIn API profile data is through LinkedIn's developer programs, which start with creating a developer app. This Actor doesn't need one: you paste profile links and get the public profile details back. If you already have official API access that covers your use case, that may suit you better.

How is LinkedIn Profile Extractor & Enricher different from copying profiles by hand?

FeatureLinkedIn Profile Extractor & EnricherCopying by hand
📦 Many profiles at once✅ Paste a whole list❌ One at a time
🧩 Structured fields (experience, education, skills)✅ Separate fields and views❌ Free text you have to sort
🔌 API, schedules, integrations✅❌
🧾 Status for inputs that couldn't be read✅ Inputs table❌
💲 CostPer saved profile (see pricing)Your time

Why scrape LinkedIn profile data?

  • Sales: LinkedIn data enrichment for lead lists and account research (job titles, companies, locations; no contact details).
  • Marketing ops: a LinkedIn enrichment tool for keeping contact records current.
  • Recruiting: compare candidates' experience, education and skills side by side.
  • Research: a LinkedIn profile information extractor for studying career paths, schools and job titles across a group.
  • AI and data teams: structured profile rows for search, matching or LLM pipelines.

What can a LinkedIn public profile scraper see?

Only what LinkedIn shows to logged-out visitors. As a LinkedIn public profile scraper, it can't read private profiles, profiles hidden from logged-out viewers, or sections LinkedIn hides from the public. These come back empty or are listed in the Inputs table.

Why am I getting fewer results than expected?

  1. Check the Inputs table (on the run's Output tab): it gives a reason for each input that wasn't saved.
  2. Duplicates: the same profile given twice is saved once.
  3. LinkedIn limited access: the run may stop early. Run the "Not attempted" links again later.
  4. Maximum charge limit: if you set one, the run stops when it's reached.

📧 Support and feedback

Found a bug or have a feature request? Please create an issue on the Issues tab.

Need a custom solution, more fields or a different data source? Contact us at hello.insights.data@gmail.com.

Built and maintained by insights_data on Apify.