How to Scrape LinkedIn Data in 2026 (Profiles, Companies & Posts)
LinkedIn has over 1 billion members and is the most concentrated source of professional data on the internet. Job titles, company sizes, career histories, contact information, company announcements, and video content from executives — it's all publicly visible on the platform. For sales teams, recruiters, market researchers, and developers building professional data pipelines, LinkedIn is irreplaceable.
Getting that data programmatically is another story.
Why LinkedIn Scraping Is Uniquely Hard
LinkedIn's official API is not accessible to most developers. The main partner API — which gives access to profile and company data — requires approval through LinkedIn's Marketing Developer Platform, a process gated behind a review that the vast majority of applicants don't pass. The public API that any developer can access covers only basic functionality like sharing posts and pulling your own profile data. Competitor and prospecting use cases are explicitly outside what LinkedIn makes available.
Beyond the API, LinkedIn has some of the most aggressive anti-bot infrastructure of any major platform:
- TLS fingerprinting: LinkedIn identifies and blocks non-browser HTTP clients at the network level
- JavaScript challenges: Even headless Chromium gets flagged without significant fingerprint spoofing
- Login walls: Most meaningful data (full profiles, post feeds, contact info) requires an authenticated session
- IP rate limiting: Repeated requests from the same IP get blocked quickly, even from authenticated accounts
- Legal posture: LinkedIn has actively pursued scrapers in court, though the 9th Circuit ruled in 2022 that scraping publicly available data is generally legal
Maintaining a homegrown LinkedIn scraper means managing authenticated sessions, rotating IPs, spoofing browser fingerprints, handling CAPTCHA, and rebuilding your selectors every time LinkedIn updates its frontend. Most teams find that the maintenance burden isn't worth it.
The Practical Solution
A LinkedIn scraping API handles all of that infrastructure. You send a URL, you get back structured JSON. No cookies to manage, no proxies to rotate, no session handling.
SocialKit's LinkedIn APIs cover five endpoints: personal profiles, company pages, company post feeds, individual posts, and video transcripts. Here's how each one works.
1. Scrape a LinkedIn Profile
Pull career history, headline, location, follower count, skills, and professional details from any public LinkedIn profile.
curl "https://api.socialkit.dev/linkedin/profile?access_key=YOUR_KEY&url=https://www.linkedin.com/in/jeffweiner08/"
Example response:
{
"name": "Jeff Weiner",
"headline": "Executive Chairman at LinkedIn",
"location": "San Francisco Bay Area",
"followers": 10400000,
"connections": "500+",
"about": "I'm fortunate to have had the opportunity to lead LinkedIn for over a decade...",
"experience": [
{
"title": "Executive Chairman",
"company": "LinkedIn",
"duration": "2020 - Present"
},
{
"title": "Chief Executive Officer",
"company": "LinkedIn",
"duration": "2008 - 2020"
}
],
"education": [
{
"school": "University of Pennsylvania",
"degree": "BS, Economics"
}
]
}
Good for: sales prospecting, lead qualification, recruiter research, building professional contact datasets.
2. Scrape a LinkedIn Company Page
Pull company size, industry, follower count, headquarters location, and description from any LinkedIn company page.
curl "https://api.socialkit.dev/linkedin/company?access_key=YOUR_KEY&url=https://www.linkedin.com/company/openai"
Example response:
{
"name": "OpenAI",
"description": "OpenAI is an AI research and deployment company. Our mission is to ensure that artificial general intelligence benefits all of humanity.",
"industry": "Technology, Information and Internet",
"company_size": "1,001-5,000 employees",
"followers": 2800000,
"website": "https://openai.com",
"headquarters": "San Francisco, California",
"founded": "2015",
"specialties": ["Artificial Intelligence", "Machine Learning", "Research"]
}
Good for: competitive intelligence, market research, ICP (ideal customer profile) building, account-based marketing.
3. Get Company Posts
Fetch recent posts from a LinkedIn company page — with engagement metrics for each post.
curl "https://api.socialkit.dev/linkedin/company-posts?access_key=YOUR_KEY&url=https://www.linkedin.com/company/openai&limit=10"
Example response:
{
"posts": [
{
"text": "We're excited to share our latest research on reasoning in language models...",
"likes": 4200,
"comments": 380,
"shares": 720,
"posted_at": "2026-06-10T14:00:00.000Z",
"url": "https://www.linkedin.com/posts/openai_..."
},
{
"text": "Hiring! We're looking for engineers to join our safety team in San Francisco.",
"likes": 1800,
"comments": 210,
"shares": 340,
"posted_at": "2026-06-05T10:00:00.000Z",
"url": "https://www.linkedin.com/posts/openai_..."
}
],
"count": 10
}
Good for: tracking competitor content strategy, monitoring what companies in your space are announcing, understanding which content formats drive LinkedIn engagement in your industry.
4. Get a Specific LinkedIn Post
Fetch complete data for any individual LinkedIn post by URL — including author details and the full engagement breakdown.
curl "https://api.socialkit.dev/linkedin/post?access_key=YOUR_KEY&url=https://www.linkedin.com/posts/sam-altman_..."
Example response:
{
"text": "Excited to share what we've been working on. This is a significant step toward our mission...",
"author": {
"name": "Sam Altman",
"headline": "CEO at OpenAI",
"profile_url": "https://www.linkedin.com/in/sam-altman-63246/"
},
"likes": 12400,
"comments": 890,
"shares": 2100,
"posted_at": "2026-06-15T10:00:00.000Z",
"post_type": "text"
}
Good for: capturing engagement data for a specific announcement, building a dataset of high-performing LinkedIn posts, tracking individual influencers' content.
5. Get a Video Transcript from a LinkedIn Post
Pull spoken-word transcripts from LinkedIn native video posts — with timestamps per segment. LinkedIn video is one of the most underserved data sources in the professional scraping space.
curl "https://api.socialkit.dev/linkedin/transcript?access_key=YOUR_KEY&url=https://www.linkedin.com/posts/garyvaynerchuk_..."
Example response:
{
"transcript": "I want to talk about why most companies get LinkedIn completely wrong. The platform has fundamentally changed over the last two years...",
"segments": [
{ "start": 0.0, "end": 4.5, "text": "I want to talk about why most companies get LinkedIn completely wrong." },
{ "start": 4.5, "end": 10.1, "text": "The platform has fundamentally changed over the last two years..." }
],
"duration": 245.7,
"language": "en"
}
Good for: feeding executive video content into AI pipelines, building searchable archives of LinkedIn video, content repurposing workflows.
Code Examples
Here's a Python wrapper that works across all five LinkedIn endpoints:
import requests
BASE_URL = "https://api.socialkit.dev"
def linkedin_api(endpoint, access_key, **params):
response = requests.get(
f"{BASE_URL}/linkedin/{endpoint}",
params={"access_key": access_key, **params}
)
response.raise_for_status()
return response.json()
# Examples
profile = linkedin_api("profile", "YOUR_KEY", url="https://www.linkedin.com/in/jeffweiner08/")
company = linkedin_api("company", "YOUR_KEY", url="https://www.linkedin.com/company/openai")
posts = linkedin_api("company-posts", "YOUR_KEY", url="https://www.linkedin.com/company/openai", limit=10)
post = linkedin_api("post", "YOUR_KEY", url="https://www.linkedin.com/posts/sam-altman_...")
transcript = linkedin_api("transcript", "YOUR_KEY", url="https://www.linkedin.com/posts/garyvaynerchuk_...")
And in Node.js:
const BASE = "https://api.socialkit.dev";
async function linkedinApi(endpoint, accessKey, params = {}) {
const query = new URLSearchParams({ access_key: accessKey, ...params });
const res = await fetch(`${BASE}/linkedin/${endpoint}?${query}`);
if (!res.ok) throw new Error(`API error: ${res.status}`);
return res.json();
}
// Examples
const profile = await linkedinApi("profile", "YOUR_KEY", { url: "https://www.linkedin.com/in/jeffweiner08/" });
const posts = await linkedinApi("company-posts", "YOUR_KEY", { url: "https://www.linkedin.com/company/openai", limit: 10 });
Use Cases
Sales prospecting: Pull profiles for decision-makers at target accounts. Combine headline, company size, and recent activity to qualify leads before your team reaches out.
Lead generation: Identify people who match your ICP by combining company data (size, industry, headcount) with profile data (job title, seniority). Build targeted contact lists without manually browsing LinkedIn.
Competitive intelligence: Monitor what your competitors are announcing on LinkedIn. Track their company posts to see what products they're launching, who they're hiring, and what content is driving the most engagement.
Content research: Pull high-performing posts from thought leaders in your industry. Analyze what formats, topics, and post lengths drive engagement on LinkedIn in your niche.
HR and recruiting: Research candidates, verify employment history, and understand career trajectories without manual copy-paste from the platform.
AI pipelines: Feed LinkedIn video transcripts into RAG applications or LLMs. Executive talks, product demos, and industry commentary published as LinkedIn videos are a largely untapped training and analysis source.
Pricing
Each API call costs 1 credit. All LinkedIn endpoints are included on every plan:
| Plan | Credits | Price |
|---|---|---|
| Free | 20 | $0 |
| Basic | 2,000/month | $13/mo |
| Pro | 10,000/month | $27/mo |
| Ultimate | 50,000/month | $95/mo |
The free tier gives you 20 credits to test every LinkedIn endpoint and validate the data structure before you build anything.
Explore the full LinkedIn API documentation or get your free access key to start pulling data today.