# LinkedIn Company Scraper (`axlymxp/linkedin-company-scraper`) Actor

Get LinkedIn company data from URLs, vanity names or plain company names: website, industry, size, HQ, founded year, followers, employee count, office locations, similar companies and recent posts. No login or cookies. Failed lookups are free.

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

## Pricing

from $2.00 / 1,000 dataset items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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 Scraper: firmographics from company URLs or names

Turn a list of companies into clean LinkedIn company data: website, industry, size, headquarters, founded year, followers, employees on LinkedIn, office locations, similar companies and recent posts.

Paste LinkedIn URLs, vanity names (`stripe`), numeric company IDs or URLs (`https://www.linkedin.com/company/1035`, common in CRM and Sales Navigator exports), or **plain company names** (`Northrop Grumman`). Names are matched with LinkedIn's own company search, and the matched name is returned so you can check it. You don't need a LinkedIn account or cookies.

### Who uses this

- **Sales and RevOps teams.** Enrich CRM accounts with size, industry, HQ and website before routing or scoring.
- **Lead-gen agencies.** Build and qualify account lists from a spreadsheet of company names.
- **Investors and analysts.** Track follower and employee counts over time by scheduling a run, and map competitors through "similar pages".
- **Data and AI developers.** Call it from your app, Make, Zapier or an AI agent through Apify's API or MCP.

### What you get

| Field | Example |
| --- | --- |
| `name`, `linkedin_url`, `slug`, `company_id` | Stripe · https://www.linkedin.com/company/stripe · stripe · 2135371 |
| `website` | https://stripe.com |
| `industry` | Technology, Information and Internet |
| `company_size` | 5,001-10,000 employees |
| `headquarters`, `address`, `locations[]` | South San Francisco, California + every listed office |
| `organization_type`, `founded` | Privately Held · 2010 |
| `followers` | 1,730,479 |
| `employees_on_linkedin` | 16,585 |
| `tagline`, `description`, `specialties[]` | About text and declared specialties |
| `logo_url` | Logo image |
| `similar_pages[]`, `affiliated_pages[]` | Competitors and showcase pages ({name, url, subtitle}) |
| `recent_posts[]` | Latest public posts (text, date, likes, URL) |
| `jobs_search_url` | LinkedIn job search filtered to this company |
| `input`, `match_method`, `matched_name` | Shows how each input was matched |

A field is empty only when the company left it blank on LinkedIn.

### Input

| Parameter | Description | Default |
| --- | --- | --- |
| **Companies** | One per line: company or showcase URL, vanity name, numeric company ID/URL, or company name | required |
| Resolve company names | Match plain names with LinkedIn's company search | on |
| Include recent posts | Add latest posts shown on the page | on |
| Parallel lookups | Companies fetched at once (1–8) | 3 |
| Proxy (fallback) | Used only if LinkedIn starts throttling the run | off |

#### Example input

```json
{
  "companies": [
    "https://www.linkedin.com/company/stripe",
    "openai",
    "Northrop Grumman"
  ]
}
```

#### Example output (shortened)

```json
{
  "input": "Northrop Grumman",
  "match_method": "name:typeahead+jobs",
  "matched_name": "Northrop Grumman",
  "company_id": "1412",
  "name": "Northrop Grumman",
  "linkedin_url": "https://www.linkedin.com/company/northrop-grumman-corporation",
  "website": "https://www.northropgrumman.com/",
  "industry": "Defense and Space Manufacturing",
  "company_size": "10,001+ employees",
  "headquarters": "Falls Church, VA",
  "organization_type": "Public Company",
  "followers": 1808538,
  "employees_on_linkedin": 87850,
  "specialties": ["engineering", "information technology", "electronics"],
  "similar_pages": [{"name": "Lockheed Martin", "url": "https://www.linkedin.com/company/lockheed-martin", "subtitle": "Defense and Space Manufacturing · Bethesda, MD"}],
  "scraped_at": "2026-09-26T12:31:18Z"
}
```

### Failed lookups

Inputs that can't be matched or fetched are **not written to the dataset**. They are listed with the reason in the run's `FAILED_INPUTS` record (Storage → Key-value store). The `SUMMARY` record has run totals.

Typical failures:

- a name with no LinkedIn company match
- a deleted page
- a LinkedIn school URL (school pages are only shown to signed-in visitors)

### Scheduling and integrations

- **Schedule** a weekly run on the same list to build a time series of followers and employees.
- **Webhooks, Make, Zapier, Google Sheets, Airtable, S3.** Use any Apify integration to push rows where you need them.
- **API:** `POST https://api.apify.com/v2/acts/<username>~linkedin-company-scraper/run-sync-get-dataset-items` with the input above.

### Use with AI agents (MCP)

Add this actor to the Apify MCP server (`https://mcp.apify.com`) and an assistant such as Claude or Cursor can enrich company names on request. For example: "Look up these 20 prospects on LinkedIn and give me their size and HQ."

### FAQ

**Do I need a LinkedIn account or cookies?**
No. The actor reads the same public company pages anyone sees when logged out. Your account is never at risk because none is used.

**How accurate is name matching?**
Names go through LinkedIn's own company search, and the top match is used. `matched_name` and `match_method` show exactly what was matched. Use URLs or vanity names when you need certainty.

**Why is `founded` or `specialties` empty for some companies?**
Those fields are optional on LinkedIn. If the company didn't fill them in, they are empty.

**Can it scrape employees, people or contact details?**
No. It returns company-level public data only. People lists and contact details require signing in.

**How fresh is the data?**
Live. Every run fetches the current public page. Nothing comes from a cached database.

**Is scraping LinkedIn legal?**
The actor collects publicly visible company information without logging in. Check that your use complies with the laws that apply to you and with LinkedIn's terms, especially if you process personal data.

**What about large lists?**
Thousands of companies per run are fine. Keep parallel lookups low (3 is the default), and enable the proxy fallback for very large lists. The run checkpoints its progress, so a migrated run resumes without duplicate rows.

# Actor input Schema

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

One company per line. Accepts a LinkedIn company or showcase URL (https://www.linkedin.com/company/stripe), a numeric company URL or ID (https://www.linkedin.com/company/1035 or 1035), a vanity name (stripe), or a plain company name (Northrop Grumman). Names are matched with LinkedIn's own company search; the matched name is returned in 'matched\_name' so you can check it.

## `resolveNames` (type: `boolean`):

Look up plain names (and vanity names that 404) through LinkedIn's company search. Turn off to accept only URLs and exact vanity names.

## `includeRecentPosts` (type: `boolean`):

Add the company's latest public posts (text, date, likes, URL — usually up to 7) shown on its page. No extra requests.

## `maxConcurrency` (type: `integer`):

How many companies to fetch at once. Keep it low (2–4) to stay under LinkedIn's rate limits.

## `proxyConfiguration` (type: `object`):

Optional. Requests go out directly; if LinkedIn starts throttling (HTTP 999/429), the run switches to this proxy for the rest of the run. Residential proxies work best for large lists.

## Actor input object example

```json
{
  "companies": [
    "https://www.linkedin.com/company/stripe",
    "openai",
    "Northrop Grumman"
  ],
  "resolveNames": true,
  "includeRecentPosts": true,
  "maxConcurrency": 3,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

One row per company: firmographics, followers, employee count, locations, similar pages and recent posts.

## `failed` (type: `string`):

Inputs that could not be matched or fetched, with the reason (not charged).

## `summary` (type: `string`):

Totals for the run.

# 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/stripe",
        "openai",
        "Northrop Grumman"
    ],
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("axlymxp/linkedin-company-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/stripe",
        "openai",
        "Northrop Grumman",
    ],
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("axlymxp/linkedin-company-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/stripe",
    "openai",
    "Northrop Grumman"
  ],
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call axlymxp/linkedin-company-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,axlymxp/linkedin-company-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/rB59ZNyRL4voSUcWa/builds/lVvrWi5ak5YXZdQ6q/openapi.json
