# LinkedIn Company Scraper - Firmographics & B2B Leads (`scrapesage/linkedin-company-scraper`) Actor

Scrape public LinkedIn company pages by URL, slug, numeric ID, domain or name. Get name, industry, company size, employee count, followers, website, HQ address, specialties, founded year, type, logo & latest post — plus a lead score and only-new monitor mode.

- **URL**: https://apify.com/scrapesage/linkedin-company-scraper.md
- **Developed by:** [Scrape Sage](https://apify.com/scrapesage) (community)
- **Categories:** Lead generation, Social media, Agents
- **Stats:** 72 total users, 37 monthly users, 100.0% runs succeeded, 8 bookmarks
- **User rating**: No ratings yet

## Pricing

from $8.29 / 1,000 company scrapeds

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 Scraper — Firmographics & B2B Leads

> **Disclaimer:** This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or any of its subsidiaries. All trademarks mentioned are the property of their respective owners. "LinkedIn" is referenced only to describe the publicly available website this Actor collects data from.

Extract **rich company firmographics from public [LinkedIn](https://www.linkedin.com) company pages** — name, slogan, industry, company size, **LinkedIn employee count**, follower count, website, headquarters address, specialties, founded year, company type, logo, the company's **recent public posts with their reaction and comment counts**, the **similar and affiliated pages** LinkedIn lists next to it, its products and the employees it shows. Every record is a ready-to-use **B2B lead**: a fully-qualified company with a website, location and a 0–100 lead score.

Feed it **anything** that identifies a company — a LinkedIn URL, a slug, a numeric company ID, a website domain, or even just a name — and get back one clean, dense firmographics table. No login, no cookies, no browser, no API key.

### Why this LinkedIn company scraper?

Most "LinkedIn" scrapers grab a handful of visible fields, force you to supply exact profile URLs, or quietly fail behind the login wall. This actor reads LinkedIn's **public, server-rendered company pages** directly and ships the **richest company record in the category** — and it accepts five kinds of input so you can point it at the company list you already have.

| Data | Generic scrapers | This actor |
|---|---|---|
| Company name, industry, type | partial | ✅ |
| **LinkedIn employee count** (actual headcount) | ❌ | ✅ |
| Company size band + min/max | partial | ✅ |
| Follower count | ❌ | ✅ |
| **Website** (un-wrapped, real URL) + domain | partial | ✅ |
| Headquarters — street, city, state, ZIP, country | partial | ✅ |
| Specialties / keywords | ❌ | ✅ |
| Founded year | ❌ | ✅ |
| Latest public post (text, URL, date) | ❌ | ✅ |
| Recent posts with reactions, comments, media flags + average reactions | ❌ | ✅ |
| Similar pages & affiliated pages (name, industry, location, link) | ❌ | ✅ |
| Products listed and employees shown on the page | ❌ | ✅ |
| Numeric company ID + slug | ❌ | ✅ |
| Accepts URL **/ slug / ID / domain / name** | ❌ | ✅ |
| 0–100 lead score | ❌ | ✅ |
| Only-new **monitor mode** | ❌ | ✅ |

### Use cases

- **B2B lead generation & enrichment** — turn a list of company domains, names or LinkedIn URLs into a complete firmographic record: industry, size, headcount, HQ, website and specialties. Feed it straight into your CRM, ABM list or sales sequence.
- **CRM & list cleanup** — append company size, employee count, industry and HQ to records that only have a name or domain.
- **Total addressable market (TAM) sizing** — pull firmographics across a target industry or company set and segment by size, headcount and location.
- **Competitive & market intelligence** — track competitors' headcount, follower growth and posting activity over time.
- **Recruiting & sourcing** — qualify target employers by size, industry and location before outreach.
- **Investment & sourcing research** — profile portfolios and pipelines with consistent, structured company data.

### How to use

1. [Sign up for Apify](https://console.apify.com/sign-up) — the free plan is enough to try this actor.
2. Open the **LinkedIn Company Scraper** and add your companies — paste LinkedIn URLs, slugs, numeric IDs, website domains or names into **companies** (mix and match).
3. Click **Start** and watch results stream into the dataset table.
4. **Export** as JSON, CSV, Excel, XML or RSS — or pull results programmatically via the [Apify API](https://docs.apify.com/api/v2).

### Input

```json
{
    "companies": ["microsoft", "stripe", "https://www.linkedin.com/company/apify/", "vercel.com"],
    "maxResults": 100,
    "includeLatestPost": true,
    "withWebsiteOnly": false,
    "minEmployees": 0,
    "monitorMode": false,
    "proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
```

- **companies** — the companies to scrape. Each item can be a **full company URL** (`https://www.linkedin.com/company/stripe/`), a **slug** (`stripe`), a **numeric company ID** (`2135371`), a **website domain** (`stripe.com` — resolved to the company's slug), or a **company name** (`Microsoft`). URLs and slugs are the most precise; domains and names are resolved best-effort.
- **startUrls** *(optional)* — a list of LinkedIn company URLs, handy for pasting a spreadsheet column or linking a Google Sheet / text file.
- **maxResults** *(default 100)* — cap on companies scraped (after de-duplication).
- **includeLatestPost** *(default true)* — capture the company's most recent public post (text, URL, date).
- **deduplicateCompanies** *(default true)* — scrape each company at most once per run.
- **Filters** — `withWebsiteOnly`, `minEmployees`, `minFollowers`, `industryFilterWords`, `countryFilter`.
- **monitorMode / monitorStoreName** *(default off)* — emit only NEW or CHANGED companies across runs (see below).
- **maxConcurrency** *(default 5)* — parallel page fetches.
- **proxyConfiguration** — LinkedIn blocks datacenter IPs, so a **RESIDENTIAL** proxy is used by default and recommended.

### Output

One clean, dense table of companies — every column applies to every row. A company record:

```json
{
    "companyName": "Stripe",
    "universalName": "stripe",
    "companyId": 2135371,
    "linkedinUrl": "https://www.linkedin.com/company/stripe",
    "description": "Stripe builds programmable financial services…",
    "industry": "Technology, Information and Internet",
    "website": "https://stripe.com",
    "websiteDomain": "stripe.com",
    "companySize": "5,001-10,000 employees",
    "companySizeMin": 5001,
    "companySizeMax": 10000,
    "employeeCount": 15885,
    "followerCount": 1499649,
    "companyType": "Privately Held",
    "foundedYear": 2010,
    "specialties": ["online payments", "APIs", "payments infrastructure"],
    "headquarters": "South San Francisco, California",
    "street": "354 Oyster Point Blvd",
    "city": "South San Francisco",
    "state": "California",
    "postalCode": "94080",
    "country": "US",
    "logoUrl": "https://media.licdn.com/dms/image/…/stripe_logo",
    "latestPostText": "Introducing Stripe Directory…",
    "latestPostUrl": "https://www.linkedin.com/posts/stripe_…",
    "latestPostDate": "2026-06-22T15:01:12.249Z",
    "leadScore": 92,
    "scrapedAt": "2026-06-23T18:00:00.000Z",
    "slogan": "Help increase the GDP of the internet.",
    "recentPosts": [
        { "text": "Introducing Stripe Directory…", "url": "https://www.linkedin.com/posts/stripe_…", "datePublished": "2026-06-22T15:01:12.249Z", "reactionCount": 168, "commentCount": 45, "postedAgoText": "6d", "isRepost": false, "isReshare": false, "hasVideo": false, "imageCount": 1 }
    ],
    "recentPostCount": 7,
    "recentPostAvgReactions": 131,
    "similarCompanies": [
        { "name": "Adyen", "linkedinUrl": "https://www.linkedin.com/company/adyen", "industry": "Financial Services", "location": "Amsterdam, North Holland" }
    ],
    "affiliatedPages": [
        { "name": "Stripe Atlas", "linkedinUrl": "https://www.linkedin.com/showcase/stripe-atlas/", "industry": "Software Development", "location": "San Francisco, CA" }
    ],
    "featuredEmployees": [
        { "name": "Jane Doe", "linkedinUrl": "https://www.linkedin.com/in/…", "headline": "Engineering Manager at Stripe", "isInfluencer": false }
    ],
    "products": [
        { "name": "Stripe", "linkedinUrl": "https://www.linkedin.com/products/stripe/", "category": "Payment Processing Software", "description": "Stripe is a financial infrastructure platform…" }
    ]
}
```

The company's own **recent posts** (typically the latest 6–10 the page publishes) come with reaction and comment counts, the relative age, and whether each is a repost, a reshare, a video or an image post — plus `recentPostAvgReactions` as a one-number engagement signal. **Similar pages** and **affiliated pages** are ready-made expansion lists for building out a target account list; **products** and **featuredEmployees** (the members LinkedIn shows by name on the page, with their headline) round out the picture.

#### What to expect (field coverage)

LinkedIn company pages are company-entered, so some fields appear only when the company filled them in. Verified across many companies, you can typically expect:

| Always present | Usually present | Present when published |
|---|---|---|
| companyName, universalName, companyId, linkedinUrl, industry, followerCount, lead score, similar pages | website ~90%, description ~95%, companySize ~95%, employeeCount ~95%, HQ city/country ~90%, companyType ~85%, slogan, recent posts with counts | specialties, founded year, full street address, latest post, affiliated pages, products, named employees (companies that added them) |

A blank field means the company didn't publish it — not that scraping failed. Nothing is dropped, so you always get the richest record available.

### How much does it cost to scrape LinkedIn?

This Actor uses Apify's **pay-per-event** pricing: you are charged only for the results it delivers, with no monthly rental and no start fee. The events it can charge are:

- **Company scraped** - One company profile from a public LinkedIn company page: name, industry, size + employee count, followers, website + domain, HQ address, specialties, founded year, type, logo, latest post and a 0–100 lead score.

The current price of each event is shown on the **Pricing** tab of this page. Set a maximum total charge on the run if you want a hard cap on spend, and use the input limits to control how much the Actor fetches.

### Automate & schedule

Run this actor on autopilot and pull results into your own stack:

- **[Apify API](https://docs.apify.com/api/v2)** — start runs, fetch datasets and manage schedules over REST.
- **[apify-client for JavaScript](https://docs.apify.com/api/client/js/)** and **[Python](https://docs.apify.com/api/client/python/)** — official SDKs.
- **[Schedules](https://docs.apify.com/platform/schedules)** — run it daily/weekly to re-enrich a list and capture headcount, follower and posting changes.
- **[Webhooks](https://docs.apify.com/platform/integrations/webhooks)** — trigger downstream actions (CRM import, Slack alert, enrichment pipeline) the moment a run finishes.

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

const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });

const run = await client.actor('scrapesage/linkedin-company-scraper').call({
    companies: ['microsoft', 'stripe', 'vercel.com'],
    maxResults: 100,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Got ${items.length} companies`);
```

#### Monitor mode — only new / changed companies

Turn on **monitorMode** and the actor remembers every company it has seen in a named key-value store, then emits only **new** companies or ones whose **follower count, employee count or latest post changed** since the last run. Pair it with [Schedules](https://docs.apify.com/platform/schedules) for a recurring firmographic-change feed. It works **alongside** the Apify scheduler — it complements it and never conflicts with it.

### Integrate with any app

Connect the dataset to 5,000+ apps — no code required:

- **[Make](https://docs.apify.com/platform/integrations/make)** — multi-step automation scenarios.
- **[Zapier](https://docs.apify.com/platform/integrations/zapier)** — push new company leads straight into your CRM.
- **[Slack](https://docs.apify.com/platform/integrations/slack)** — get notified when a monitored company grows or posts.
- **[Google Drive / Sheets](https://docs.apify.com/platform/integrations/drive)** — auto-export every run to a spreadsheet.
- **[Airbyte](https://docs.apify.com/platform/integrations/airbyte)** — pipe results into your data warehouse.
- **[GitHub](https://docs.apify.com/platform/integrations/github)** — trigger runs from commits or releases.

### Use with AI assistants (MCP)

The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT or any agent framework through the **[Apify MCP server](https://docs.apify.com/platform/integrations/mcp)** — ask your assistant to "enrich these company domains with industry, size and headcount from LinkedIn" and let it run the scraper for you.

### Agent-ready: autonomous payments (x402 & Skyfire)

This actor is **agent-ready** — AI agents can discover it, run it, and **pay for it autonomously**, with no Apify account and no human in the loop. It uses [pay-per-event](https://docs.apify.com/platform/actors/publishing/monetize/pay-per-event) pricing and [limited permissions](https://docs.apify.com/platform/actors/development/permissions), so it qualifies for Apify's agentic-payment standards:

- **[x402](https://docs.apify.com/platform/integrations/x402)** — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp) — no account, no API key.
- **[Skyfire](https://docs.apify.com/platform/integrations/skyfire)** — agent-to-service payments for fully autonomous AI-agent workflows.

Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.

### More scrapers from scrapesage

Build a complete **B2B firmographics & lead-gen stack**:

- **[Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** — turn the company websites this actor returns into emails, phones and social profiles.
- **[Google Maps Scraper](https://apify.com/scrapesage/google-maps-scraper)** — local business leads with phones, websites and emails.
- **[LinkedIn Jobs Scraper](https://apify.com/scrapesage/linkedin-jobs-scraper)** — job postings as hiring-intent signals.
- **[LinkedIn Ad Library Scraper](https://apify.com/scrapesage/linkedin-ad-library-scraper)** — competitor ad intelligence on LinkedIn.
- **[Companies House Scraper](https://apify.com/scrapesage/companies-house-scraper)** — official UK company registry firmographics, officers and filings.
- **[US Business Formation Scraper](https://apify.com/scrapesage/us-business-formation-scraper)** — newly-registered US companies as fresh leads.
- **[French Company Scraper](https://apify.com/scrapesage/french-company-scraper)** — SIRENE firmographics + BODACC legal announcements.
- **[SEC EDGAR Scraper](https://apify.com/scrapesage/sec-edgar-scraper)** — public-company filings and financials.

### Tips

- **URLs and slugs are the most reliable input.** Domains and names are resolved best-effort to the company's LinkedIn slug — great for quick lists, but verify edge cases.
- **Pair with the [Website Contact Scraper](https://apify.com/scrapesage/website-contact-scraper)** to turn the `website` field into actual emails and phone numbers — the difference between a firmographic record and a contactable lead.
- **Lead score** rewards completeness and reach (website, HQ, specialties, headcount, followers, recent activity) — sort by it to put your best leads first.
- **Big lists**: keep `maxConcurrency` at 5–10 and use the default residential proxy for the smoothest results.
- **Recurring enrichment**: combine [Schedules](https://docs.apify.com/platform/schedules) with `monitorMode` to keep a watch list current.

### FAQ

**What input does it accept?** A LinkedIn company URL, a slug (`stripe`), a numeric company ID, a website domain (`stripe.com`), or a company name (`Microsoft`). You can mix all five in one run.

**Does it need a LinkedIn login, cookies or an API key?** No. It reads LinkedIn's public, server-rendered company pages — no login, cookies, browser or key.

**Does it scrape personal profiles or employees?** No. This actor covers **company** pages only (firmographics). Personal profiles are not included.

**Why a residential proxy?** LinkedIn blocks datacenter IPs. The default Apify **RESIDENTIAL** proxy keeps access reliable. You can supply your own residential proxy if you prefer.

**Can I export to Google Sheets, CSV or Excel?** Yes — one click in the dataset view, or automatically on every run via the [Google Drive integration](https://docs.apify.com/platform/integrations/drive).

**A field is empty — why?** Some companies don't publish a website, founded year, specialties or a recent post. Fields are blank only when the company didn't publish that data — never because the scraper skipped it.

**Is scraping LinkedIn legal?** This actor collects only publicly available company information. You're responsible for using the data in compliance with applicable laws (e.g. GDPR/CCPA) and LinkedIn's terms.

### Disclaimer

**This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by LinkedIn Corporation or any of its subsidiaries. All trademarks mentioned are the property of their respective owners.**

"LinkedIn" and any related marks are the property of their respective owners and are used here only in a descriptive, nominative sense - to identify the publicly accessible website from which this Actor collects data. This Actor is not an official LinkedIn product, is not authorised or certified by LinkedIn Corporation, and does not distribute LinkedIn software. It collects only publicly available information; you are responsible for ensuring your use of that data complies with applicable laws, regulations and the terms of the source website.

### Need help?

Open an issue on the actor's **Issues** tab, or visit the [Apify help center](https://help.apify.com/). Feature requests are welcome — this actor is actively maintained.

# Actor input Schema

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

LinkedIn companies to scrape. Each item can be a full company URL (<code>https://www.linkedin.com/company/stripe/</code>), a slug (<code>stripe</code>), a numeric company ID (<code>2135371</code>), a website domain (<code>stripe.com</code> — resolved to the company's slug), or a company name (<code>Microsoft</code>). Mix and match freely.

## `startUrls` (type: `array`):

A list of LinkedIn company URLs — handy for pasting a column from a spreadsheet or linking a Google Sheet / text file. Scraped in addition to the companies above.

## `maxResults` (type: `integer`):

Maximum number of companies to scrape. If you provide more inputs than this, only the first N (after de-duplication) are scraped.

## `includeLatestPost` (type: `boolean`):

Capture the company's most recent public LinkedIn post (text, URL and date) — a useful activity / freshness signal. One page per company, no extra request.

## `deduplicateCompanies` (type: `boolean`):

Scrape each company at most once per run, even if it appears several times in the input.

## `withWebsiteOnly` (type: `boolean`):

Keep only companies that publish a website on their LinkedIn page.

## `minEmployees` (type: `integer`):

Keep only companies with at least this many employees (uses the LinkedIn employee count, falling back to the lower bound of the size band).

## `minFollowers` (type: `integer`):

Keep only companies with at least this many LinkedIn followers.

## `industryFilterWords` (type: `array`):

Keep only companies whose industry contains one of these words (case-insensitive), e.g. <code>software</code>, <code>finance</code>, <code>health</code>, <code>marketing</code>. Leave empty for all industries.

## `countryFilter` (type: `array`):

Keep only companies whose HQ country matches one of these values (ISO code such as <code>US</code>, <code>GB</code>, <code>CA</code>). Leave empty for all countries.

## `monitorMode` (type: `boolean`):

Remember companies from previous runs in a named key-value store and emit only NEW or CHANGED ones (new follower count, employee count or latest post) on each run. Pair with Apify Schedules for a recurring firmographic-change feed. Works alongside the scheduler — it does not conflict with it.

## `monitorStoreName` (type: `string`):

Named key-value store used to remember already-seen companies across runs. Use distinct names for independent monitors (lowercase letters, digits and hyphens only).

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

How many company pages to fetch in parallel.

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

Proxies to use. LinkedIn blocks datacenter IPs, so a RESIDENTIAL proxy is required for reliable access. Keep the default unless you have your own residential proxy.

## `urlsFromFile` (type: `string`):

Paste a list of URLs (one per line), OR one link to a .txt/.csv file, Google Sheet or Google Drive file containing them. Lets you import many Start URLs at once instead of typing each. Google Sheet/Drive share links are handled automatically.

## Actor input object example

```json
{
  "companies": [
    "microsoft",
    "stripe",
    "https://www.linkedin.com/company/apify/",
    "vercel.com"
  ],
  "maxResults": 100,
  "includeLatestPost": true,
  "deduplicateCompanies": true,
  "withWebsiteOnly": false,
  "minEmployees": 0,
  "minFollowers": 0,
  "monitorMode": false,
  "monitorStoreName": "linkedin-company-monitor",
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

All scraped company records in the default dataset.

# 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": [
        "microsoft",
        "stripe",
        "https://www.linkedin.com/company/apify/",
        "vercel.com"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    },
    "urlsFromFile": ""
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapesage/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": [
        "microsoft",
        "stripe",
        "https://www.linkedin.com/company/apify/",
        "vercel.com",
    ],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
    "urlsFromFile": "",
}

# Run the Actor and wait for it to finish
run = client.actor("scrapesage/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": [
    "microsoft",
    "stripe",
    "https://www.linkedin.com/company/apify/",
    "vercel.com"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "urlsFromFile": ""
}' |
apify call scrapesage/linkedin-company-scraper --silent --output-dataset

```

## MCP server setup

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