How to Scrape LinkedIn Employees Without Login or Sales Navigator
LinkedIn has no public API for employee data. Learn how to pull B2B leads, employee lists, and org chart data from LinkedIn company pages without a LinkedIn account or Sales Navigator subscription.
The actor referenced in this article. Pay only for results delivered.
LinkedIn employee data is one of the most valuable B2B datasets. It is also one of the most locked-down. Here is what works without a Sales Navigator subscription.
What LinkedIn exposes publicly
Every LinkedIn company page has a People tab showing current employees. Without logging in, you can see:
- Employee name
- Current job title
- Location (city/country)
- LinkedIn profile URL
This is the publicly visible data: no account required. Sales Navigator adds department, seniority level, and more granular filters, but the base data is accessible without it.
Why scraping LinkedIn is tricky
LinkedIn actively blocks automated access. The challenges:
- Rate limiting on IP address
- Cookie-based session detection
- JavaScript rendering required (the People page is not static HTML)
- Anti-bot fingerprinting
The LinkedIn Employees Scraper handles these with residential proxy rotation and browser fingerprint management.
Basic usage
import apify_client
client = apify_client.ApifyClient('YOUR_APIFY_TOKEN')
run_input = {
"companyUrl": "https://www.linkedin.com/company/stripe/",
"maxResults": 200,
"titleFilter": "engineer", # optional: filter by title keyword
}
run = client.actor('themineworks/linkedin-employees').call(run_input=run_input)
for employee in client.dataset(run['defaultDatasetId']).iterate_items():
print(f"{employee['name']} - {employee['title']} - {employee['location']}")
print(f" {employee['profile_url']}")
Building a B2B lead list
Combine employee data with an email finder for complete lead enrichment:
results = list(client.dataset(run['defaultDatasetId']).iterate_items())
# Filter to decision-maker titles
decision_makers = [e for e in results if any(kw in e['title'].lower() for kw in
['vp', 'director', 'head of', 'chief', 'cto', 'cmo', 'cfo', 'founder']
)]
print(f"Found {len(decision_makers)} decision makers at target company")
for dm in decision_makers:
print(f" {dm['name']} - {dm['title']}")
Org chart mapping
Scrape multiple departments to build a lightweight org chart:
departments = ['engineering', 'sales', 'marketing', 'product', 'finance']
org_map = {}
for dept in departments:
run_input = {
"companyUrl": "https://www.linkedin.com/company/your-target/",
"titleFilter": dept,
"maxResults": 50,
}
run = client.actor('themineworks/linkedin-employees').call(run_input=run_input)
org_map[dept] = list(client.dataset(run['defaultDatasetId']).iterate_items())
for dept, employees in org_map.items():
print(f"{dept}: {len(employees)} people")
Rate of change tracking
Run monthly and diff results to track hiring patterns:
import json
# Compare this month vs last month
with open('employees_prev.json') as f:
prev = {e['profile_url'] for e in json.load(f)}
current = list(client.dataset(run['defaultDatasetId']).iterate_items())
current_urls = {e['profile_url'] for e in current}
new_hires = current_urls - prev
departures = prev - current_urls
print(f"New hires: {len(new_hires)}, Departures: {len(departures)}")
Pricing
$0.002 per profile returned. Failed and empty results are never charged.
Explore the scraper referenced in this article: inputs, outputs, and pricing, then run it on Apify.
Frequently asked questions
Does LinkedIn have a public API for employee data? +
No. LinkedIn retired its public REST API in 2015. The current API is restricted to approved LinkedIn partners. Employee data requires scraping or a third-party data provider.
Do I need a LinkedIn account to scrape employee data? +
The scraper accesses publicly visible data on company People pages without requiring any login, cookies, or LinkedIn account.
How many employees can I get per company? +
LinkedIn surfaces up to 1,000 employees on a company People page without login. Large enterprises with tens of thousands of employees will be capped at what LinkedIn shows publicly.
LinkedIn Scraping Tools Compared: Which Actor for Which Job
Five LinkedIn actors covering companies, employees, profiles, jobs, and posts. They are not competing for the same query, they are five stages of one sourcing pipeline. A field-by-field look at what each returns and how they chain together.
Sourcing Without a Recruiter Seat: 8 Tools, One Claude Agent, Under $1 a Role
A LinkedIn Recruiter seat costs thousands a year and still leaves you sending InMails nobody answers. Here is the full sourcing flow: longlist by real requirements, enrich, read the push and pull signals, see who you are bidding against, and reach a real address, run from Claude via MCP for about 84 cents a role.
Find the Decision Makers at Your Target Accounts by Job Title
Turn a list of company domains into a CRM-ready CSV of people by job title, with LinkedIn URLs, labeled emails and a company check on every row.
Track New People at Your Target Accounts Every Week
Schedule B2B Leads Finder in monitor mode so each weekly run returns only people you have not been sent before, and never bills the same person twice.