LinkedIn Profile Scraper avatar

LinkedIn Profile Scraper

Pricing

from $5.20 / 1,000 profile scrapeds

Go to Apify Store
LinkedIn Profile Scraper

LinkedIn Profile Scraper

Extract LinkedIn profile data at scale — name, headline, location, about, work experience, education, follower count, and profile image. No login required. Pure HTTP with residential proxy.

Pricing

from $5.20 / 1,000 profile scrapeds

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

11

Total users

5

Monthly active users

2 days ago

Last modified

Share

Scrape LinkedIn public profiles at scale — no login, no cookies, no browser. Extract structured data from any LinkedIn profile URL using fast HTTP requests and residential proxies.

What does LinkedIn Profile Scraper do?

LinkedIn Profile Scraper extracts structured data from public LinkedIn profile pages. It works entirely through HTTP requests with residential proxies — no LinkedIn account, no login credentials, and no cookies required.

For each profile, the scraper returns:

  • Full name, headline, and location
  • About/summary section
  • Follower and connection counts
  • Profile image URL
  • Current positions with company name, title, and start date
  • Education history with institution, degree, and years
  • Languages and websites
  • Timestamp of when the data was scraped

The actor uses JSON-LD structured data embedded in LinkedIn's public profile pages, which means the extraction is reliable and fast. It processes profiles in parallel and automatically retries failed requests up to 5 times.

Who is it for?

🔍 Recruiters and talent sourcers — Build candidate pipelines by scraping profiles in bulk. Export to your ATS or spreadsheet for easy filtering by headline, location, and experience.

📊 Sales and business development teams — Enrich your prospect lists with up-to-date LinkedIn data. Get headlines, company info, and follower counts to prioritize outreach.

🧪 Market researchers — Analyze workforce trends, job title distributions, and career trajectories across industries at scale.

🤖 Data engineers and developers — Feed structured LinkedIn data into your pipelines, CRMs, or machine learning models via API or webhooks.

📈 Growth hackers and marketers — Identify influencers and thought leaders by follower count, build targeted audience segments, and track competitor teams.

Why use LinkedIn Profile Scraper?

🚫 No login required — Unlike most LinkedIn scrapers, this one works without any LinkedIn account. No risk of account bans or credential management.

Fast HTTP-based scraping — No headless browser overhead. Profiles are fetched via got-scraping with Cheerio parsing, making it significantly faster and cheaper than browser-based alternatives.

🔄 Automatic retries — LinkedIn occasionally returns 999 status codes as an anti-bot measure. The scraper automatically retries up to 5 times per profile with different proxy sessions.

💰 Pay per result — Only pay for successfully scraped profiles. Pricing starts with a free tier and scales affordably.

📦 Clean structured output — Every profile is returned as a flat JSON object ready for import into databases, spreadsheets, or APIs.

🔗 Flexible input — Pass full LinkedIn URLs or just profile slugs (e.g., williamhgates). The scraper handles both formats.

Data extraction table

FieldTypeDescription
nameStringFull name from the profile
linkedinUrlStringCanonical LinkedIn profile URL
headlineStringProfessional headline
locationStringLocation as displayed on the profile
aboutStringAbout/summary section text
followerCountNumberTotal follower count
connectionCountStringConnection count (may show "500+")
profileImageUrlStringURL to the profile photo
currentPositionsArrayCurrent job positions with title, company, startDate
educationArrayEducation entries with institution, degree, startYear, endYear
languagesArrayLanguages listed on the profile
websitesArrayWebsites linked on the profile
scrapedAtStringISO 8601 timestamp of when the profile was scraped

How much does it cost to scrape LinkedIn profiles?

LinkedIn Profile Scraper uses Apify's pay-per-event pricing model. You only pay for profiles that are successfully scraped.

TierMonthly priceProfiles includedCost per profile
🆓 Free$0~50 profiles~$0.003
💚 Personal$49/mo~16,000 profiles~$0.003
💼 Team$499/mo~166,000 profiles~$0.003
🏢 Business$999/mo~333,000 profiles~$0.003

Each run also incurs a small platform start fee of $0.005. For example, scraping 100 profiles in a single run costs approximately $0.005 + (100 × $0.003) = $0.305.

Residential proxy costs are included in the per-profile pricing — no hidden fees.

How to scrape LinkedIn profiles

  1. 📝 Go to the actor page — Navigate to LinkedIn Profile Scraper on Apify Store.
  2. ▶️ Click "Start" — Open the input configuration panel.
  3. 🔗 Add profile URLs — Paste LinkedIn profile URLs or slugs into the profileUrls field. One URL per line, for example: https://www.linkedin.com/in/williamhgates/.
  4. 🔢 Set max profiles — Optionally adjust maxProfiles to limit how many profiles to scrape (default: 100).
  5. 🚀 Run the scraper — Click "Start" and wait for results. Each profile takes a few seconds.
  6. 📥 Download results — Export your data as JSON, CSV, Excel, or connect it to your workflow via API or webhooks.

Input parameters

ParameterTypeRequiredDefaultDescription
profileUrlsArrayYesList of LinkedIn profile URLs or slugs to scrape. Accepts full URLs like https://www.linkedin.com/in/williamhgates/ or just the slug williamhgates.
maxProfilesIntegerNo100Maximum number of profiles to process from the input list.

Example input:

{
"profileUrls": [
"https://www.linkedin.com/in/williamhgates/",
"https://www.linkedin.com/in/satyanadella",
"jeffweiner08"
],
"maxProfiles": 50
}

Output example

Each scraped profile produces a JSON object with the following structure:

{
"name": "Bill Gates",
"linkedinUrl": "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. Co-founder of Microsoft.",
"followerCount": 40063481,
"connectionCount": "8",
"profileImageUrl": "https://media.licdn.com/dms/image/...",
"currentPositions": [
{
"title": "Co-chair",
"company": "Gates Foundation",
"startDate": "2000"
},
{
"title": "Founder",
"company": "Breakthrough Energy",
"startDate": "2015"
}
],
"education": [
{
"institution": "Harvard University",
"degree": null,
"startYear": 1973,
"endYear": 1975
}
],
"languages": [],
"websites": [],
"scrapedAt": "2026-03-21T23:03:09.634Z"
}

Results are stored in the default dataset and can be exported in JSON, CSV, XML, Excel, or accessed via the Apify API.

Tips and best practices

💡 Use full URLs when possible — While the scraper accepts bare slugs, full URLs reduce ambiguity and ensure correct profile resolution.

💡 Batch your requests — Running one actor call with 500 profiles is cheaper and faster than 500 individual runs, because you only pay the $0.005 start fee once.

💡 Expect some failures — LinkedIn's anti-bot system occasionally blocks requests with a 999 status code. The scraper retries automatically, but some profiles may still fail. Plan for a 5-10% failure rate on large batches.

💡 Deduplicate your input — Remove duplicate URLs before running to avoid paying for the same profile twice.

💡 Schedule regular runs — Use Apify's built-in scheduler to keep your LinkedIn data fresh. Weekly or monthly scrapes work well for most use cases.

💡 Monitor your runs — Check the run log for any profiles that failed after all retries. You can re-run just those URLs in a follow-up batch.

Integrations

LinkedIn Profile Scraper connects with your existing tools through Apify's integration ecosystem:

📊 Google Sheets — Automatically push scraped profiles to a Google Sheet. Great for recruiters maintaining candidate trackers.

🗄️ Webhooks — Trigger your backend API whenever a run completes. Process new profile data in real time.

💾 Amazon S3 / Google Cloud Storage — Export datasets directly to cloud storage for data lake ingestion.

📧 Zapier / Make — Connect to 5,000+ apps. For example, scrape a profile and automatically create a HubSpot contact.

🔄 Slack notifications — Get notified in Slack when a scraping batch completes with result counts.

🗃️ Apify Dataset API — Programmatically fetch results in JSON, CSV, or Excel format from any language or platform.

API usage

Call LinkedIn Profile Scraper programmatically using the Apify API. Here are examples in popular languages.

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('automation-lab/linkedin-profile-scraper').call({
profileUrls: [
'https://www.linkedin.com/in/williamhgates/',
'https://www.linkedin.com/in/satyanadella',
],
maxProfiles: 100,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((profile) => {
console.log(`${profile.name}${profile.headline}`);
});

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("automation-lab/linkedin-profile-scraper").call(run_input={
"profileUrls": [
"https://www.linkedin.com/in/williamhgates/",
"https://www.linkedin.com/in/satyanadella",
],
"maxProfiles": 100,
})
dataset = client.dataset(run["defaultDatasetId"]).list_items().items
for profile in dataset:
print(f"{profile['name']}{profile['headline']}")

cURL

# Start the actor run
curl -X POST "https://api.apify.com/v2/acts/automation-lab~linkedin-profile-scraper/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"profileUrls": ["https://www.linkedin.com/in/williamhgates/"],
"maxProfiles": 10
}'
# Fetch results (replace RUN_ID with the actual run ID from the response)
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_API_TOKEN&format=json"

Use with Claude AI (MCP)

This actor is available as a tool in Claude AI through the Model Context Protocol (MCP). Add it to Claude Desktop, Cursor, Windsurf, or any MCP-compatible client.

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com"
}
}
}

Example prompts

  • "Scrape the LinkedIn profile for Bill Gates and give me a summary of his current roles and background."
  • "Get LinkedIn data for these 10 profile URLs and create a comparison table of their headlines and locations."
  • "Pull LinkedIn profiles for the leadership team at OpenAI and tell me about their education backgrounds."

Learn more in the Apify MCP documentation.

Legality

Scraping publicly available data is generally considered legal based on the 2022 US Ninth Circuit ruling in hiQ Labs v. LinkedIn, which confirmed that scraping public profiles does not violate the Computer Fraud and Abuse Act (CFAA).

This actor only accesses publicly visible LinkedIn profile pages — the same data any visitor can see without logging in. It does not bypass any authentication, use stolen credentials, or access private data.

However, scraping may still violate LinkedIn's Terms of Service. Users are responsible for ensuring their use of scraped data complies with applicable laws including GDPR, CCPA, and other data protection regulations.

For more details, see Apify's guide on the legality of web scraping.

Frequently asked questions

Q: Do I need a LinkedIn account to use this scraper?

No. LinkedIn Profile Scraper works entirely without login credentials. It accesses public profile pages through residential proxies, so no LinkedIn account is needed.

Q: Why did some profiles return no data?

LinkedIn's anti-bot system sometimes returns a 999 status code, blocking the request. The scraper retries up to 5 times with different proxy sessions, but some profiles may still fail — especially if the profile has strict visibility settings or LinkedIn is actively rate-limiting. Try re-running the failed URLs in a separate batch.

Q: Can I scrape private profiles or profiles behind a login wall?

No. This scraper only extracts data from publicly visible profiles. If a profile requires signing in to view, it cannot be scraped by this actor.

Q: How fast is the scraping?

Each profile takes approximately 2-5 seconds to scrape, including retries. Profiles are processed sequentially to avoid triggering LinkedIn's rate limits. A batch of 100 profiles typically completes in 5-10 minutes.

Q: What format can I export the data in?

Results can be exported as JSON, CSV, XML, Excel (XLSX), or accessed directly through the Apify API. You can also push data to Google Sheets, webhooks, or cloud storage.

Q: Why does connectionCount show as a string?

LinkedIn displays connection counts differently depending on the profile. Some show exact numbers, others show "500+". The field is kept as a string to preserve this original formatting.

If you find LinkedIn Profile Scraper useful, check out these related actors from automation-lab:

🏢 LinkedIn Company Scraper — Scrape company pages for description, employee count, industry, and specialties.

💼 LinkedIn Jobs Scraper — Search and extract LinkedIn job listings with title, company, location, and description.

🔍 LinkedIn Jobs Enrichment — Enrich LinkedIn job postings with additional details and structured data.

📸 Instagram Scraper — Extract posts, profiles, and hashtag data from Instagram.

🐦 Twitter Scraper — Scrape tweets, user profiles, and search results from Twitter/X.

💙 Bluesky Scraper — Extract posts and profiles from Bluesky social network.

🎵 TikTok Scraper — Scrape TikTok videos, user profiles, and hashtag content.