LinkedIn Company Analytics: Track Any Business's Social Presence
LinkedIn is the most important social platform for B2B companies, but there's almost no way to see how competitors perform. LinkedIn's native analytics only cover pages you manage. Their official API is locked behind partnership programs that reject most applicants.
SociaVault gives you access to public LinkedIn company data, profile data, and post analytics. Here's how to use it for competitive intelligence.
Pull Any Company's LinkedIn Data
Get a company's followers, employee count, industry, and more:
const API_KEY = process.env.SOCIAVAULT_API_KEY;
const BASE = 'https://api.sociavault.com/v1/scrape';
const headers = { 'X-API-Key': API_KEY };
async function getCompanyProfile(companyUrl) {
const res = await fetch(
`${BASE}/linkedin/company?url=${encodeURIComponent(companyUrl)}`,
{ headers }
);
const data = (await res.json()).data;
if (!data) {
console.log('Company not found');
return null;
}
console.log(`\nLinkedIn Company: ${data.name || 'Unknown'}`);
console.log(` Followers: ${(data.followerCount || data.followers || 0).toLocaleString()}`);
console.log(` Employees: ${(data.staffCount || data.employeeCount || 0).toLocaleString()}`);
console.log(` Industry: ${data.industry || 'N/A'}`);
console.log(` Founded: ${data.founded || data.foundedYear || 'N/A'}`);
console.log(` Website: ${data.website || 'N/A'}`);
console.log(` Headquarters: ${data.headquarters || data.location || 'N/A'}`);
console.log(` Specialties: ${(data.specialties || []).join(', ') || 'N/A'}`);
console.log(` About: ${(data.description || '').substring(0, 200)}`);
return data;
}
getCompanyProfile('https://www.linkedin.com/company/hubspot/');
Python version:
import os
import requests
API_KEY = os.environ["SOCIAVAULT_API_KEY"]
BASE = "https://api.sociavault.com/v1/scrape"
HEADERS = {"X-API-Key": API_KEY}
def get_company_profile(url):
r = requests.get(f"{BASE}/linkedin/company", headers=HEADERS, params={"url": url})
data = r.json().get("data", {})
if not data:
print("Company not found")
return None
followers = data.get("followerCount") or data.get("followers", 0)
staff = data.get("staffCount") or data.get("employeeCount", 0)
print(f"\nLinkedIn Company: {data.get('name', 'Unknown')}")
print(f" Followers: {followers:,}")
print(f" Employees: {staff:,}")
print(f" Industry: {data.get('industry', 'N/A')}")
print(f" Website: {data.get('website', 'N/A')}")
return data
get_company_profile("https://www.linkedin.com/company/hubspot/")
Compare Competitor Companies
Stack up companies in your space side-by-side:
async function compareCompanies(urls) {
const results = [];
for (const url of urls) {
const res = await fetch(
`${BASE}/linkedin/company?url=${encodeURIComponent(url)}`,
{ headers }
);
const data = (await res.json()).data;
if (!data) continue;
const followers = data.followerCount || data.followers || 0;
const staff = data.staffCount || data.employeeCount || 0;
const ratio = staff > 0 ? (followers / staff).toFixed(1) : 'N/A';
results.push({
name: data.name || url.split('/company/')[1]?.replace('/', '') || url,
followers,
staff,
followersPerEmployee: ratio,
industry: data.industry || 'N/A',
website: data.website || 'N/A'
});
await new Promise(r => setTimeout(r, 1500));
}
results.sort((a, b) => b.followers - a.followers);
console.log('\nLinkedIn Company Comparison:');
console.table(results.map(r => ({
Company: r.name,
Followers: r.followers.toLocaleString(),
Employees: r.staff.toLocaleString(),
'Followers/Employee': r.followersPerEmployee,
Industry: r.industry
})));
return results;
}
compareCompanies([
'https://www.linkedin.com/company/hubspot/',
'https://www.linkedin.com/company/salesforce/',
'https://www.linkedin.com/company/mailchimp/',
'https://www.linkedin.com/company/semrush/'
]);
What "Followers per Employee" Tells You
This ratio is an underrated metric:
| Ratio | What It Means |
|---|---|
| <5 | Low LinkedIn investment — page exists but isn't a priority |
| 5-20 | Average — the company posts but doesn't have an active strategy |
| 20-50 | Good — likely has a dedicated social team and employee advocacy |
| 50-100 | Strong — brand is well-known in its space |
| 100+ | Exceptional — major consumer brand or strong thought leadership |
Analyze LinkedIn Post Performance
Pull and analyze a specific LinkedIn post for engagement data:
async function analyzePost(postUrl) {
const res = await fetch(
`${BASE}/linkedin/post?url=${encodeURIComponent(postUrl)}`,
{ headers }
);
const data = (await res.json()).data;
if (!data) {
console.log('Post not found');
return null;
}
const likes = data.likeCount || data.likes || data.reactions || 0;
const comments = data.commentCount || data.comments || 0;
const shares = data.shareCount || data.shares || data.reposts || 0;
const totalEng = likes + comments + shares;
console.log(`\nLinkedIn Post Analysis:`);
console.log(` Author: ${data.author?.name || data.authorName || 'Unknown'}`);
console.log(` Text: ${(data.text || data.content || '').substring(0, 200)}...`);
console.log(` Reactions: ${likes.toLocaleString()}`);
console.log(` Comments: ${comments.toLocaleString()}`);
console.log(` Shares: ${shares.toLocaleString()}`);
console.log(` Total engagement: ${totalEng.toLocaleString()}`);
return data;
}
analyzePost('https://www.linkedin.com/posts/example-post-id');
Track Key Employee Profiles
Monitor founders, executives, or sales reps for competitive intelligence:
async function trackEmployees(profileUrls) {
const results = [];
for (const url of profileUrls) {
const res = await fetch(
`${BASE}/linkedin/profile?url=${encodeURIComponent(url)}`,
{ headers }
);
const data = (await res.json()).data;
if (!data) continue;
results.push({
name: data.name || data.fullName || 'Unknown',
headline: (data.headline || '').substring(0, 80),
followers: data.followerCount || data.followers || data.connections || 0,
company: data.company || data.currentCompany || 'N/A',
location: data.location || 'N/A'
});
await new Promise(r => setTimeout(r, 1500));
}
console.log('\nEmployee Profile Comparison:');
console.table(results.map(r => ({
Name: r.name,
Headline: r.headline,
Followers: r.followers.toLocaleString(),
Company: r.company
})));
return results;
}
// Track competitor executives
trackEmployees([
'https://www.linkedin.com/in/dharmesh/',
'https://www.linkedin.com/in/brianhalligan/'
]);
LinkedIn Competitive Intelligence Dashboard
Build a comprehensive competitive scan combining company + people data:
import os
import json
import time
import requests
from datetime import date
API_KEY = os.environ["SOCIAVAULT_API_KEY"]
BASE = "https://api.sociavault.com/v1/scrape"
HEADERS = {"X-API-Key": API_KEY}
def linkedin_competitive_scan(companies):
"""Run a weekly LinkedIn competitive scan"""
report = {
"date": str(date.today()),
"companies": []
}
for comp in companies:
name = comp["name"]
url = comp["url"]
print(f"\nScanning: {name}...")
r = requests.get(f"{BASE}/linkedin/company", headers=HEADERS, params={"url": url})
data = r.json().get("data", {})
followers = data.get("followerCount") or data.get("followers", 0)
staff = data.get("staffCount") or data.get("employeeCount", 0)
entry = {
"name": name,
"url": url,
"followers": followers,
"employees": staff,
"followers_per_employee": round(followers / staff, 1) if staff > 0 else 0,
"industry": data.get("industry", "N/A"),
"description": (data.get("description") or "")[:300],
"specialties": data.get("specialties", []),
}
report["companies"].append(entry)
time.sleep(1.5)
# Sort by followers
report["companies"].sort(key=lambda x: x["followers"], reverse=True)
# Print summary
print("\n\n" + "=" * 60)
print(f" LinkedIn Competitive Report — {report['date']}")
print("=" * 60)
for c in report["companies"]:
print(f"\n {c['name']}")
print(f" Followers: {c['followers']:,}")
print(f" Employees: {c['employees']:,}")
print(f" Followers/Employee: {c['followers_per_employee']}")
print(f" Industry: {c['industry']}")
# Save report
filename = f"linkedin-report-{report['date']}.json"
with open(filename, "w") as f:
json.dump(report, f, indent=2)
print(f"\n Report saved: {filename}")
return report
# Run weekly scan
linkedin_competitive_scan([
{"name": "HubSpot", "url": "https://www.linkedin.com/company/hubspot/"},
{"name": "Salesforce", "url": "https://www.linkedin.com/company/salesforce/"},
{"name": "Mailchimp", "url": "https://www.linkedin.com/company/mailchimp/"},
{"name": "SEMrush", "url": "https://www.linkedin.com/company/semrush/"},
{"name": "Ahrefs", "url": "https://www.linkedin.com/company/ahrefs/"},
])
LinkedIn Analytics Benchmarks
| Metric | Below Average | Average | Good | Top 1% |
|---|---|---|---|---|
| Company followers | <1K | 1K-10K | 10K-50K | 500K+ |
| Post impressions | <500 | 500-2K | 2K-10K | 50K+ |
| Post engagement rate | <1% | 1-3% | 3-5% | 8%+ |
| Click-through rate | <0.5% | 0.5-2% | 2-4% | 5%+ |
| Employee advocacy rate | <5% | 5-15% | 15-30% | 50%+ |
Note: LinkedIn engagement rates are significantly higher than other social platforms because the feed is less saturated and users are in a professional mindset.
Use Cases by Business Type
B2B SaaS: Track competitor follower growth, monitor product announcements, identify key employees who are building personal brands.
Recruiting firms: Compare employer brand strength by follower count and employee count, identify companies losing staff (shrinking headcount).
Agencies: Benchmark client LinkedIn presence against competitors, build prospect lists by identifying companies with weak LinkedIn presence but big budgets.
Investors: Track company growth signals — rapid follower growth and hiring often precede funding rounds or product launches.
Get Started
Sign up free — start tracking any company's LinkedIn performance today.
Related Reading
Found this helpful?
Share it with others who might benefit
Ready to Try SociaVault?
Start extracting social media data with our powerful API. No credit card required.