# LinkedIn Company Profile Scraper (`khadinakbar/linkedin-company-profile-scraper`) Actor

Scrape public LinkedIn company profiles. Returns company name, industry, size, location, website, description, and employee signals. MCP/API-ready.

- **URL**: https://apify.com/khadinakbar/linkedin-company-profile-scraper.md
- **Developed by:** [Khadin Akbar](https://apify.com/khadinakbar) (community)
- **Categories:** Lead generation, MCP servers, Social media
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $10.00 / 1,000 company profile scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## LinkedIn Company Profile Scraper

Scrape full **public LinkedIn company profiles** by company URL or vanity name — no login, no cookies, no LinkedIn account. Give it `stripe` or `https://www.linkedin.com/company/stripe` and get back one clean, flat JSON record per company: industry, size, employee count, followers, founded year, headquarters, website, specialties, funding signals, logo, similar companies, and an optional employee sample.

Built for **AI agents and data teams**: single value in, structured JSON out, predictable per-company pricing, and MCP-ready descriptions.

### What you get per company

| Field | Description |
|---|---|
| `companyName` | Public company name |
| `handle` | LinkedIn vanity handle (slug after `/company/`) |
| `linkedinId` | Numeric LinkedIn company ID |
| `linkedinUrl` | Canonical public company URL |
| `website` | Company website |
| `tagline` | Slogan / tagline |
| `description` | Public "About" text |
| `industry` | LinkedIn industry classification |
| `companyType` | e.g. Privately Held, Public Company |
| `companySize` | Band, e.g. `5,001-10,000 employees` |
| `employeeCount` | Employees on LinkedIn |
| `followersCount` | Public follower count |
| `foundedYear` | Year founded |
| `specialties` | Declared specialties |
| `locationCity` / `locationState` / `locationCountry` / `headquarters` | HQ location |
| `fundingRounds` / `lastFundingType` / `lastFundingDate` / `lastFundingAmount` / `investors` | Funding signals (LinkedIn via Crunchbase) |
| `logoUrl` / `coverImageUrl` | Brand images |
| `similarCompanies` | "Also viewed" pages (name, url, industry) — optional |
| `employeesSample` | Small public employee sample (name, title, profile URL, image) — optional, off by default |
| `source` | Provider that returned the record |
| `scrapedAt` | ISO timestamp |

### When to use it

- **B2B sales / ABM** — enrich target-account lists with firmographics before outreach.
- **Recruiting** — size, industry, HQ, and growth signals for prospect companies.
- **Investors / market research** — funding rounds, headcount, and "similar companies" graphs.
- **Data enrichment pipelines** — turn a list of company URLs or names into structured rows.

### When NOT to use it

- For **LinkedIn people / person profiles** → use `linkedin-profile-details-scraper`.
- For a company's **full employee roster** → use `linkedin-company-employee-scraper` (this actor only returns a small public sample).
- For a company's **posts/updates** → use `linkedin-company-posts-scraper`.
- For **searching/discovering** companies by keyword → use `linkedin-company-search-scraper`.

### Input

```json
{
  "companyUrls": [
    "https://www.linkedin.com/company/stripe",
    "microsoft",
    "https://www.linkedin.com/company/airbnb"
  ],
  "maxCompanies": 100,
  "providerOrder": "scrapecreators-first",
  "includeSimilarCompanies": true,
  "includeEmployeesSample": false,
  "maxEmployeesSample": 10,
  "includeRawData": false
}
```

- **companyUrls** (required) — full company URLs or bare vanity names, mixed freely.
- **maxCompanies** — hard cap on profiles scraped and billed (default 100).
- **providerOrder** — which managed API is tried first; the other is the automatic fallback.
- **includeSimilarCompanies** — attach the "also viewed" companies (default true).
- **includeEmployeesSample** / **maxEmployeesSample** — attach a small public employee sample (default off).
- **includeRawData** — attach the raw provider payload for debugging (default off).

### Output example

```json
{
  "inputUrl": "https://www.linkedin.com/company/stripe",
  "companyName": "Stripe",
  "handle": "stripe",
  "linkedinId": "2135371",
  "linkedinUrl": "https://www.linkedin.com/company/stripe",
  "website": "https://stripe.com",
  "tagline": "Help increase the GDP of the internet.",
  "industry": "Technology, Information and Internet",
  "companyType": "Privately Held",
  "companySize": "5,001-10,000 employees",
  "employeeCount": 16031,
  "followersCount": 6190000,
  "foundedYear": 2010,
  "locationCity": "South San Francisco",
  "locationState": "California",
  "locationCountry": "US",
  "headquarters": "South San Francisco, California",
  "fundingRounds": 21,
  "lastFundingType": "Secondary market",
  "similarCompanies": [{ "name": "Plaid", "url": "https://www.linkedin.com/company/plaid" }],
  "source": "scrapecreators",
  "scrapedAt": "2026-06-27T00:00:00.000Z"
}
```

### Pricing

**Pay per result.**

- **$0.01 per company profile** saved to the dataset.
- Plus the standard small Apify actor-start fee.

A 100-company run costs about **$1.00**. The `maxCompanies` cap is a hard spend ceiling — you are never charged for more profiles than you ask for, and companies that can't be found are not charged.

### How it works (reliability)

This actor is **provider-backed**, not a browser or cookie scraper. It calls two managed LinkedIn data APIs:

- **ScrapeCreators** — primary (`GET /v1/linkedin/company`).
- **SociaVault** — automatic fallback (`GET /v1/scrape/linkedin/company`).

If the primary provider errors, rate-limits, or returns nothing usable, the actor automatically retries the same company on the secondary provider. You can flip the order or pin a single provider with `providerOrder`. No LinkedIn credentials are ever used or requested.

When a company genuinely does not exist, the run finishes cleanly and that input is simply skipped (logged in the run summary). When **every** lookup is blocked or errors and nothing is returned, the run fails honestly with a clear status message instead of silently succeeding empty.

Run-level telemetry (providers used, status codes, counts, stop reason) is written to the key-value store as `RUN_SUMMARY` and a compact `OUTPUT`.

### Use with AI agents (MCP)

This actor is exposed through the Apify MCP server as `apify--linkedin-company-profile-scraper`. Point Claude, ChatGPT, or any MCP client at it, pass a company URL or name, and receive structured firmographics back — ideal as an enrichment tool inside agentic workflows.

### FAQ

**Do I need a LinkedIn account or cookies?** No. It only reads public company data through managed APIs.

**Can I pass just the company name?** Yes — `stripe` works the same as the full URL.

**Why is a company missing?** Either the vanity handle is wrong (try the exact `/company/<handle>` slug) or LinkedIn does not expose that page publicly. Misses are not billed.

**Does it return the full employee list?** No — only an optional small public sample. For complete rosters use `linkedin-company-employee-scraper`.

### Legal

Use this actor only for lawful purposes and in compliance with LinkedIn's terms and applicable data-protection laws (including GDPR/CCPA where relevant). It returns only **public** company data. You are responsible for how you collect and use the data. This actor does not access private profiles, login-gated content, or personal data beyond what LinkedIn publishes publicly on a company page.

# Actor input Schema

## `companyUrls` (type: `array`):

One or more public LinkedIn company pages to scrape. Each item is either a full URL (e.g. https://www.linkedin.com/company/stripe) or just the vanity name (e.g. stripe). University /school/ and /showcase/ pages are not supported. Not a LinkedIn person profile - for people use the linkedin-profile-details-scraper actor.

## `maxCompanies` (type: `integer`):

Maximum number of company profiles to scrape and bill in this run. Accepts 1 to 1000; defaults to 100. Extra input URLs beyond this cap are ignored. Caps your spend at maxCompanies x the per-company price.

## `providerOrder` (type: `string`):

Which managed data API is tried first; the other is the automatic fallback. ScrapeCreators primary is recommended. Use the -only options to pin a single provider. Defaults to scrapecreators-first.

## `includeSimilarCompanies` (type: `boolean`):

Attach the 'similar / also viewed' company pages LinkedIn lists on the profile (name, url, industry). Defaults to true. Set false for a leaner record. Does not add a separate charge.

## `includeEmployeesSample` (type: `boolean`):

Attach a small public sample of employees surfaced on the company page (name, title, profile URL, image). Defaults to false. This is a preview sample, not the full employee roster - for that use the linkedin-company-employee-scraper actor.

## `maxEmployeesSample` (type: `integer`):

How many sample employees to include when 'Include sample employees' is on. Accepts 1 to 100; defaults to 10. Ignored when the sample is disabled.

## `includeRawData` (type: `boolean`):

Add the compact raw provider payload under rawData for debugging or custom parsing. Defaults to false. Increases record size noticeably; leave off for normal use.

## Actor input object example

```json
{
  "companyUrls": [
    "https://www.linkedin.com/company/stripe"
  ],
  "maxCompanies": 100,
  "providerOrder": "scrapecreators-first",
  "includeSimilarCompanies": true,
  "includeEmployeesSample": false,
  "maxEmployeesSample": 10,
  "includeRawData": false
}
```

# Actor output Schema

## `companies` (type: `string`):

Structured dataset records for scraped public LinkedIn company profiles.

## `companiesCsv` (type: `string`):

CSV export of the same LinkedIn company profile records.

## `runSummary` (type: `string`):

Machine-readable telemetry with post counts, providers used, provider status codes, and stop reason.

## `outputSummary` (type: `string`):

Compact agent-friendly summary with posts scraped, companies processed, providers used, and stop reason.

# 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 = {
    "companyUrls": [
        "https://www.linkedin.com/company/stripe"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("khadinakbar/linkedin-company-profile-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 = { "companyUrls": ["https://www.linkedin.com/company/stripe"] }

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

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

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

```

## CLI example

```bash
echo '{
  "companyUrls": [
    "https://www.linkedin.com/company/stripe"
  ]
}' |
apify call khadinakbar/linkedin-company-profile-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=khadinakbar/linkedin-company-profile-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/gn2BKbv4n9GIexJKQ/builds/ipzhJQ8gjF7Mmkjao/openapi.json
