# LinkedIn Company Data Scraper: Size, Industry, Followers (`neverempty/linkedin-company-data-scraper`) Actor

For sales prospecting, CRM enrichment and account research: LinkedIn company data from URLs or just names, with website, industry, size, employee count, followers, HQ, founded year and every office. Finds a company's LinkedIn URL by name, plus similar companies. No login. CSV, Excel, JSON.

- **URL**: https://apify.com/neverempty/linkedin-company-data-scraper.md
- **Developed by:** [NeverEmpty](https://apify.com/neverempty) (community)
- **Categories:** Lead generation, Social media, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.75 / 1,000 company returneds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## LinkedIn Company Data Scraper: Size, Industry, Followers

**Turn a list of LinkedIn company URLs, or just company names, into a spreadsheet of company data: website, industry, company size, employees on LinkedIn, followers, headquarters, founded year, specialties and every office address, one row per company.** Built for sales prospecting, CRM enrichment, recruiting and market research, with no LinkedIn login or cookies needed.

- **Only have company names?** Put them in **Company names to search** and get each company's LinkedIn URL with its full details. Each row is checked to be the company it names, so your list stays clean.
- **Want more accounts like your best ones?** Company rows also list the similar companies and affiliated pages LinkedIn shows (subsidiaries, brands, showcase pages), each with name, LinkedIn URL, industry and location.
- **Quick on long lists.** One run on 2026-10-15 returned 200 companies in 164 seconds.
- **Ready for your tools.** Download CSV, Excel or JSON, or send the rows to Google Sheets, your CRM or an AI agent.

### What you get

- **Company profile**: LinkedIn company ID, LinkedIn URL and page name (`universalName`), name, tagline, full description, website, industry, company type (for example Public Company, Privately Held).
- **Size and reach**: company size range as text and as numbers (`employeeCountRange.start` / `end`), employees on LinkedIn, followers.
- **Where they are**: headquarters plus **every office address** LinkedIn lists, each split into street, city, region, postal code and country code, with the headquarters marked.
- **More context**: founded year, specialties as a list, logo and cover image URLs.
- **Related companies**: affiliated pages (subsidiaries, brands, showcase pages) and LinkedIn's similar pages, each with name, LinkedIn URL, industry and location. Useful for finding look-alike accounts.
- **Find the LinkedIn URL from a name**: search by company name and get the LinkedIn company URL and ID, best match first (up to 10 matches per name).
- **Export anywhere**: CSV, Excel, JSON or XML, Google Sheets, or the Apify API for your own code, CRM or AI agent.

### Who uses it

- **Sales and lead generation**: enrich an account list with industry, size, headquarters and website; find look-alike companies through similar pages; get a company's website domain when all you have is its LinkedIn URL.
- **Recruiters**: company size, locations and followers for the employers you work with.
- **Market and competitor research**: compare companies in one table, track follower counts by running the same list on a schedule.
- **CRM and data teams**: turn a column of company names into LinkedIn URLs and IDs.
- **AI agents**: one call returns structured company facts ready for an LLM.

### How to use it

1. Paste LinkedIn company URLs into **Company LinkedIn URLs** (one per line), or company names into **Company names to search**, or both.
2. For names, choose **Companies per name** (1 = best match only).
3. Click **Start**, then download the results as CSV, Excel or JSON.

#### Input fields

| Field | What to put in it |
|---|---|
| `companies` | LinkedIn company or showcase page URLs, one per line |
| `searches` | Company names to look up in LinkedIn's company search, one per line |
| `maxResultsPerSearch` | Companies to return per name, 1 to 10 (default 1 = best match) |
| `nameMustMatch` | On by default: only companies whose LinkedIn name contains all your words |

#### Input example

```json
{
  "companies": [
    "https://www.linkedin.com/company/google/",
    "https://www.linkedin.com/company/microsoft/"
  ],
  "searches": ["Stripe", "Siemens"],
  "maxResultsPerSearch": 1
}
```

#### Output example

```json
{
  "status": "ok",
  "id": "165158",
  "universalName": "netflix",
  "linkedinUrl": "https://www.linkedin.com/company/netflix",
  "name": "Netflix",
  "tagline": "Play, pause, and resume watching anytime and anywhere.",
  "website": "https://jobs.netflix.com?utm_campaign=LIHomePage&utm_source=linkedin",
  "industries": ["Entertainment Providers"],
  "companyType": "Public Company",
  "companySize": "10,001+ employees",
  "employeeCountRange": { "start": 10001, "end": null },
  "employeeCount": 19039,
  "followerCount": 12175132,
  "foundedOn": { "year": 1997 },
  "headquarters": "Los Gatos, CA",
  "specialities": ["Revolutionizing the way people watch TV shows and movies!"],
  "locations": [
    { "headquarter": true, "line1": "100 Winchester Circle", "line2": null, "city": "Los Gatos", "geographicArea": "CA", "postalCode": null, "country": "US", "countryName": "United States", "text": "100 Winchester Circle, Los Gatos, CA, US" }
  ],
  "similarPages": [
    { "name": "Spotify", "linkedinUrl": "https://www.linkedin.com/company/spotify/", "universalName": "spotify", "industry": "Musicians", "location": "Stockholm, Stockholm County" }
  ],
  "input": "https://www.linkedin.com/company/netflix/",
  "searchQuery": null,
  "checkedAt": "2026-10-15T07:00:00.000Z"
}
```

(Values from Netflix's public LinkedIn page on 2026-10-15; the description, logo, cover and the other offices and pages are cut here for space.)

### Output fields

| Field | What it is |
|---|---|
| `id` | LinkedIn company ID (the number LinkedIn uses for the company) |
| `universalName`, `linkedinUrl` | Page name and URL of the company page |
| `name`, `tagline`, `description` | As shown on the company page |
| `website` | The website the company lists on LinkedIn |
| `industries`, `companyType` | Industry and company type |
| `companySize`, `employeeCountRange` | Size range as LinkedIn shows it, and as numbers |
| `employeeCount` | Employees on LinkedIn (people who list this company) |
| `followerCount` | LinkedIn followers |
| `foundedOn.year` | Founded year, when the company lists one |
| `headquarters`, `locations` | Headquarters and every office address |
| `specialities` | Specialties the company lists |
| `logo`, `backgroundCover` | Image URLs |
| `affiliatedPages`, `similarPages` | Related company pages |
| `input`, `searchQuery`, `searchRank`, `nameMatchesSearch` | Which of your inputs produced the row |
| `status`, `note` | `ok` for a company row; other values are free rows that say why nothing was returned |

### FAQ

#### How do I get the website, industry and employee count for a list of LinkedIn company URLs?

Paste the URLs into **Company LinkedIn URLs**, one per line, and click **Start**. Each company comes back as one row with `website`, `industries`, `companySize`, `employeeCount`, `followerCount`, `headquarters` and every office in `locations`. Download it as CSV or Excel.

#### How do I find the LinkedIn page for a list of company names?

Put the names into **Company names to search**. Each name returns the company's `linkedinUrl` and LinkedIn company `id` with the full details. Set **Companies per name** above 1 to see more of LinkedIn's top suggestions, in the order shown in `searchRank`.

#### Can I export LinkedIn company data to Excel without logging in?

Yes. The Actor reads public company pages, so no LinkedIn account or cookies are needed. Results download as CSV, Excel, JSON or XML.

#### How do I find companies similar to my best customers?

Run your best customers' LinkedIn URLs. Rows include `similarPages` (companies LinkedIn shows as similar) and `affiliatedPages` (subsidiaries and brands) whenever LinkedIn lists them, each with a LinkedIn URL you can paste into the next run.

#### Can I keep the data up to date?

Save your list as a Task and attach a Schedule. Each run returns the current followers, employee count, size and offices, so you can compare them over time.

### Pricing

You pay per company returned, plus a small fee per run. Free rows (a page that does not exist, a name with no match, a refused request) are never charged. Set a maximum total charge for a run and the Actor stops before going over it and tells you how many inputs were left.

### Good to know

- Data comes from the public company pages LinkedIn shows to signed-out visitors. Anything LinkedIn shows only to signed-in members is not included: the list of employees, people's profiles and emails, funding rounds, and posts.
- `employeeCount` is the number of LinkedIn members who list the company, not an official headcount; `companySize` is the range the company chose.
- `foundedOn`, `tagline`, `specialities`, `phone` and some addresses are empty when the company has not filled them in. Nothing is guessed.
- In `locations`, `city`, `geographicArea` and `postalCode` are split from the address line LinkedIn shows; the full line is always in `text`.
- A company name search uses LinkedIn's company search and keeps its order (`searchRank`). A name that LinkedIn does not know, or that only matches loosely, returns a free row instead of a guess. With **Companies per name** set to N, LinkedIn's top N suggestions are checked and each one gets a row: the company, or a free row saying why (no public page with the same company ID, a name without all of your words (a company-type word at the end, such as AG, Inc or Ltd, does not need to match), or a company already returned in this run). A lower suggestion is never returned in place of a higher one, so a subsidiary or regional page never comes back as the company you named. If you know the company, pasting its LinkedIn URL is the most direct way.
- LinkedIn school pages (universities, `/school/...`) are shown only to signed-in members, so they are not read; such a URL returns a free row. Company and showcase pages work.
- The same company asked twice in one run (by URL and by name, for example) is returned and charged once.
- Up to 5,000 company URLs and 500 names per run.

### Thanks for using this Actor

We build these tools for people who run them every day, and we improve them from what users tell us.

- **Missing a field, or need another filter?** Tell us in the **Issues** tab. If the data is there, we add it.
- **Found a bug or a wrong value?** Post the run ID in the **Issues** tab. Wrong data is the thing we fix first.

If this Actor saved you time, a short review helps other people find it.

# Actor input Schema

## `companies` (type: `array`):

LinkedIn company page addresses, one per line, such as https://www.linkedin.com/company/microsoft/ (showcase pages work too). Each returns one row with the company details. Leave empty to search by name only; if both lists are empty, the example companies Google and Microsoft are read.

## `searches` (type: `array`):

Company names, one per line, such as Stripe or Siemens. Each name is looked up in LinkedIn's company search and the best match is returned with its LinkedIn URL and full details. Leave empty if you only use URLs.

## `maxResultsPerSearch` (type: `integer`):

How many of LinkedIn's top suggestions to check for each name, best match first (1 to 10). Each suggestion gets one row: the company, or a free row saying why. Empty means 1, the best match only.

## `nameMustMatch` (type: `boolean`):

On by default: a company found by name is returned only when its LinkedIn name contains every word you searched (case, accents and a company-type word at the end such as AG, Inc or Ltd do not matter), so loose suggestions are skipped before anything is charged. Off: return LinkedIn's suggestions as they come; the column nameMatchesSearch marks each row.

## Actor input object example

```json
{
  "companies": [
    "https://www.linkedin.com/company/google/",
    "https://www.linkedin.com/company/microsoft/"
  ],
  "maxResultsPerSearch": 1,
  "nameMustMatch": true
}
```

# Actor output Schema

## `results` (type: `string`):

One row per LinkedIn company: company ID, LinkedIn URL, name, tagline, description, website, industry, company type and size, employees on LinkedIn, followers, founded year, headquarters, specialties, logo, every office address, affiliated and similar pages. A page that does not exist, a name with no match, a refused request or a run that hit its maximum charge comes back as a free row that says why.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "companies": [
        "https://www.linkedin.com/company/google/",
        "https://www.linkedin.com/company/microsoft/"
    ],
    "maxResultsPerSearch": 1
};

// Run the Actor and wait for it to finish
const run = await client.actor("neverempty/linkedin-company-data-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "companies": [
        "https://www.linkedin.com/company/google/",
        "https://www.linkedin.com/company/microsoft/",
    ],
    "maxResultsPerSearch": 1,
}

# Run the Actor and wait for it to finish
run = client.actor("neverempty/linkedin-company-data-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "companies": [
    "https://www.linkedin.com/company/google/",
    "https://www.linkedin.com/company/microsoft/"
  ],
  "maxResultsPerSearch": 1
}' |
apify call neverempty/linkedin-company-data-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,neverempty/linkedin-company-data-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/RMDTqZfMgf5IwtgZ0/builds/cVfcpJCXm9PQFMZiL/openapi.json
