LinkedIn Company Employees Scraper
Pricing
from $15.00 / 1,000 employee profile scrapeds
LinkedIn Company Employees Scraper
Get employees of LinkedIn companies from a company URL or just the company name: profile URL, name, headline, title and location, each graded for current-employer confidence with the matched title/location filters. No cookies or login needed; works with Apify MCP and the API.
Pricing
from $15.00 / 1,000 employee profile scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
1
Bookmarked
96
Total users
6
Monthly active users
3 days ago
Last modified
Categories
Share
What is LinkedIn Company Employees Scraper?
LinkedIn Company Employees Scraper is an Apify Actor for public employee data from LinkedIn companies. It accepts LinkedIn company URLs or plain company names (resolved to the company page), 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 target company (its LinkedIn page or just its name) and need public 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 or plain company names such as Stripe. Names are matched to their public LinkedIn company page first; names with no match are skipped and listed in RUN_SUMMARY. 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","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:
- A managed LinkedIn company data provider (primary)
- A second managed company data provider (fallback)
- The LinkedIn company
/people/tab through an owner-configured session, when available - Public search discovery as the final fallback
You never supply LinkedIn cookies or a login; company names are resolved to company pages through the same managed search route.
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 with Apify platform usage included. The primary event, employee-profile-scraped, is charged once per unique employee profile row written to the dataset; duplicate profiles and company-name lookups are not charged. There is also an apify-actor-start event that scales with the run's memory.
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.
See the Pricing tab for current event prices.
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
Start from a LinkedIn company URL or an unambiguous company name, and keep title or location filters broad when you want more rows. Use auto for general workflows because it tries provider sources before fallback paths. linkedinPeopleTab uses only the session-based people tab and falls back to auto when no session is 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 when you want the open roles at the same companies.
- Then use LinkedIn Company Posts Scraper when you want recent company posts for account research.
Builder's note
I designed the output around profileUrl as the join key and companySlug as the grouping field, and I grade every row with confidence and matchedFilters so an agent can decide which employees to enrich directly and which to review first.
FAQ
How should I start a workflow if I only know the company name?
Put the name straight into companyUrls, for example Stripe. The Actor finds the public LinkedIn company page first and then collects employees. For ambiguous names, pass the LinkedIn company URL to be sure you get the right company.
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.