# LinkedIn Company Search — Find Companies by Industry & Size (`saliga/linkedin-company-search`) Actor

Find companies on LinkedIn by keyword, location, industry, company size and followers, without login. Finds companies hiring for your keywords and their look-alikes, then returns full company data for the ones that match.

- **URL**: https://apify.com/saliga/linkedin-company-search.md
- **Developed by:** [Salih Küçükkayış](https://apify.com/saliga) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 matching 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

Find **companies on LinkedIn** by keyword, location, **industry**, **company size**, headquarters and followers, without a LinkedIn account. Describe the companies you want ("fintech in London, 11 to 500 employees") and get one clean row per matching company: website, industry, size, employees on LinkedIn, followers, headquarters and full address, founded year, specialties, locations, similar companies and recent posts.

![LinkedIn Company Search demo: input, run and results table from a real run](https://raw.githubusercontent.com/msalihk/apify-actor-examples/620b5a0f9925474404cef5a8900ec9e53f19d641/media/linkedin-company-search.gif)

LinkedIn's own company search needs a login. This Actor finds companies from two public sources instead:

1. **Companies hiring for your keywords** in your locations, from LinkedIn's public job search. A company hiring right now is a company with budget and needs: a strong signal for sales and recruiting.
2. **Look-alike companies** from LinkedIn's "Similar pages" of every company that matches, which also finds companies that are not hiring.

Every candidate's public LinkedIn page is read and checked against your filters. **You pay only for companies that match.**

In a test search for *fintech* and *payments* companies headquartered in London with 11 to 500 employees, one run returned 60 matching companies in about 4 minutes: 21 found because they were hiring, 39 as look-alikes (lenders, payment companies, wealth apps and crypto firms), with no duplicates and no personal data.

### What you can use it for

- **Lead lists for B2B sales**: companies in your segment, size and region, with website and LinkedIn link.
- **Account-based marketing**: start from a few best customers (*seed companies*) and collect their look-alikes.
- **Recruiting and staffing**: companies hiring for the roles you place, in your cities.
- **Market maps**: who the players are in a niche and region, with size and follower counts.
- **Investor and partner sourcing**: small and mid-size companies in a sector that are growing (hiring).

### Quick start

Press **Start** with the example input (fintech companies in London with 11 to 500 employees), or give your own:

```json
{
  "keywords": ["cybersecurity", "security engineer"],
  "locations": ["Germany"],
  "industries": ["Security", "Software"],
  "companySizes": ["51-200", "201-500"],
  "maxCompanies": 200
}
```

Look-alikes of your best customers:

```json
{
  "seedCompanies": ["https://www.linkedin.com/company/monzo-bank/", "revolut"],
  "industries": ["Financial"],
  "headquartersIn": ["London"],
  "maxCompanies": 100
}
```

### Output

One row per matching company, with `foundVia` telling you how it was found:

```json
{
  "foundVia": "hiring for \"fintech\" in London",
  "name": "Acme Pay",
  "url": "https://www.linkedin.com/company/acme-pay/",
  "companyId": "10293847",
  "website": "https://acmepay.com",
  "domain": "acmepay.com",
  "industry": "Financial Services",
  "companySize": "51-200 employees",
  "companySizeMin": 51,
  "companySizeMax": 200,
  "employeesOnLinkedIn": 143,
  "followers": 12840,
  "headquarters": "London, England",
  "address": {"city": "London", "region": "England", "country": "GB"},
  "foundedYear": 2017,
  "specialties": ["Payments", "Open Banking", "B2B"],
  "tagline": "Payments for platforms",
  "similarPages": [{"name": "Another Fintech", "industry": "Financial Services", "location": "London", "url": "https://www.linkedin.com/company/another-fintech/"}],
  "recentPosts": [{"postedAt": "2026-10-21T09:12:00.000Z", "text": "We're hiring ...", "reactions": 54, "comments": 3}],
  "jobsUrl": "https://www.linkedin.com/jobs/search/?f_C=10293847"
}
```

The same fields as [LinkedIn Company Scraper](https://apify.com/saliga/linkedin-company-scraper): description, logo, every office location, products and affiliated pages are in the full results.

### Input

| Field | What it does |
|---|---|
| Keywords | What the companies do or hire for: fintech, data engineer, cybersecurity. |
| Locations | Where to look: city, region or country. |
| Seed companies | Companies like the ones you want; their look-alikes are searched. |
| Industry contains | LinkedIn industry words: Financial, Software, Hospitals. |
| Company size | LinkedIn size ranges, from 1-10 to 10,001+. |
| Headquarters in | City, region or country code in the headquarters or address. |
| Min / max followers | LinkedIn follower range. |
| Profile mentions | Words that must appear in the name, tagline, description, industry or specialties. |
| Leave out staffing agencies | On by default. |
| Max matching companies, Max company pages to check | Result and effort limits. |
| Also search look-alike companies, Look-alike steps | Follow "Similar pages" of every match (on by default). 1 step keeps results closest to your keywords; 2-3 find more. |

### Pricing

You pay **per matching company** (recent posts included), plus a tiny fee per run. Company pages that do not match your filters, pages that cannot be read and job searches are free. Apify's free plan credit covers a first test.

### Tips

- **Narrow filters need more checks.** If a run ends with few matches, raise *Max company pages to check* or add more keywords and locations. The log shows why companies did not match (industry, size, headquarters ...).
- **Use several keywords.** "fintech", "payments", "open banking" and a few job titles like "backend engineer" find more companies than one word.
- **Seed companies give the most precise look-alikes.** Combine them with an industry and headquarters filter. Seeds do not have to match your filters themselves: a large company can seed a list of smaller ones.
- **Pick seeds of the size you want.** LinkedIn's look-alikes of a large company are mostly other large companies, so for 11-200 employee targets use seeds of that size (or keywords). *Look-alike steps* 2 helps a little: on-topic companies of the wrong size are used as a bridge to their look-alikes, without being returned or charged.
- **Duplicates are removed.** The same company under two LinkedIn page names (same company id or website) is returned once.

### FAQ

**Does it need a LinkedIn account or cookies?** No. It reads LinkedIn's public job search and public company pages, the ones visitors who are not signed in see.

**Is this LinkedIn's own company search?** No, that one needs a login. This Actor builds the list from hiring companies and LinkedIn's similar pages, then checks each company against your filters. It finds active, real companies; it will not list every company that exists.

**Does it return employees or people?** No. Employee lists and posts written by people are skipped on purpose.

**Why are some fields empty?** Companies fill in their pages differently, and LinkedIn hides some numbers (like followers on a few large pages) from visitors who are not signed in. Missing fields are left out.

**Some pages fail with a sign-in wall.** The Actor retries from other proxy addresses. If many fail, choose the RESIDENTIAL proxy group under *Advanced*. Failed pages are free.

### Related Actors

- [LinkedIn Company Scraper](https://apify.com/saliga/linkedin-company-scraper): company data for a list of LinkedIn links, page names or websites.
- [LinkedIn Jobs Scraper](https://apify.com/saliga/linkedin-jobs-scraper): jobs with full job pages, salary, agency flag and a hiring companies list.
- [Tech Stack Detector](https://apify.com/saliga/tech-stack-detector): which technologies the companies' websites use.
- [Dataset Merge & Dedupe](https://apify.com/saliga/dataset-merge-dedupe): join and de-duplicate company lists and export to CSV or Excel.

# Actor input Schema

## `keywords` (type: `array`):

What the companies do or hire for: fintech, data engineer, cybersecurity, nurse, "payments". Each keyword is searched in every location.

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

City, region or country: London, Germany, United States. Leave empty for worldwide.

## `seedCompanies` (type: `array`):

Companies like the ones you want (links or page names). Their LinkedIn look-alikes are searched too.

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

Keep companies whose LinkedIn industry contains one of these words: Financial Services, Software, Hospitals, Banking. Empty: any industry.

## `companySizes` (type: `array`):

Keep only these LinkedIn size ranges. Empty: any size.

## `headquartersIn` (type: `array`):

Keep companies whose headquarters or address contains one of these: London, United Kingdom, GB, Berlin. Empty: anywhere.

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

Keep companies with at least this many LinkedIn followers.

## `maxFollowers` (type: `integer`):

Keep companies with at most this many followers (0: no limit).

## `mustMention` (type: `array`):

Keep companies whose name, tagline, description, industry or specialties mention one of these words: payments, B2B, AI.

## `excludeStaffingAgencies` (type: `boolean`):

Companies whose LinkedIn industry is Staffing and Recruiting are skipped (they show up a lot in job searches).

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

Stop after this many matching companies. You pay only for matching companies.

## `maxPagesToCheck` (type: `integer`):

Upper limit on company pages read (matching or not). Default: 6 × max matching companies. Raise it for narrow filters.

## `expandSimilar` (type: `boolean`):

Follow LinkedIn's "Similar pages" of every matching company to find companies that are not hiring right now.

## `lookAlikeDepth` (type: `integer`):

1: look-alikes of the companies found by hiring or seeds (most on-topic). 2 or 3: also look-alikes of look-alikes, more companies but drifting further from your keywords.

## `jobsPerSearch` (type: `integer`):

More job posts find more hiring companies; LinkedIn shows up to about 1,000 per search.

## `postedWithin` (type: `string`):

Which job posts count as "hiring".

## `includePosts` (type: `boolean`):

Add up to 10 recent company posts to each company row, free.

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

Apify Proxy is used by default. If many pages fail with a sign-in wall, choose the RESIDENTIAL group.

## Actor input object example

```json
{
  "keywords": [
    "fintech"
  ],
  "locations": [
    "London"
  ],
  "industries": [
    "Financial",
    "Software"
  ],
  "companySizes": [
    "11-50",
    "51-200",
    "201-500"
  ],
  "excludeStaffingAgencies": true,
  "maxCompanies": 20,
  "expandSimilar": true,
  "lookAlikeDepth": 1,
  "jobsPerSearch": 100,
  "postedWithin": "month",
  "includePosts": true,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

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

One row per matching company.

## `fullResults` (type: `string`):

Every field, including descriptions, locations, similar pages and posts.

# 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 = {
    "keywords": [
        "fintech"
    ],
    "locations": [
        "London"
    ],
    "industries": [
        "Financial",
        "Software"
    ],
    "companySizes": [
        "11-50",
        "51-200",
        "201-500"
    ],
    "maxCompanies": 20,
    "jobsPerSearch": 100,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("saliga/linkedin-company-search").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 = {
    "keywords": ["fintech"],
    "locations": ["London"],
    "industries": [
        "Financial",
        "Software",
    ],
    "companySizes": [
        "11-50",
        "51-200",
        "201-500",
    ],
    "maxCompanies": 20,
    "jobsPerSearch": 100,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("saliga/linkedin-company-search").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 '{
  "keywords": [
    "fintech"
  ],
  "locations": [
    "London"
  ],
  "industries": [
    "Financial",
    "Software"
  ],
  "companySizes": [
    "11-50",
    "51-200",
    "201-500"
  ],
  "maxCompanies": 20,
  "jobsPerSearch": 100,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call saliga/linkedin-company-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,saliga/linkedin-company-search"
        }
    }
}
```

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/bRXVyuFV0r0X8h42b/builds/xfv1xhcdFXwU0oO6r/openapi.json
