LinkedIn Company Employees Scraper avatar

LinkedIn Company Employees Scraper

Pricing

from $15.00 / 1,000 employee profile scrapeds

Go to Apify Store
LinkedIn Company Employees Scraper

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

Khadin Akbar

Maintained by Community

Actor stats

1

Bookmarked

96

Total users

6

Monthly active users

3 days ago

Last modified

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

FieldTypeDescription
companyUrlsstring[]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.
maxEmployeesintegerGlobal cap across the whole run. This limits the total number of unique employee profile rows.
maxEmployeesPerCompanyintegerPer-company cap used to balance multi-company runs.
modestringDiscovery mode: auto, publicSearch, or linkedinPeopleTab.
searchQuerystringOptional words added to public-search fallback queries.
jobTitlesstring[]Optional title keywords used to filter or boost visible matches.
locationsstring[]Optional location keywords used to filter or boost visible matches.
includeProfileDetailsbooleanAuthenticated LinkedIn fallback only. Visits discovered profiles for richer visible extraction.
maxConcurrencyintegerNumber of companies to process in parallel.
proxyConfigurationobjectProxy 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

FieldTypeDescription
companyNamestringHuman-readable company name returned by a provider or derived from the company slug.
companySlugstringLinkedIn company slug normalized from the input company URL.
companyUrlstringNormalized LinkedIn company URL in canonical /company/<slug>/ form.
employeeNamestring/nullEmployee name when visible in the selected source.
profileUrlstringNormalized LinkedIn public profile URL.
headlinestring/nullVisible LinkedIn headline, provider role text, or public-search result title.
titlestring/nullavailable job title when a source exposes it separately.
locationstring/nullavailable location when a source exposes it separately.
snippetstring/nullVisible source text used to build the row.
sourcestringExtraction path used for the row.
confidencestringConfidence level based on source and filter match quality.
matchedFiltersstring[]Input title or location filters matched in the visible text.
scrapedAtstringISO 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:

  1. A managed LinkedIn company data provider (primary)
  2. A second managed company data provider (fallback)
  3. The LinkedIn company /people/ tab through an owner-configured session, when available
  4. 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 source and confidence so 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:

  • profileUrl is the primary identifier for downstream enrichment and dedupe.
  • companySlug groups rows back to the company target.
  • source shows which discovery path produced the row.
  • confidence helps an agent decide how directly to use the row.
  • matchedFilters explains which title or location filters matched visible text.
  • scrapedAt supports freshness checks and audit logs.

Provenance and scope:

  • Rows reflect visible company employee data from the chosen discovery path.
  • employeeName, headline, title, and location depend on source visibility.
  • The Actor is designed for company-level employee discovery, account mapping, recruiting research, and lead sourcing.

Pagination and cost guidance:

  • maxEmployees is a global cap across the run.
  • maxEmployeesPerCompany balances 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

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.