Request a tool
All toolsGuidesMCP serverRequest a toolPlatformsCategories
LinkedIn Company Employees Scraper icon

LinkedIn Company Employees Scraper

Scrape LinkedIn company employees without a login or cookies. Company URL or name in; employee name, headline, job title, location and profile URL out.

34 runs on Apify
Run this in the cloudRun on Apify →

Job Market Scrapers

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust companies, resultsLimit, jobTitles (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Inputs

FieldWhat it doesType
companiesLinkedIn company URLs (https://www.linkedin.com/company/stripe) or plain company names. Leave empty to get one free labelled sample row.array
resultsLimitHard cap on charged employee rows for the whole run, across all companies. 1-500.integer
jobTitlesOnly keep people whose public profile text contains one of these words, e.g. Software Engineer. Filtered-out people are never charged.array
locationsOnly keep people whose public profile text contains one of these places, e.g. London. Filtered-out people are never charged.array
searchQueryFree-text terms added to the public search, e.g. recruiting OR talent.string
includeMentionsOff by default. When off, a person is only returned if LinkedIn's own public text names the company as their employer. Turn it on to also get consultants, partners, alumni and anyone whose profile merely mentions the company.boolean

What you get

A structured dataset — each result includes fields like:

companyNamecompanyUrlfullNamefirstNamelastNameheadlinecurrentTitlelocationprofileUrlpublicIdentifiercurrentCompanyeducationmatchStrength

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in Job Market Scrapers

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

Indeed Jobs Scraper iconJob Market Scrapers

Indeed Jobs Scraper

Scrape Indeed jobs by keyword and location across 11 countries. Get title, company, salary, remote flag, posted date, and apply URL as structured data.

16 use cases

Glassdoor Company Reviews Scraper iconJob Market Scrapers

Glassdoor Company Reviews Scraper

Scrape Glassdoor company reviews and ratings by company name or URL. Get pros, cons, recommend rate and CEO approval as rows for analysis.

20 use cases

StepStone Jobs Scraper iconJob Market Scrapers

StepStone Jobs Scraper

Scrape StepStone jobs across Germany, Austria, UK, NL and Belgium by keyword and location. Get company, salary, posted date, remote flag and apply links.

4 use cases

Remotive Jobs Scraper iconJob Market Scrapers

Remotive Jobs Scraper

Scrape remote jobs from Remotive by keyword and category. Get title, company, location, salary, tags and clean descriptions. No login or key.

3 use cases

Multi-ATS Jobs Scraper (Greenhouse, Lever, Ashby) iconJob Market Scrapers

Multi-ATS Jobs Scraper (Greenhouse, Lever, Ashby)

Scrape open jobs from Greenhouse, Lever, and Ashby boards by company. Get title, location, department, and apply link as JSON, CSV, or Excel. No key needed.

3 use cases

LinkedIn Jobs Scraper iconJob Market Scrapers

LinkedIn Jobs Scraper

Scrape public LinkedIn jobs by keyword, location, URL or ID. Filter by date, workplace type and experience, and pull full descriptions.

Ready to run — no setup

See all Job Market Scrapers →

LinkedIn Company Employees Scraper

Give it a LinkedIn company URL or just a company name, get back the people who work there.

For each person you get their full name, their LinkedIn headline, the job title pulled out of that headline, their location, their public profile URL and their profile slug. No login, no cookies, no LinkedIn API key, no session token pasted from your browser. Nothing to set up — paste a company and press start.

At $0.0018 per employee ($1.80 per 1,000) this is the cheapest LinkedIn company employees scraper on the market.

---

What you actually get

{

  "companyName": "Stripe",

  "companyUrl": "https://www.linkedin.com/company/stripe",

  "fullName": "Patrick Collison",

  "firstName": "Patrick",

  "lastName": "Collison",

  "headline": "Stripe CEO",

  "currentTitle": "CEO",

  "location": null,

  "profileUrl": "https://www.linkedin.com/in/patrickcollison",

  "publicIdentifier": "patrickcollison",

  "currentCompany": "Stripe",

  "education": null,

  "matchStrength": "employer",

  "source": "linkedin-public-profile",

  "retrievedAt": "2026-08-15T12:41:07.884Z"

}

Another one, from a run against https://www.linkedin.com/company/notionhq:

{

  "companyName": "Notion",

  "fullName": "Ivan Zhao",

  "firstName": "Ivan",

  "lastName": "Zhao",

  "headline": "Founder at Notion",

  "currentTitle": "Founder",

  "location": "San Francisco",

  "profileUrl": "https://www.linkedin.com/in/ivanhzhao",

  "publicIdentifier": "ivanhzhao",

  "currentCompany": "Notion",

  "matchStrength": "employer"

}

Field reference

FieldWhat it isEver null?
companyNameThe company as LinkedIn spells it. A company URL is resolved to this before searching.No
companyUrlThe company URL you gave, normalised. Null if you passed a plain name.Yes
fullNameThe person's name as LinkedIn publishes it. Some surnames are shortened by LinkedIn itself ("Eric K.").No
firstName / lastNamefullName split on the first space, for mail-merge tools.lastName yes
headlineThe person's LinkedIn headline, verbatim.No
currentTitleThe job title extracted from the headline. Null when the headline is just a company name or a slogan.Yes
locationCity or region, when LinkedIn published one in the profile's indexed description.Often
profileUrlCanonical https://www.linkedin.com/in/<slug> URL. De-duplicated across locale domains.No
publicIdentifierThe profile slug on its own.No
currentCompanyThe employer string LinkedIn published, which is usually but not always identical to companyName.Sometimes
educationSchool, when LinkedIn published one.Often
matchStrength"employer" — LinkedIn's own text names this company as the person's employer. "mention" — the company appears in their profile but not in an employer position (only ever returned if you ask for it).No
source, query, retrievedAtProvenance, so you can audit any row.No

---

How it gets employees without a login

Worth being straight about this, because it explains the limits further down.

LinkedIn's own /company/<slug>/people/ tab is useless logged out. It answers with about 590 KB of HTML and zero profile links — the employee list is replaced by a sign-in card. Any tool that claims to read that tab is using somebody's session cookie, which is exactly the thing that gets accounts restricted.

What LinkedIn *does* publish, deliberately, is every public profile page, written for search engines. The page title is <Name> - <Headline> | LinkedIn and the meta description carries Experience: <Company>, Education: <School> and Location: <Place>. That text is indexed and publicly searchable. This Actor searches that public index, restricted to LinkedIn profile pages, for the company you asked about, and reads the fields straight out of LinkedIn's own published wording. Every value in a row is text LinkedIn itself put on the open web.

A LinkedIn company URL is resolved to the company's real display name first, from the public company page. This matters: linkedin.com/company/anthropicresearch finds nobody, and "Anthropic" finds the staff.

Requests go out through rotating datacenter addresses because the search sources rate-limit per address. There is no residential bandwidth anywhere in this Actor — that is what keeps the price where it is.

---

Input

Everything is optional. Run it with empty input and you get one clearly-labelled sample row, free, so you can see the shape of the output before spending anything.

{

  "companies": [

    "https://www.linkedin.com/company/stripe",

    "https://www.linkedin.com/company/notionhq",

    "Figma"

  ],

  "resultsLimit": 50,

  "jobTitles": ["Engineer", "Recruiter"],

  "locations": ["London"],

  "searchQuery": "",

  "includeMentions": false

}
OptionMeaning
companiesUp to 20 LinkedIn company URLs or plain company names. Company, school and showcase URLs all work.
resultsLimitHard cap on charged rows for the whole run, 1–500. Default 25.
jobTitlesWords that must appear in the person's public profile text. People who do not match are dropped and never charged.
locationsSame, for places.
searchQueryExtra free-text terms folded into the public search.
includeMentionsDefault false. When off you only get people whose public text names this company as their employer. Turn it on to also collect consultants, partners, alumni and commentators.

There is no proxy setting, and that is on purpose. The Actor always uses its own rotating datacenter addresses, which are the right tool for per-address rate limits and cost nothing per gigabyte. A proxy box in the form would only be a way to make a run slower and more expensive.

---

Pricing

Pay per event. Two events, nothing else:

EventPrice
Actor start$0.0015 per run
employee-found$0.0018 per employee returned

So 100 employees costs $0.18 plus the $0.0015 start. A thousand costs $1.80.

What is free:

  • the labelled sample row you get from an empty run;
  • every diagnostic row (SEARCH_UNAVAILABLE, NO_RESULTS, BAD_INPUT, COMPANY_NOT_FOUND,

TIME_BUDGET, SKIPPED_AFTER_EMPTY);

  • every person dropped by your jobTitles / locations filters;
  • every person dropped because the company was only mentioned, not listed as their employer;
  • duplicates — a person found by three different search phrasings is charged once.

You are charged once per row that actually lands in your dataset with a name and a profile URL. A run that finds nobody costs the start fee and nothing else, and it still finishes as SUCCEEDED with a row explaining why, rather than failing.

---

Speed and scale, from real runs

All measured on the Apify platform at 1024 MB, not on a laptop:

RunRowsSearch requestsWall clock
company/stripe, limit 6060624 s
company/stripe, limit 4545923 s
company/stripe, limit 2020311 s
company/stripe + company/notionhq, limit 1212516 s
a company with nothing indexed037–13 s

Roughly 10 people per search request, and up to 30 on a well-indexed company. Large, well-known employers return 150–200 distinct people before the public index runs dry; small companies return whatever has been indexed, which can be a handful. A run that finds nobody stops early on purpose instead of grinding through every phrasing.

---

What this does NOT do

An honest list, because the alternative is you finding out after you have paid.

  • It is not a complete staff directory. It returns the employees whose LinkedIn profiles are

publicly indexed. A 40,000-person company will not give you 40,000 rows — expect the low hundreds for big employers, fewer for small ones. If you need every single head, no keyless tool can do that.

  • No emails or phone numbers. LinkedIn does not publish them, so neither does this.
  • location and education are often null. They only appear when they were in the profile's

published description, which varies by profile and by how the text was indexed.

  • currentTitle is parsed from the headline, not from a structured job field, because LinkedIn

masks job titles for logged-out visitors. When someone writes a slogan instead of a title, the title comes back null and the raw headline is still there for you.

  • "Currently works there" is a judgement, not a fact. matchStrength: "employer" means

LinkedIn's own indexed text puts the company in an employer position. Someone who left last week and has not updated their headline will still show up. Someone who writes "ex-Stripe" will not.

  • No connection counts, followers, skills, or full work history. Only what is on the public

page.

  • Rate limits are real. Public search sources throttle per address. The Actor rotates addresses

and falls back across several independent sources, but during a bad minute a run can come back short. It tells you that in a free diagnostic row instead of pretending.

  • No account is ever created or used. Nothing here logs in, and it never will.

---

FAQ

Do I need a LinkedIn account, cookie, or session token? No. Nothing to paste, nothing to connect. It only reads pages LinkedIn publishes to the open web.

Will this get my LinkedIn account banned? Your account is not involved at any point. There is nothing to ban.

How many employees will I get for a given company? For a large, well-covered employer, typically 150–200 distinct people. For a small company, whatever is publicly indexed — sometimes a dozen. Set resultsLimit to the most you are willing to pay for; you are only charged for rows you actually receive.

Can I search by job title, like "only recruiters"? Yes. Put the words in jobTitles. They are added to the public search and also applied as a filter on the way out, and anyone filtered out is not charged.

Can I pass a plain company name instead of a URL? Yes. "Figma" works. A URL is slightly more precise because the Actor resolves it to LinkedIn's own spelling of the company first.

Why do some rows have a null location? Because LinkedIn did not publish one in that profile's indexed description. It is never invented.

What is matchStrength for? It tells you how the person was matched. "employer" is the default output and means LinkedIn's own text names this company as where they work. "mention" means the company shows up in their profile some other way — a consultant, a partner, an alum, somebody writing about the company. Those are excluded unless you set includeMentions: true.

What happens if the search sources are down? You get an uncharged diagnostic row saying so, and the run finishes as SUCCEEDED. You are never billed per-employee for a run that returned no employees. A run that has not found anybody also stops early rather than grinding away on your clock — if that happens you will see a SEARCH_UNAVAILABLE or SKIPPED_AFTER_EMPTY row, and re-running usually works.

Does it work for schools and showcase pages? Yes — linkedin.com/school/... and linkedin.com/showcase/... URLs are accepted too.

Can I run several companies at once? Up to 20 per run. resultsLimit is the cap across the whole run, not per company, so give it room if you are doing a batch.

How do I get more people for one company? Raise resultsLimit, and add searchQuery terms that split the workforce ("engineering", "sales", "Dublin"). Different phrasings surface different slices of the public index.

---

Output notes for automation

Rows are pushed as they are found, so you can stream the dataset while the run is still going. Sample and diagnostic rows are always tagged — filter them out with _sample != true and _diagnostic != true, or just check charged == true, which is only ever set on rows you paid for.