# LinkedIn Company Search Scraper & Lead Discovery (No Login) (`generous_fog/linkedin-company-search-scraper`) Actor

Search public LinkedIn companies without login. Filter by keyword, location, industry, and size. Get fast short results from $1/1,000 or full verified company details with employee counts, contacts, relevance scores, and API-ready data.

- **URL**: https://apify.com/generous\_fog/linkedin-company-search-scraper.md
- **Developed by:** [Cracks API](https://apify.com/generous_fog) (community)
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 verified full company search results

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?

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 Search Scraper & Lead Discovery

Search public LinkedIn company pages without a login or cookies. Use fast Short mode at $1 per 1,000 results, or Full mode at $3 per 1,000 identity-confirmed records to verify company details, filters, locations, industries, employee and follower counts, and optional website intelligence. Failed, filtered, duplicate, and insufficient records are not charged.

### What you get

#### Full mode

- Canonical LinkedIn company or showcase URL and public slug
- Verified company name, LinkedIn organization ID, page type, and identity evidence
- Tagline, full public description, website, logo, and cover image
- LinkedIn-associated employee count and public company-size range
- Follower count, locations, headquarters evidence, specialties, and industry labels
- Job-search URL, affiliated pages, similar organizations, and recent public posts
- Optional company-owned website, contact, technology, Wikidata, and Wikipedia enrichment
- Search relevance score, matched query terms, verified filters, quality score, and source evidence

#### Short mode

- Fast public-index company discovery
- Canonical LinkedIn company URL, slug, name, title, and public search snippet
- Search rank, source page, relevance score, and matched query terms

Short mode does not open each LinkedIn company page. Location, industry, and size values are therefore search hints rather than fully verified fields. Use Full mode when those filters must be confirmed.

### Quick start

Start with fast, low-cost Short mode:

```json
{
  "scraperMode": "short",
  "searchQuery": "SaaS companies",
  "maxItems": 10,
  "takePages": 1,
  "maxTotalCharge": 0.01
}
```

Use Full mode when company identity and filters must be verified:

```json
{
  "scraperMode": "full",
  "searchQuery": "automation SaaS",
  "locations": ["United States"],
  "industries": ["Software Development"],
  "companySize": ["11-50", "51-200"],
  "minimumScore": 45,
  "maxItems": 10,
  "maxTotalCharge": 0.03
}
```

### Input

- `scraperMode`: `full` or `short`
- `searchQuery`: company name, product, sector, keyword, or boolean-style search expression
- `locations`: optional location names
- `industryIds`: optional LinkedIn industry IDs; common IDs are mapped to names
- `industries`: recommended industry-name filter for public-data searches
- `companySize`: employee ranges such as `11-50`, `51-200`, or `10001+`; letter codes `A-I` are also accepted
- `includeKeywords`: OR-style required keyword evidence
- `excludeKeywords`: reject results containing any listed term
- `minimumScore`: minimum 0-100 relevance score
- `maxItems`: maximum successful paid company records
- `startPage`, `takePages`: public-index pagination controls
- `requestDelaySecs`: Full-mode company-page pacing
- `includeWikidata`, `includeWikipedia`: optional knowledge-graph enrichment
- `includeWebsiteEnrichment`: optionally inspect a company-owned website
- `includeContactDiscovery`: optionally inspect same-domain contact, about, and careers pages
- `enrichSimilarCompanies`: optionally open a limited number of similar-company pages
- `maxTotalCharge`: local USD charge guard
- `dryRun`: validate the planned search without network requests or paid events
- `proxyConfiguration`: optional Apify proxy fallback

### Quality and billing rules

The Actor uses two quality-gated events:

- `company-search-short`: one useful public-index company record
- `company-search-full`: one identity-confirmed full company record that passes minimum quality and all requested verified filters

The Actor does not charge for invalid input, empty searches, duplicates, excluded or filtered candidates, company-page failures, identity mismatches, insufficient-data records, dry runs, or local charge-limit diagnostics.

A Full-mode paid record requires a usable public LinkedIn company page, exact company slug/page-type identity, company ID, meaningful description, employee count, follower count, public locations, and enough additional fields to reach the minimum quality threshold.

### Pricing

- **Short mode:** $0.001 per approved result, equal to **$1 per 1,000 results**
- **Full mode:** $0.003 per approved record, equal to **$3 per 1,000 results**
- Platform usage is included in the event price
- No monthly subscription is required
- Use `maxTotalCharge` to set a local run budget

### How it works

1. Builds a public web-index query from the company search and filter inputs.
2. Extracts and normalizes public LinkedIn `/company/` and `/showcase/` URLs.
3. Deduplicates candidates and calculates initial relevance.
4. In Full mode, opens public regional LinkedIn company pages and parses visible HTML and JSON-LD.
5. Confirms the requested slug and page type before accepting LinkedIn details.
6. Verifies query, location, industry, company-size, include, and exclude filters against collected evidence.
7. Stores and charges only approved records.

### Verified output example

Selected fields from a real Full-mode Netflix run completed on September 9, 2026. The full record contained 15 useful field groups and seven public locations.

```json
{
  "recordType": "company-search-result",
  "scraperMode": "full",
  "searchQuery": "Netflix",
  "searchRank": 1,
  "id": "165158",
  "universalName": "netflix",
  "linkedinUrl": "https://www.linkedin.com/company/netflix/",
  "name": "Netflix",
  "employeeCount": 18906,
  "employeeCountRange": {
    "start": 10001,
    "end": null
  },
  "followerCount": 12096556,
  "locations": [
    {
      "country": "US",
      "city": "Los Gatos",
      "geographicArea": "CA",
      "headquarter": true
    }
  ],
  "industries": [
    {
      "name": "Entertainment Providers"
    }
  ],
  "identityMatch": true,
  "filtersConfirmed": true,
  "searchScore": 100,
  "qualityScore": 100,
  "usefulFieldCount": 15,
  "status": "success"
}
```

Public counts and fields can change over time. Missing fields are returned as `null`; the Actor does not invent unavailable data.

### API and automation

Keep the Apify token in an environment variable or credential manager. Never publish it in source code.

#### cURL

```bash
curl -X POST "https://api.apify.com/v2/acts/generous_fog~linkedin-company-search-scraper/run-sync-get-dataset-items" \
  -H "Authorization: Bearer $APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"scraperMode":"short","searchQuery":"SaaS companies","maxItems":10,"maxTotalCharge":0.01}'
```

#### JavaScript or TypeScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('generous_fog/linkedin-company-search-scraper').call({
  scraperMode: 'short',
  searchQuery: 'SaaS companies',
  maxItems: 10,
  maxTotalCharge: 0.01,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

#### n8n and Make

Use an HTTP Request module with method `POST`, header `Authorization: Bearer YOUR_APIFY_TOKEN`, and this URL:

```text
https://api.apify.com/v2/acts/generous_fog~linkedin-company-search-scraper/run-sync-get-dataset-items
```

The response is a JSON array ready for Google Sheets, Airtable, HubSpot, a CRM, or a database.

#### MCP and AI agents

Connect an MCP-compatible client to `https://mcp.apify.com`, then ask it to fetch and run `generous_fog/linkedin-company-search-scraper` with a query, result mode, and maximum item count.

### Important limitations

This Actor does not use LinkedIn's authenticated native company-search endpoint. Native company search is login-gated, so discovery depends on public web-index coverage and ranking. Results can differ from LinkedIn's logged-in search, public indexes can omit companies, and the practical result count per page can be lower than LinkedIn's native 50-result pages.

Full mode verifies filters only when public evidence is available. Unknown LinkedIn industry IDs cannot be translated without a public name mapping. Company-size filters use visible LinkedIn employee ranges or associated employee counts, which are not the same as audited workforce totals.

The Actor does not claim private data, complete native search ranking, unlimited results, or access to login-only fields.

### More LinkedIn Actors by Cracks API

- [LinkedIn Company Employees Scraper](https://apify.com/generous_fog/linkedin-company-employees-scraper) - Find public employee profiles and decision-makers at discovered companies.
- [LinkedIn Company Details & Website Intelligence](https://apify.com/generous_fog/linkedin-company-details-website-intelligence) - Enrich exact company URLs with firmographics, website intelligence, and source evidence.
- [LinkedIn Company Posts Scraper](https://apify.com/generous_fog/linkedin-company-posts-scraper) - Monitor public company posts and content signals.
- [LinkedIn People Search & Lead Scorer](https://apify.com/generous_fog/linkedin-people-finder-lead-scorer) - Discover prospects and score them for outreach.
- [LinkedIn Profile Scraper & Public Email Finder](https://apify.com/generous_fog/linkedin-profile-scraper-public-email-finder) - Extract identity-validated profiles and evidence-based public emails.
- [LinkedIn Jobs Scraper](https://apify.com/generous_fog/linkedin-jobs-scraper-no-login) - Search and export public LinkedIn jobs without login.

### Responsible use

Use this Actor only for lawful business research, market mapping, lead discovery, competitive intelligence, and automation. Respect applicable privacy, data-protection, and platform rules. Do not use results for spam, harassment, discrimination, or unauthorized profiling.

**Unofficial — not affiliated with, endorsed by, or sponsored by LinkedIn Corporation. LinkedIn® is a registered trademark of LinkedIn Corporation.**

# Actor input Schema

## `scraperMode` (type: `string`):

Full opens each public LinkedIn company page and verifies filters. Short returns faster public-index discovery records; location, industry, and size are search hints only in Short mode.

## `searchQuery` (type: `string`):

Company name, product, sector, keyword, or boolean-style public search expression. Example: software, Netflix, or automation AND SaaS.

## `locations` (type: `array`):

Optional location names. Full mode verifies them against public company locations; Short mode uses them as public-index query hints.

## `industryIds` (type: `array`):

Optional LinkedIn industry IDs. Common IDs are mapped to industry names for public discovery and verified when the public company page exposes matching evidence.

## `industries` (type: `array`):

Recommended public-data industry filter, such as Software Development, Financial Services, or Marketing and Advertising.

## `companySize` (type: `array`):

Optional employee ranges: 1, 2-10, 11-50, 51-200, 201-500, 501-1000, 1001-5000, 5001-10000, or 10001+. LinkedIn letter codes A-I are also accepted.

## `includeKeywords` (type: `array`):

Optional OR-style keywords matched against the search card and verified company details.

## `excludeKeywords` (type: `array`):

Reject results whose visible search or company text contains any of these terms.

## `minimumScore` (type: `integer`):

Minimum 0-100 public-evidence relevance score required before a record can be returned and charged.

## `maxItems` (type: `integer`):

Maximum successful company results. Filtered, duplicate, failed, and insufficient records do not consume this limit.

## `startPage` (type: `integer`):

Public-index page number to start from.

## `takePages` (type: `integer`):

Number of public-index pages to inspect, up to 20. Each source page can expose up to about 25 candidate companies.

## `requestDelaySecs` (type: `number`):

Base delay for Full-mode LinkedIn company-page enrichment, plus automatic jitter and retry backoff.

## `includeWikidata` (type: `boolean`):

Optionally add public founders, tickers, headquarters, aliases, and other knowledge-graph fields when confidently matched.

## `includeWikipedia` (type: `boolean`):

Optionally add a public Wikipedia summary when Wikidata enrichment resolves a matching article.

## `includeWebsiteEnrichment` (type: `boolean`):

Optionally inspect the company-owned website for public contact, technology, social, about, and careers evidence. Slower than LinkedIn-only Full mode.

## `includeContactDiscovery` (type: `boolean`):

When website enrichment is enabled, also inspect same-domain contact, about, and careers pages up to the configured page limit.

## `maxOfficialPages` (type: `integer`):

Maximum same-domain pages inspected per company when website/contact enrichment is enabled.

## `enrichSimilarCompanies` (type: `boolean`):

Open a limited number of public similar-company pages for deeper nested data. Disabled by default to keep search runs fast.

## `maxSimilarCompanies` (type: `integer`):

Maximum nested similar-company cards to enrich per approved result.

## `linkedInRegion` (type: `string`):

Preferred English regional LinkedIn host. Additional English regions are tried automatically.

## `languageCode` (type: `string`):

Language hint for public search results, regional LinkedIn pages, and optional knowledge-graph labels.

## `countryCode` (type: `string`):

Country hint for the public search source and HTTP language headers.

## `maxTotalCharge` (type: `number`):

Optional local USD guard. No additional paid result event is emitted after this cap would be exceeded.

## `dryRun` (type: `boolean`):

Validate and show the planned public search expression without network requests or paid events.

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

Optional Apify proxy fallback for public search, LinkedIn company pages, and optional company-owned websites.

## Actor input object example

```json
{
  "scraperMode": "short",
  "searchQuery": "SaaS companies",
  "locations": [],
  "industryIds": [],
  "industries": [],
  "companySize": [],
  "includeKeywords": [],
  "excludeKeywords": [],
  "minimumScore": 30,
  "maxItems": 10,
  "startPage": 1,
  "takePages": 1,
  "requestDelaySecs": 0.8,
  "includeWikidata": false,
  "includeWikipedia": false,
  "includeWebsiteEnrichment": false,
  "includeContactDiscovery": false,
  "maxOfficialPages": 1,
  "enrichSimilarCompanies": false,
  "maxSimilarCompanies": 5,
  "linkedInRegion": "in",
  "languageCode": "en",
  "countryCode": "us",
  "maxTotalCharge": 0.03,
  "dryRun": false,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

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

All successful records and uncharged diagnostics from this run.

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

Compact successful company search results for export and automation.

## `fullCompanyDetails` (type: `string`):

Identity-confirmed Full-mode company records with verified firmographics and filters.

## `companyContacts` (type: `string`):

Optional official-website, public contact, social, and technology intelligence.

## `diagnostics` (type: `string`):

Uncharged errors, empty searches, filtered candidates, and charge-limit diagnostics.

# 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 = {
    "searchQuery": "SaaS companies",
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("generous_fog/linkedin-company-search-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 = {
    "searchQuery": "SaaS companies",
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("generous_fog/linkedin-company-search-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 '{
  "searchQuery": "SaaS companies",
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call generous_fog/linkedin-company-search-scraper --silent --output-dataset

```

## MCP server setup

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