Linkedin Company Employees
Pricing
$19.99/month + usage
Linkedin Company Employees
The LinkedIn Company Employees Scraper extracts public employee data from LinkedIn company pages, including names, positions, locations, and profile links. Ideal for recruiters, analysts, and marketers to identify talent, map organizations, and support B2B lead generation efforts.
Pricing
$19.99/month + usage
Rating
4.1
(4)
Developer
API Empire
Maintained by CommunityActor stats
2
Bookmarked
198
Total users
3
Monthly active users
10 hours ago
Last modified
Categories
Share
LinkedIn Employee Scraper — Extract Profiles, Companies & Contacts
LinkedIn Company Employees Scraper turns a company page or a plain keyword into a structured list of the people who work there, pulled straight from LinkedIn's public, logged-out profile pages. Give it a company URL or a name, and it returns each employee's identity fields, detected company affiliations, and contact/engagement signals as typed, normalized JSON — no HTML, no selectors, no manual parsing. The sections below cover exactly what fields it returns, how input works, and how to wire the output into a recruiting, sales, or research pipeline.
What is LinkedIn Company Employees Scraper?
LinkedIn Company Employees Scraper is an Apify Actor that discovers and scrapes public employee profiles tied to a LinkedIn company page — no LinkedIn account, login, or cookie required. It accepts either a direct company URL or a plain-text keyword, finds employee profile links two ways (parsing the company's own public pages and a Google search fallback), then fetches and parses each profile page individually. Every run outputs one dataset row per employee, plus the company and contact data detected alongside it.
- Scrape employee profile identity data (name, headline, location, photo)
- Detect current company and other company affiliations found on the profile
- Capture Creator-mode and Influencer signals, recommendations, and contact-adjacent metadata
- Discover employees from a company URL or a keyword — no need to already know the company's LinkedIn slug
- Export results as JSON, CSV, or Excel directly from the Apify dataset
What data does LinkedIn Company Employees Scraper collect?
Each run returns one row per employee, combining four kinds of data extracted from that person's public profile page:
| Data Type | Key Fields | JSON Field Names |
|---|---|---|
| Identity & profile | Full name, headline, location, photo, profile slug | fullname, first_name, last_name, headline, public_identifier, profile_picture_url, location |
| Company affiliation | Source company, current employer, other companies detected | company_url, current_company, companies_detected |
| Creator & engagement signals | Follower-count visibility, Influencer badge | is_creator, is_influencer, follower_count, show_follower_count |
| Contact & platform metadata | External website, recommendations, course links, page-level markers | personal_website, recommendations_received, other_contact_details, contact_elements |
Need more LinkedIn data?
If you also need firmographics for the companies these employees work at, pair this Actor with LinkedIn Company About Scraper: Keyword Search & Advance Filter for industry, headcount, and HQ data on each employer. For individual profiles that need deeper enrichment — including current-employer firmographics attached to a single lead — LinkedIn Profile Scraper With Company Enrichment covers that use case.
Why not build this yourself?
Scraping LinkedIn profiles without an official self-serve API means reverse-engineering a moving target: employee links are only discoverable by parsing a company's public page markup and cross-checking a Google search fallback, profile pages return LinkedIn's own permanent-block response (HTTP 999) the moment a request looks automated, and every retry has to distinguish a transient block from a permanent one to avoid wasting run time. This Actor already implements that discovery pipeline, residential-proxy routing, and retry/backoff logic, and keeps the output schema stable while the underlying page markup changes underneath it. Building and maintaining that in-house means owning proxy costs, block-detection logic, and markup-change fixes indefinitely — work this Actor already does.
Why do developers and teams scrape LinkedIn?
For recruiting and talent sourcing teams
Recruiters use this Actor to pull every discoverable employee at a target company before reaching out about a role — matching headline and current_company against a target title, then following profile_url to review the full profile before a cold outreach. Because discovery works from just a company name, sourcers can map a company's workforce without already knowing individual employee handles. location supports building geo-targeted candidate shortlists for hybrid or region-specific roles without opening LinkedIn manually for each name.
For sales and lead generation teams
SDR and BDR teams use companies_detected and current_company to confirm a prospect still works where a lead list says they do, then use headline to hand-qualify decision-maker language before a sequence goes out. Because urls accepts a plain company keyword, a rep can go from "target account" to a scraped contact list without first hunting down the company's exact LinkedIn slug. personal_website, when present, gives an extra outreach channel beyond the LinkedIn message itself.
For market and competitive researchers
Researchers use the Actor to build a public, point-in-time snapshot of who is visibly listed against a company on LinkedIn — useful for tracking headcount composition, hiring patterns, or org turnover across a competitor set. is_influencer and follower_count flag which employees carry public visibility LinkedIn itself has marked, which is useful signal when studying which companies have vocal public advocates versus none. All of it comes from what LinkedIn already renders on public pages — no private data, no login.
For developers building data products
Because every run outputs typed JSON with a stable field set, developers can drop this Actor straight into a scheduled pipeline — a nightly workforce-change monitor, a CRM enrichment step, or a lead-scoring service — without writing or maintaining an HTML parser. The company-affiliation and creator-signal fields (companies_detected, is_creator, follower_count) are already normalized, so downstream code can filter and join on them immediately instead of first cleaning scraped text.
How to scrape LinkedIn (step by step)
- Open LinkedIn Company Employees Scraper on the Apify Store and click Try for free (or run it from the Apify Console/API if you already use Apify).
- Provide the required input: at least one entry in
urls— a full LinkedIn company URL (e.g.https://www.linkedin.com/company/google) or a plain company keyword. - Set
max_employeesto cap how many profiles to discover and scrape per URL/keyword (1–10,000; default 10). - Leave
proxyConfigurationon its default (Apify Residential, US) unless you need a different proxy setup, then start the run. - Download results as JSON, CSV, or Excel from the Apify dataset, or pull them via the Apify API.
What to do when LinkedIn changes its structure
The Actor is maintained against LinkedIn's public profile and company-page markup, and the output field names and types stay stable on your end even when the underlying page structure changes — the block-detection and retry logic already in this Actor exist for exactly that reason. No specific turnaround time is promised for any given breakage.
⬇️ Input
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
urls | Yes | array | One entry per line: full LinkedIn company URLs (e.g. https://www.linkedin.com/company/google) OR plain keywords/company names for discovery. Bulk-friendly — run many companies in one go. | ["https://www.linkedin.com/company/google", "openai"] |
max_employees | No | integer | Cap how many employee profiles to discover and scrape for each URL/keyword (1–10,000). Higher = more data and longer runs. Default: 10. | 25 |
proxyConfiguration | No | object | Recommended: Apify Residential for fewer blocks. If Apify proxy is ON, these settings are used; if turned OFF, requests go direct (higher block risk). If omitted, default residential (US) is used. | { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "US" } |
Example JSON input
{"urls": ["https://www.linkedin.com/company/google","openai"],"max_employees": 25,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
The most common input mistake is treating max_employees as a total cap across the whole run — it's actually applied per urls entry, so five companies at max_employees: 200 can yield up to 1,000 rows, not 200.
⬆️ Output
Results are written to the Apify dataset as typed, normalized JSON — exportable as JSON, CSV, Excel, or XML. Every successfully scraped profile produces the same field set; profiles that couldn't be scraped produce a smaller, distinct error row instead.
Scraped employee record
{"company_url": "https://www.linkedin.com/company/google","profile_url": "https://www.linkedin.com/in/linusupson","fullname": "Linus Upson","first_name": "Linus","last_name": "Upson","headline": "LinkedIn got too spammy and I've turned off all email notifications. · Experience: Google · Location: San Francisco Bay Area · 500+ connections on LinkedIn.","public_identifier": "/in/linusupson","profile_picture_url": "https://media.licdn.com/dms/image/v2/.../profile-displayphoto-shrink_200_200.jpg","location": { "country": "", "city": "San Francisco Bay Area", "full": "San Francisco Bay Area", "country_code": "" },"is_creator": true,"is_influencer": false,"follower_count": 2000,"created_timestamp": 1784212991,"show_follower_count": true,"current_company": "Google","companies_detected": [{ "name": "Google", "slug": "google", "url": "https://www.linkedin.com/company/google" }],"personal_website": "","recommendations_received": [],"other_contact_details": { "course_links": [] },"contact_elements": {"profile_identity": {"profile_identifier": "https://www.linkedin.com/in/linusupson","profile_picture": "https://media.licdn.com/dms/image/v2/.../profile-displayphoto-shrink_200_200.jpg","profile_name_display": "Linus Upson"},"auth_points": {"email_phone_input_present": false,"password_input_present": false,"login_form_action": ""},"learning_content": {"course_details": [],"course_titles": [],"all_courses_link": ""},"platform": {"corporate_logo_url": "","copyright": "","policy_links": [],"about_links": [],"privacy_links": [],"user_agreement_links": []},"language": {"selector_present": false,"locales": []}}}
Blocked or failed profile row
Rows that can't be scraped (LinkedIn block, timeout, empty response) are saved with a smaller, distinct shape so you can see what was attempted without it polluting the successful-row schema:
{"profile_url": "https://www.linkedin.com/in/some-blocked-profile","error": "HTTP 999","created_timestamp": 1784212991}
How many results can you scrape with LinkedIn Company Employees Scraper?
max_employees caps discovery and scraping at 1–10,000 profiles per urls entry (default 10), and there's no fixed limit on how many URLs or keywords you can list in one run — total output scales with (number of entries) × max_employees. For a keyword-based entry, the Google-search fallback used to find profile links searches in pages of 10 results up to 100 total, so a keyword target's yield is bounded by however many matching profiles that search actually surfaces, even if max_employees is set higher; a direct company URL also draws from the company's own public pages, which can add more. There's no other hard cap in the Actor itself.
Integrate LinkedIn Company Employees Scraper and automate your workflow
LinkedIn Company Employees Scraper works with any language or tool that can send an HTTP request, since every run and its dataset are reachable through the standard Apify API.
REST API integration
import requestsTOKEN = "YOUR_APIFY_TOKEN"ACTOR = "your-username~linkedin-company-employees-scraper"run = requests.post(f"https://api.apify.com/v2/acts/{ACTOR}/run-sync-get-dataset-items",params={"token": TOKEN},json={"urls": ["https://www.linkedin.com/company/google"], "max_employees": 25},)for row in run.json():print(row.get("fullname"), row.get("current_company"))
Works in Python, Node.js, Go, Ruby, cURL — anything that can call an HTTPS endpoint with your Apify token.
Automation platforms (n8n, Make)
n8n's Apify node can run this Actor and read its dataset as a step in a larger workflow — for example, feeding scraped profile_url and current_company values into a CRM-update node. Make's Apify app module offers the same pattern — run the Actor, then map dataset fields into downstream modules (spreadsheets, CRMs, email tools) without writing custom HTTP-request logic.
Is it legal to scrape LinkedIn?
Scraping publicly accessible LinkedIn pages is generally permitted; this Actor only ever reads logged-out, public profile and company pages — no login, session cookie, or authenticated data is involved. That said, employee names, headlines, and profile photos are personal data under regimes like GDPR and CCPA, so storing, combining, or using this output for outreach or profiling carries its own lawful-basis and retention obligations regardless of how the data was collected. Consult legal counsel before using this data for commercial outreach or any bulk processing of personal data, especially across jurisdictions.
Frequently asked questions
Does LinkedIn Company Employees Scraper work without a LinkedIn account?
Yes. Every request is made anonymously against LinkedIn's public pages — no LinkedIn login, cookie, or account is used or required.
How often is the scraped data updated?
Each run fetches profile and company pages live at run time; nothing is served from a cache. Re-run the Actor whenever you need current data.
What happens if a profile can't be scraped?
Blocked, timed-out, or empty-response attempts are still saved to the dataset, but as a distinct, smaller row: { "profile_url", "error", "created_timestamp" } instead of the full profile shape — so you can see exactly what was attempted.
Can I scrape private or login-gated LinkedIn content?
No. Only what LinkedIn renders on a public, logged-out profile or company page is returned — private profiles, authenticated-only fields, and anything behind a login wall are out of scope by design.
Am I charged for rows that fail to scrape?
No. Only rows containing real, successfully-extracted profile data are billed; rows saved with an error field are written for visibility but are not a billed event.
Does LinkedIn Company Employees Scraper work for AI agent workflows and LLM pipelines?
Yes, as an HTTP endpoint callable from any agent framework via the Apify API. Every response is typed, normalized JSON with a stable field set — no HTML and no parsing step before passing it into an LLM context or a downstream tool call.
How does LinkedIn Company Employees Scraper handle LinkedIn's anti-bot system?
It routes requests through Apify's residential proxy pool by default, retries recoverable failures with backoff, and specifically detects LinkedIn's HTTP 999 permanent-block response so it stops retrying a request that will never succeed rather than wasting run time.
Does LinkedIn Company Employees Scraper return data in a format LLMs can use directly?
Yes. Output is typed, normalized JSON with stable field names — pass it directly into an LLM context window, a vector store, or an agent tool call without any HTML parsing step.
Can I use LinkedIn Company Employees Scraper without managing proxies?
Yes. It defaults to Apify's residential proxy pool (US) automatically; you only need to touch proxyConfiguration if you want a different setup.
What happens when LinkedIn changes its structure or blocks the scraper?
The Actor is maintained and the output schema stays stable on your end — field names and types don't change even when LinkedIn's underlying page markup does. No specific turnaround time is promised for any individual fix.
Your feedback
Found a bug or missing a field? We want to know. Open an issue through the Actor's Apify Store page or contact API-Empire through the Apify platform's built-in support channel — reports like these directly shape what gets fixed and maintained next.