# LinkedIn Company Scraper: No Login, Details, $3/1K Companies (`actorforgehq/linkedin-company-scraper`) Actor

Input: LinkedIn company page URLs or company slugs. Output: one JSON row per company with name, tagline, description, website, industry, company size, employee count on LinkedIn, headquarters, founded year, specialties and followers. No login. $3 per 1,000 companies, no start fee.

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

## Pricing

$3.00 / 1,000 companies

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: No Login, Details, $3/1K Companies

Turn **public LinkedIn company pages** into clean JSON rows. Paste company page URLs or bare slugs
and get one row per company: name, tagline, description, website, industry, company size, the
number of LinkedIn members who list the company, headquarters with the address by parts, company
type, founded year, specialties, followers, logo and office locations.

It reads the same public company page LinkedIn serves to a visitor who is not logged in, over plain
HTTP with no page rendering, no LinkedIn account and no cookies, at a fixed pace. Employees,
people and their profiles are not read.

### What you get

One row per company:

```json
{
  "url": "https://www.linkedin.com/company/microsoft/",
  "slug": "microsoft",
  "companyId": "1035",
  "name": "Microsoft",
  "tagline": "Every company has a mission. What's ours? To empower every person and every organization to achieve more.",
  "description": "Every company has a mission. What's ours? To empower every person and every organization to achieve more. ...",
  "website": "https://news.microsoft.com/",
  "industry": "Software Development",
  "companySize": "10,001+ employees",
  "employeeCountOnLinkedIn": 231133,
  "headquarters": "Redmond, Washington",
  "address": { "street": "1 Microsoft Way", "city": "Redmond", "region": "Washington", "postalCode": "98052", "country": "US" },
  "companyType": "Public Company",
  "foundedYear": null,
  "specialties": ["Business Software", "Developer Tools", "Home & Educational Software", "Tablets", "Search", "Advertising", "Servers", "Windows Operating System", "Windows Applications & Platforms", "Smartphones", "Cloud Computing", "Quantum Computing", "Future of Work", "Productivity", "AI", "Artificial Intelligence", "Machine Learning", "Laptops", "Mixed Reality", "Virtual Reality", "Gaming", "Developers", "IT Professional"],
  "followers": 29389958,
  "logoUrl": "https://media.licdn.com/dms/image/v2/.../company-logo_200_200/...",
  "locations": ["1 Microsoft Way, Redmond, Washington 98052, US", "..."],
  "inputUrl": "https://www.linkedin.com/company/microsoft/",
  "error": null,
  "scrapedAt": "2026-10-28T06:00:00.000Z"
}
```

A field LinkedIn does not show on the public page is `null`. In our test set of 36 company pages
the industry, size, type and followers were shown on all 36, the website and headquarters on 35,
specialties on 29 and the founded year on 20. `employeeCountOnLinkedIn` is the number of LinkedIn members
who list the company as their employer, as LinkedIn states it, not the company's headcount.

A page LinkedIn does not serve (unknown slug, or a page it hides from visitors) gives a **free row**
with `inputUrl`, `error` and all other fields `null`. It is not charged.

### Input

| Field | Type | Description |
|---|---|---|
| `companies` | string\[] | LinkedIn company page URLs (`linkedin.com/company/<slug>/`) or bare slugs such as `microsoft`, one per line. Showcase pages (`linkedin.com/showcase/<slug>/`) work too. |
| `includeLocations` | boolean | Default `true`: the office locations LinkedIn lists on the public page, as text lines. `false` leaves `locations` null. |
| `proxyConfiguration` | object | Defaults to Apify **datacenter proxies**, which is the supported configuration. Residential proxies work too. |

Example:

```json
{
  "companies": [
    "https://www.linkedin.com/company/microsoft/",
    "https://www.linkedin.com/company/apify/",
    "vercel"
  ],
  "includeLocations": true
}
```

The company page URL is exactly what our [LinkedIn Jobs Scraper](https://apify.com/actorforgehq/linkedin-jobs-scraper)
puts into `companyUrl`, so the two Actors chain: search jobs, collect the employers, then read the
employers here.

### How to use it

1. Click **Try for free** or **Start** on this page.
2. Paste company page URLs or slugs, one per line.
3. Run it. Companies land in the dataset as one row each. Export them as JSON, CSV or Excel, or pull
   them over the API.

To call it from code, use the [Apify API](https://docs.apify.com/api/v2) or an official client. AI
agents can call it through the **Apify MCP server**: the description and the input fields above are
written to be read by an agent.

### Pricing

Pay-per-event, one event, nothing else:

| Event | Rate |
|---|---|
| `company-scraped` | **$3 per 1,000** ($0.003 each), one per company row |
| Free error row | **free**, a page LinkedIn did not serve |
| Run start | **free, there is no start event** |

**What you get for $1:** 333 companies. Platform usage (compute, proxy) is charged to us, not to
you, so the per-row price is the whole bill. A list of 500 employers costs $1.50 with no per-run
surcharge. Rates are as of the last README update. The Store page stays authoritative.

### Limits (honest)

- **Only what LinkedIn shows a logged-out visitor.** The Actor reads the public company page. It
  does not log in, so it never sees anything that needs an account: no employee lists, no people,
  no profiles, no contact details. `employeeCountOnLinkedIn` is a counter from the page.
- **Fields vary by company.** Some companies show only a few About fields (Amazon's public page,
  for example, shows industry and size but no website, headquarters or founded year). Where
  LinkedIn shows nothing, the field is `null`. The Actor never guesses.
- **Pages by URL or slug only.** There is no search by company name: LinkedIn offers no public
  company search to a visitor, and the search engines we tested answer automated queries with
  challenges. Take the URL from the company's LinkedIn page, or from the `companyUrl` field of our
  LinkedIn Jobs Scraper.
- **Renamed, merged and showcase pages.** LinkedIn may redirect a slug to another page (a renamed
  company, a merged one, or a showcase page under `/showcase/`). The row then describes the page
  LinkedIn ended up on: `url` and `slug` are the final page, `inputUrl` is what you asked for.
- **Description and specialties come as plain text.** The About text keeps its paragraphs;
  specialties are split on commas as LinkedIn lists them.
- **No login, no captcha solving.** If LinkedIn refuses a request, the Actor waits, switches to a
  fresh proxy session and retries. It fails honestly rather than fabricate data.
- If more than 5% of requests in a run fail, the run log says so loudly. A run in which every fetch
  failed is marked **failed**, not "succeeded with 0 items". A run whose input holds no LinkedIn
  company URL or slug still succeeds, with an empty dataset and an empty bill.

### Rate-limit etiquette (built in, with numbers)

- **One request every 2 seconds**, about 30 per minute. One company is one request, so 100
  companies take about 4 minutes.
- On an HTTP `429` or `999` the Actor **waits 15 seconds** (then 30, then 45), switches to a fresh
  proxy session and retries, at most 3 times. On any other transient refusal it backs off (3 s,
  then 6 s, then 9 s) and retries the same way.
- If five requests in a row fail after all retries, the run stops instead of grinding through the
  rest of the list.
- The default run timeout is one hour, enough for about 1,500 companies in one run. For bigger
  lists raise the timeout or split the input across runs.

### FAQ

**Do I need a LinkedIn account, cookies or an API key?**
No. The Actor reads only publicly available pages as a logged-out visitor, never logs in, and does
not use anyone's credentials.

**Can I get the employees of a company?**
No. The Actor reads company pages only. It does not open people's profiles, employee lists or
contact details, and it has no option to do so.

**Why is `foundedYear` (or `website`) null for some companies?**
Because LinkedIn shows these About fields only for companies that filled them in. The Actor saves
them when they are on the page and `null` when they are not.

**Can I look a company up by name?**
Not in this version. Give the company page URL or slug. If you are coming from a job search, the
`companyUrl` field of our LinkedIn Jobs Scraper is the input you need.

**Does it use a browser?**
No. Pages are fetched over plain HTTP and read straight from the HTML LinkedIn serves, with no
rendering.

**Where is my data stored?**
In your run's dataset on your Apify account, under your control. The Actor keeps no copy of scraped
data outside your run and sends nothing to any third party.

### Legal

This is an **unofficial** scraper. It is not affiliated with, endorsed by, or connected to LinkedIn
Corporation or Microsoft in any way. It reads only data that LinkedIn serves publicly to any
logged-out visitor: no login, no credentials, no captcha solving. Website terms of service are a
contractual matter between a website and its visitors, not criminal law. You are responsible for
ensuring that your use of the collected data complies with the laws that apply to you and with
LinkedIn's terms. Company descriptions belong to the companies that published them.

### Personal data

A company page describes an organization, not a person. The rows hold company data only: name,
description, website, industry, size, addresses, counters and logo. The Actor does not open
profiles, does not read employee lists, does not look up emails or phone numbers, and performs no
enrichment. If a company wrote a person's name or contact into its public description, that text
stays in the description and is not extracted into a field. Scraped data lives only in your own
Apify dataset and is not retained by us outside your run. If the data you collect contains
personal data under the laws of your jurisdiction (for example the GDPR), you act as its controller:
it is your responsibility to have a legal basis for processing and to honor data-subject requests,
including deletion.

### Rate this Actor

If this Actor saved you time, a short rating or review on its Store page helps other people find it.
Missing a field, or did something break? Open the **Issues** tab on this page and tell us.

### Need a custom scraper?

We can build a custom version of this Actor, for example with extra fields, other filters or another output format, or a new Actor for a site we do not cover yet. It runs on Apify like this one. Email actorforge.hq+orders@gmail.com with the site, the data you need and how often you need it.

### Other Actors

- [LinkedIn Jobs Scraper](https://apify.com/actorforgehq/linkedin-jobs-scraper): public job
  listings by keyword and location with full descriptions, no login; its `companyUrl` is this
  Actor's input.
- [Reddit Data Scraper](https://apify.com/actorforgehq/reddit-data-scraper): subreddit feeds,
  posts with their first comments, keyword search and user history in one Actor.
- [Reddit Subreddit Scraper](https://apify.com/actorforgehq/reddit-subreddit-scraper): the hot,
  new, top and rising posts of any subreddit, with date bounds and only-new mode.
- [Reddit Comments Scraper](https://apify.com/actorforgehq/reddit-comments-scraper): the whole
  comment thread of a post, with "more replies" branches and deep reply chains.
- [Reddit Search Scraper](https://apify.com/actorforgehq/reddit-search-scraper): posts and
  comments matching keywords, across Reddit or inside one subreddit, with only-new mode.
- [Reddit User Scraper](https://apify.com/actorforgehq/reddit-user-scraper): a user's public
  posts and comments, newest first, with the profile card.
- [YouTube Transcript Scraper](https://apify.com/actorforgehq/youtube-transcript-scraper): the
  transcript of any public YouTube video as text with timestamps, no login.
- [Lazada Reviews Scraper](https://apify.com/actorforgehq/lazada-reviews-scraper): product
  reviews, ratings and buyer media from all six Lazada marketplaces.
- [Wildberries Scraper](https://apify.com/actorforgehq/wildberries-scraper): products, prices
  and reviews from Wildberries as clean, schema-validated JSON.
- [Avito Real Estate Scraper](https://apify.com/actorforgehq/avito-real-estate-scraper): full
  property inventory from Avito with freshness stamps.

### Changelog

- **0.1** (October 2026): first release. Company pages by URL or slug, About fields, address by
  parts, followers and LinkedIn member count, specialties, logo and office locations, free rows for
  pages LinkedIn does not serve, $3 per 1,000 companies, no start fee.

# Actor input Schema

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

LinkedIn company page URLs (linkedin.com/company/<slug>/) or bare slugs such as microsoft, one per line. Showcase pages (linkedin.com/showcase/<slug>/) work too.

## `includeLocations` (type: `boolean`):

On by default: the list of office locations LinkedIn shows on the public page, as text lines. Turn it off if you only need the headquarters.

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

Apify datacenter proxies are the default and the supported configuration: in our measurements LinkedIn's public company pages answered them as well as residential ones at a fraction of the cost. Residential proxies work too.

## Actor input object example

```json
{
  "companies": [
    "https://www.linkedin.com/company/microsoft/",
    "apifytech"
  ],
  "includeLocations": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One row per company: name, tagline, description, website, industry, company size, employee count on LinkedIn, headquarters and address, type, founded year, specialties, followers, logo and locations.

# 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/microsoft/"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("actorforgehq/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/microsoft/"] }

# Run the Actor and wait for it to finish
run = client.actor("actorforgehq/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/microsoft/"
  ]
}' |
apify call actorforgehq/linkedin-company-scraper --silent --output-dataset

```

## MCP server setup

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