LinkedIn Company Employees Scraper With Decision Makers avatar

LinkedIn Company Employees Scraper With Decision Makers

Pricing

from $25.00 / 1,000 short profile extracteds

Go to Apify Store
LinkedIn Company Employees Scraper With Decision Makers

LinkedIn Company Employees Scraper With Decision Makers

Scrape all employees of any LinkedIn company with names, job titles, locations and profile URLs, plus decision maker flags, seniority bands and departments. You pay only for rows tied to the company you asked for. Free monitoring tracks new hires, departures and title changes. No login, no cookies.

Pricing

from $25.00 / 1,000 short profile extracteds

Rating

1.0

(1)

Developer

George Kioko

George Kioko

Maintained by Community

Actor stats

10

Bookmarked

2K

Total users

102

Monthly active users

a day ago

Last modified

Share

LinkedIn Company Employees Scraper With Decision Maker Intel

No login. No cookies. No account-ban risk. Discovery runs on Google SERP, verification on anonymous residential requests. This actor never touches a LinkedIn account. You pay only for rows tied to the company you asked for. Rows we cannot tie to it are delivered free, and the monitoring diff is never charged.

LinkedIn Company Employees Scraper is an Apify Actor that finds the employees of any LinkedIn company and classifies every person as a decision maker or not, with a seniority band and department. Discovery runs on Google SERP. Current-employer verification is off on ordinary paid runs. A start event is charged when the run begins. Profile events are charged only for rows that clear the company-match bar. Turn on free monitoring and it becomes a hires, departures and title-change tracker that also alerts you when a new decision maker joins a target account.

Every billed row ships with three classification fields at no extra cost, shown here with examples and why each matters.

FieldExampleWhy it matters
isDecisionMakertrueOwners, founders, C-level, VPs and directors flagged automatically
seniorityBandvp, cxo, director, managerConsistent taxonomy, matches the seniorityFilter vocabulary
departmentsales, engineering, finance, hrRoute leads to the right team without reading headlines

Set decisionMakersOnly: true and non-decision-makers are skipped before any charge happens, so your budget buys only the buying committee.

Pricing

EventPriceYou pay when
Actor start$0.05Once per run
Short profile extracted$0.025Per company-matched profile row

$25 per 1,000 company-matched short profiles, plus $0.05 per run. Classification (isDecisionMaker, seniorityBand and department) is included in that price and never billed separately.

A row is billed only when it carries evidence that the person belongs to the company you asked for. There are two evidence tiers and they cost the same.

TierconfidencesourceWhat was checkedBilled
Live profilehighlinkedin-profile-verifiedThe public LinkedIn profile lists your company as the current employerYes
Google indexmediumgoogle-serp-company-matchedThe person's own indexed LinkedIn headline names your company, not checked against the live profileYes
Unmatchedlowgoogle-serp-unverifiedGoogle returned the person near your company but nothing ties them to itNo, delivered free

Monitoring diff rows are never billed. The actor checks the active price at runtime and never spends residential proxy it cannot cover. If live verification cannot run, the run continues on the Google-index tier instead of failing.

Track hires, departures and new decision makers (free monitoring)

Turn on compareWithPreviousRun and every scheduled run adds a free company-diff-summary row per company. Since v2.3 the diff also reports new decision makers, so a new VP joining a target account surfaces as its own signal, not just another row in a list.

{
"recordType": "company-diff-summary",
"company": "apify-technologies",
"newHires": [
{ "fullName": "Jane Doe", "title": "VP of Sales", "isDecisionMaker": true, "seniorityBand": "vp" }
],
"newDecisionMakers": [
{ "fullName": "Jane Doe", "title": "VP of Sales", "isDecisionMaker": true, "seniorityBand": "vp" }
],
"newDecisionMakersCount": 1,
"departures": [],
"titleChanges": [
{ "fullName": "John Roe", "previousTitle": "AE", "title": "Head of Sales" }
]
}

The weekly-tracker recipe

  1. Set your companies list and turn on Monitor changes vs previous run.
  2. Optionally turn on Decision Makers Only to spend only on the buying committee.
  3. Set maxEmployees above the company's headcount. A capped run reports new hires only and never guesses departures from a partial scan.
  4. Save the run as a task and put it on a weekly Apify schedule.

Used by sales teams (a new VP means a buying window opening), recruiters (departures mean placement leads) and competitor watchers (team growth and churn by department). Snapshots live in a named key-value store in your account (linkedin-employees-snapshots) and diff rows are never charged.

How it works

graph LR
A[Company URL or Name] --> B[Google SERP Discovery]
B --> C[Price-Aware LinkedIn Verification]
C --> D[Decision Maker Classification]
D --> E[Structured JSON Output]
E --> F[Your CRM / Pipeline]

You provide a company LinkedIn URL or name. The actor discovers candidate employees through Google search, then checks current employment against public LinkedIn profiles when pricing safely covers residential proxy cost. When that check is unavailable or uneconomical, the run continues on the Google index tier. Rows whose own indexed headline names your company are tagged source: "google-serp-company-matched", confidence: "medium" and billed. Rows with nothing tying them to your company are tagged source: "google-serp-unverified", confidence: "low" and delivered free. Every billed person is classified by rank and function.

Title targeting is built in. A default English/Spanish decision-maker set fans out for runs of 50 companies or fewer, or pass your own targetTitles for role-specific ICPs.

What is NOT returned

  • Emails or phone numbers. Profile rows carry name, headline, title match, location and profile URL.
  • Full work history or education. This ships short profiles.
  • Guessed departures on capped runs. If maxEmployees truncated the scan, the diff reports new hires only rather than inventing departures.
  • Private profile data. Everything comes from public search results and public profiles.

For AI agents and developers

Use from Claude, ChatGPT and any MCP agent

Add this actor to any MCP client (Claude, Cursor, ChatGPT) through the Apify MCP server below.

https://mcp.apify.com/?tools=george.the.developer/linkedin-company-employees-scraper

Quick integration (JavaScript)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('george.the.developer/linkedin-company-employees-scraper').call({
companies: ['https://www.linkedin.com/company/openai'],
maxEmployees: 25,
decisionMakersOnly: true,
compareWithPreviousRun: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
// items include isDecisionMaker, seniorityBand and department on every profile row

Quick integration (Python)

from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('george.the.developer/linkedin-company-employees-scraper').call(run_input={
'companies': ['https://www.linkedin.com/company/openai'],
'maxEmployees': 25,
'decisionMakersOnly': True,
})
for item in client.dataset(run['defaultDatasetId']).iterate_items():
print(f"{item.get('fullName')} - {item.get('title')} - DM={item.get('isDecisionMaker')}")

Direct HTTP

curl -X POST "https://api.apify.com/v2/acts/george.the.developer~linkedin-company-employees-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"companies": ["https://www.linkedin.com/company/openai"], "maxEmployees": 25}'

n8n / synchronous workflow notes

n8n waits for the Apify run to finish before returning data. This actor uses Apify's ACTOR_TIMEOUT_AT runtime metadata to stop new work before the hard timeout, persist RUN_SUMMARY, and finish successfully with partial results, so n8n gets data instead of a timeout error. Keep batches small and run latest unless you intentionally pin a historical build.

Input

{
"companies": ["https://www.linkedin.com/company/openai"],
"targetTitles": ["Director", "Gerente"],
"searchQuery": "supply chain",
"location": "San Francisco",
"maxEmployees": 25,
"decisionMakersOnly": false,
"compareWithPreviousRun": true
}
ParameterTypeRequiredDefaultDescription
companiesArrayYes-LinkedIn company URLs or plain company names
targetTitlesArrayNoEN/ES decision-maker set for up to 50 companiesICP titles for title-specific SERP expansion and verified title matching
searchQueryStringNo""Extra keyword phrase for the discovery query
locationStringNo""Location filter
maxEmployeesIntegerNo25Max employees per company (1 to 100)
decisionMakersOnlyBooleanNofalseEmit and charge only owners, founders, C-level, VPs and directors
seniorityFilterArrayNo[]owner, partner, cxo, vp, director, manager, senior, entry, training, unpaid. Unknown values are dropped with a warning
compareWithPreviousRunBooleanNofalseFree monitoring. Adds a company-diff-summary row per company vs your previous run
maxConcurrencyIntegerNo3Concurrent requests (1 to 10)
proxyConfigurationObjectNoGOOGLE_SERPPhase A discovery proxy. Country routing honored; alternate groups and custom URLs ignored
verificationProxyConfigurationObjectNoRESIDENTIALPhase B verification proxy. Used only when active pricing safely covers residential cost

Output

{
"publicIdentifier": "thegdb",
"profileUrl": "https://www.linkedin.com/in/thegdb/",
"fullName": "Greg Brockman",
"headline": "OpenAI",
"matchedTitles": ["President"],
"titleMatchType": "partial",
"isDecisionMaker": true,
"seniorityBand": "cxo",
"department": "executive",
"location": "San Francisco",
"company": "openai",
"scrapedAt": "2026-03-22T09:45:09.102Z"
}
FieldTypeDescription
publicIdentifierstringLinkedIn profile slug
profileUrlstringFull LinkedIn profile URL
fullNamestringEmployee full name
headlinestringCurrent role / company
matchedTitlesstring[]Target titles that matched the headline or job title
titleMatchTypestringexact, partial, or none (accent-insensitive matching)
isDecisionMakerbooleanTrue for owner, founder, partner, C-level, VP and director titles
seniorityBandstringowner, partner, cxo, vp, director, manager, senior, entry, training, unpaid, unknown
departmentstringexecutive, engineering, data, product, design, sales, marketing, finance, hr, legal, support, operations, other
locationstringGeographic location
companystringNormalized company identifier
scrapedAtstringISO 8601 timestamp

Use cases

  • Sales teams. Decision makers at target accounts filtered by title and seniority, and a new decision maker alert in the weekly diff.
  • Recruiters. Map talent at competitors. Departures in the diff mean placement leads.
  • LATAM agencies. Mix English and Spanish ICP titles such as Director, Gerente General, Presidente and Dueño.
  • Investors. Team assessment and headcount tracking for due diligence.
  • AI agents. Structured, schema-stable data source for autonomous prospecting workflows.

FAQ

Do I need a LinkedIn account?

No. Discovery uses Google SERP and verification uses warmed anonymous LinkedIn requests. No login, no cookies, no account risk.

What counts as a decision maker?

Owners, founders, partners, C-level (CEO, CTO, CFO, COO, CMO and other chief officers), VPs and directors, including Head of roles classified into the director band. Every row shows the exact band used.

Does Decision Makers Only save money?

Yes. Profiles that classify as non-decision-makers are skipped before charging, so with decisionMakersOnly: true you pay $0.025 only for buying-committee contacts. Skipped profiles appear in RUN_SUMMARY as skippedNotDecisionMaker.

What happens if verification can't run?

The run continues instead of failing. Rows whose own indexed headline names your company are billed at the same $0.025 and tagged confidence: "medium". Rows with nothing tying them to your company are tagged confidence: "low" and charged: false, and cost you nothing.

How does the free monitoring work?

Set compareWithPreviousRun: true. Each run stores a snapshot in a key-value store in your own account and adds a free company-diff-summary row per company showing new hires, departures, title changes and, since v2.3, new decision makers since your last run. Weekly schedules work best.

How does targetTitles work?

Omit it and a built-in English/Spanish decision-maker set applies for runs of 50 companies or fewer. Pass your own list for role-specific ICPs. matchedTitles and titleMatchType on every row tell you how strongly each profile matched.

Can I scrape multiple companies?

Yes. Pass an array of URLs or names. Runs over about 24 companies on the default timeout finish gracefully with partial coverage and tell you the suggested batch size.

What if a run is interrupted?

Built-in state tracking skips already-processed profiles on rerun, and the soft-deadline handler persists results before the hard timeout.

Can AI agents use this?

Yes. Structured JSON output, stable schema, API-first, and callable as an MCP tool via https://mcp.apify.com/?tools=george.the.developer/linkedin-company-employees-scraper.

Support

Questions? Open an issue on the actor's Issues tab. It is checked regularly.