LinkedIn Company Employee Scraper
Pricing
from $15.00 / 1,000 employee profile scrapeds
LinkedIn Company Employee Scraper
Scrape visible LinkedIn company employees from company URLs. Provider-first with ScrapeCreators and SociaVault, then optional cookie and public-search fallbacks. Returns profile URLs, names, titles, source, and confidence. $0.015 per row. MCP/API-ready.
Pricing
from $15.00 / 1,000 employee profile scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
1
Bookmarked
91
Total users
8
Monthly active users
2 days ago
Last modified
Categories
Share
LinkedIn Company Employee Scraper - People & Titles
LinkedIn Company Employee Scraper is an Apify Actor for visible employee data from LinkedIn company URLs. It accepts one or more company pages, normalizes them to canonical company URLs, and returns one record per unique employee profile row. Each record can include employee name, profile URL, headline, title, location, snippet, company metadata, source, confidence, matched filters, and scraped timestamp. The output is useful for account mapping, recruiting research, lead sourcing, enrichment pipelines, and AI-agent workflows that need structured LinkedIn profile URLs tied to a company. It is usable through Apify MCP and the Apify API.
Best fit and connected workflows
This Actor fits workflows that start with a known LinkedIn company page and need visible employee profiles as structured rows. It routes cleanly into:
- account research and company-to-people mapping
- recruiting research and role-focused employee discovery
- lead sourcing from known target companies
- seed lists for downstream profile enrichment
- Apify MCP and API workflows that need one row per employee profile
If your workflow begins with company discovery, start there and pass the verified company URL into this Actor:
- LinkedIn Company Search Scraper - discover LinkedIn company records first, then pass the verified public company URL or ID into this Actor for employee-level rows.
Practical scenario
Mina is building a recruiting list for a product team. She already has the company URL https://www.linkedin.com/company/apify/ and sends it to this Actor with a title filter for Product Manager.
The Actor returns rows with employeeName, profileUrl, headline, title, companyName, source, confidence, and matchedFilters. Mina reviews the visible profile URLs, checks which rows matched the product-related filter, and then sends those URLs into her next enrichment step or outreach review process.
Input fields
| Field | Type | Description |
|---|---|---|
companyUrls | string[] | LinkedIn company page URLs to process. Canonical company pages and company subpages are accepted. Required. |
maxEmployees | integer | Global cap across the whole run. This limits the total number of unique employee profile rows. |
maxEmployeesPerCompany | integer | Per-company cap used to balance multi-company runs. |
mode | string | Discovery mode: auto, publicSearch, or linkedinPeopleTab. |
searchQuery | string | Optional words added to public-search fallback queries. |
jobTitles | string[] | Optional title keywords used to filter or boost visible matches. |
locations | string[] | Optional location keywords used to filter or boost visible matches. |
includeProfileDetails | boolean | Authenticated LinkedIn fallback only. Visits discovered profiles for richer visible extraction. |
maxConcurrency | integer | Number of companies to process in parallel. |
proxyConfiguration | object | Proxy settings for LinkedIn fallback and public-search paths. Residential proxy is the default. |
Focused input example
{"companyUrls": ["https://www.linkedin.com/company/apify/"],"maxEmployees": 25,"maxEmployeesPerCompany": 10,"mode": "auto","searchQuery": "engineering","jobTitles": ["Engineer","Product Manager"],"locations": ["Prague"],"includeProfileDetails": false,"maxConcurrency": 2,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
Output fields
| Field | Type | Description |
|---|---|---|
companyName | string | Human-readable company name returned by a provider or derived from the company slug. |
companySlug | string | LinkedIn company slug normalized from the input company URL. |
companyUrl | string | Normalized LinkedIn company URL in canonical /company/<slug>/ form. |
employeeName | string/null | Employee name when visible in the selected source. |
profileUrl | string | Normalized LinkedIn public profile URL. |
headline | string/null | Visible LinkedIn headline, provider role text, or public-search result title. |
title | string/null | available job title when a source exposes it separately. |
location | string/null | available location when a source exposes it separately. |
snippet | string/null | Visible source text used to build the row. |
source | string | Extraction path used for the row. |
confidence | string | Confidence level based on source and filter match quality. |
matchedFilters | string[] | Input title or location filters matched in the visible text. |
scrapedAt | string | ISO timestamp when the row was emitted. |
Illustrative dataset record
{"companyName": "Apify","companySlug": "apify","companyUrl": "https://www.linkedin.com/company/apify/","employeeName": "Jane Doe","profileUrl": "https://www.linkedin.com/in/jane-doe/","headline": "Product Manager at Apify","title": "Product Manager","location": "Prague","snippet": "Product Manager at Apify","source": "scrapecreators_company","confidence": "high","matchedFilters": ["Product Manager","Prague"],"scrapedAt": "2026-01-01T12:00:00Z"}
How it works
The Actor uses a provider-first discovery chain in auto mode:
- ScrapeCreators LinkedIn company API
- SociaVault LinkedIn company API
- Authenticated LinkedIn company
/people/tab whenLINKEDIN_COOKIESis configured - Public search discovery as the final fallback
It also:
- normalizes LinkedIn company URLs to canonical
/company/<slug>/form - deduplicates repeated companies
- supports title and location filters
- can add search-query terms to public-search fallback
- emits
sourceandconfidenceso downstream systems can route rows appropriately
The dataset is the primary result. The Actor also writes a run summary to the key-value store, including the terminal outcome and provider/fallback information.
Pricing
This Actor uses Pay per event plus Apify platform usage billing. The primary event is charged once per unique employee profile row written to the dataset. There is also an Actor start event tied to the Actor memory configuration.
For a simple event-count example in words: if a run writes twenty employee profile rows, the row-based event is charged twenty times, and the Actor start event is charged once when the run begins.
For current pricing details, open the live Pricing tab on the Actor page in Apify Console or on Apify.com. That tab is the source of truth for the latest event pricing and platform usage information.
Use with AI agents (MCP)
This Actor is usable through Apify MCP as a tool for retrieving visible employee profile rows from a known LinkedIn company URL. The exact Actor identity is khadinakbar/linkedin-company-employee-scraper.
The tool takes company URLs, applies the selected discovery mode, and returns dataset rows containing profile URLs, names when visible, titles, source, confidence, and supporting text fields. Agents can use profileUrl as the main join key and source plus confidence to decide how directly to use a row.
Scrape visible employees for
https://www.linkedin.com/company/apify/in auto mode. Return the dataset rows, then read the run summary so I can inspect source mix, confidence, and the final outcome.
Output interpretation:
profileUrlis the primary identifier for downstream enrichment and dedupe.companySluggroups rows back to the company target.sourceshows which discovery path produced the row.confidencehelps an agent decide how directly to use the row.matchedFiltersexplains which title or location filters matched visible text.scrapedAtsupports freshness checks and audit logs.
Provenance and scope:
- Rows reflect visible company employee data from the chosen discovery path.
employeeName,headline,title, andlocationdepend on source visibility.- The Actor is designed for company-level employee discovery, account mapping, recruiting research, and lead sourcing.
Pagination and cost guidance:
maxEmployeesis a global cap across the run.maxEmployeesPerCompanybalances multi-company runs.- The Actor stops after the configured number of unique employee rows is reached.
- Pay per event is row-based, so larger result sets increase event count.
Apify API example
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const actor = client.actor('khadinakbar/linkedin-company-employee-scraper');const run = await actor.call({companyUrls: ['https://www.linkedin.com/company/apify/'],maxEmployees: 10,mode: 'auto',jobTitles: ['Engineer'],});const dataset = await client.dataset(run.defaultDatasetId).listItems();console.log(dataset.items);
Best results and outcome guidance
Use a known LinkedIn company URL as the starting point, and keep title or location filters broad when you want more visible rows. Use auto for general workflows because it tries provider sources before fallback paths. Use linkedinPeopleTab when you specifically want the company people-tab path and have LINKEDIN_COOKIES configured. Use publicSearch when you want public-search-only discovery.
For multi-company runs, set both maxEmployees and maxEmployeesPerCompany so one large company can share the result budget evenly. When your workflow depends on cleaner visible names and locations from the authenticated fallback path, you can enable includeProfileDetails.
Continue the workflow
- Then use LinkedIn Company Jobs Scraper to extend LinkedIn Company Employee Scraper - People & Titles research with a complementary discovery contract.
- Then use LinkedIn Company Posts Scraper to extend LinkedIn Company Employee Scraper - People & Titles research with a complementary enrichment contract.
Design note
I found that the dataset contract makes profileUrl the main join key, while companySlug is the grouping field for dedupe and joins back to the target company. That visible contract choice is the clearest signal for downstream automation design.
FAQ
How should I start a workflow if I only know the company name?
Use a LinkedIn company search workflow first, then pass the verified public company URL into this Actor for employee-level rows.
Which result fields are most useful for downstream automation?
profileUrl, companySlug, source, confidence, and matchedFilters are the most useful routing fields. headline, title, and location add context for review and enrichment.
When should I use auto instead of a single mode?
Use auto when you want the provider-first chain with fallback discovery. Use a single mode when your workflow needs only public search or only the LinkedIn people-tab path.
What should I use the output for after the run?
Use the returned profileUrl values as input for your next compliant enrichment or CRM workflow. The rows are also suitable for account mapping, recruiting lists, and lead sourcing.
What is the workflow connection with LinkedIn Company Search Scraper?
That Actor helps discover company records first. This Actor then turns a verified LinkedIn company URL into visible employee profile rows for account mapping, recruiting, or enrichment.
Responsible use
Use this Actor for public business research, recruiting research, account mapping, and compliant enrichment workflows. Follow LinkedIn's terms, applicable privacy laws, and your organization's data-handling rules. Keep usage aligned with visible data and with the permissions of the account, cookie, or provider path you choose.