# B2B Company Search: Industry, Size & Location (`peoplesearch/b2b-company-search`) Actor

Find companies by industry, headquarters, employees, type and keywords, or look companies up by website or LinkedIn page: website, LinkedIn URL, industry, size, HQ and description. Up to 1,000 a run, no login. $1.50 per 1,000 companies.

- **URL**: https://apify.com/peoplesearch/b2b-company-search.md
- **Developed by:** [PeopleSearch.im](https://apify.com/peoplesearch) (community)
- **Categories:** Lead generation, AI, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 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

## B2B Company Search: Industry, Size & Location

Find companies by what they are: industry, where they are headquartered, how many people they employ, their type and the words in their own description. Or paste a list of websites or LinkedIn company pages and get each company's record back. Every row has the company's name, website, LinkedIn page, industry, employee count, headquarters, description and specialties, up to 1,000 companies a run.

There is no LinkedIn login, no cookie and no browser session involved. The companies come from a licensed B2B company database, so nothing can get an account restricted and nothing waits on a browser.

### What it does

- **Searches like a company database**: industries as LinkedIn names them, headquarters (countries, states, cities, regions such as DACH), employee count, company type (privately held, public, nonprofit and more) and keywords in the company's name, description or specialties ("payroll", "solar installer", "Shopify agency").
- **Looks companies up** by website or LinkedIn page, up to 100 a run, one record each: the company's LinkedIn page from its website, or its website, size and industry from its LinkedIn page.
- **Never pads the list.** Every company matches every filter you set. When none does, the run delivers nothing and says which filter to widen, instead of handing you companies outside your target.
- **Free when nothing matches.** A search that matches no company ends at once and costs nothing beyond its start, and a company that is not found in a lookup is not charged.

### How to use it

1. Either fill in the filters that describe the companies (at least one of industries, headquarters location, company size, company types or keywords), or list the companies to look up.
2. Set **Number of companies** (up to 1,000 per run).
3. Run it, then download the dataset as CSV, Excel or JSON, or read it through the Apify API.

### Input

| Field | What it is |
|---|---|
| `industries` | Industries, picked from the list. |
| `locations` | Where the companies are headquartered: countries, states, regions or cities. |
| `companySizes` | Employee ranges; the search covers from the smallest to the largest picked. |
| `keywords` | Words in the company's name, description or specialties. |
| `companyTypes` | Only these types: Privately Held, Public Company, Nonprofit, Partnership, Sole Proprietorship, Self-Employed, Educational Institution, Government Agency. |
| `excludeSelfEmployed` | Leave out freelancers' own pages (Self-Employed, Sole Proprietorship). Default off. |
| `maxResults` | How many companies, 1 to 1,000. Default 100. |
| `lookupCompanies` | Websites or LinkedIn company pages to look up, up to 100. When set, the filters are not used. |

```json
{
    "industries": ["Software Development"],
    "locations": ["Berlin"],
    "companySizes": ["51-200", "201-500"],
    "maxResults": 300
}
```

```json
{
    "lookupCompanies": ["stripe.com", "https://www.linkedin.com/company/notionhq", "figma.com"]
}
```

### Output

One row per company. The values below are placeholders that show the shape.

```json
{
    "name": "Example Software",
    "website": "https://www.example.com",
    "domain": "example.com",
    "linkedinUrl": "https://www.linkedin.com/company/example-software/",
    "industry": "Software Development",
    "employees": 180,
    "headquarters": "Berlin, Germany",
    "description": "Example Software builds scheduling tools for clinics.",
    "specialties": "scheduling, healthcare software, SaaS",
    "input": null
}
```

`employees` is the company's employee count in the database. `input` is the website or page a lookup row answers (empty in a search). The run's `OUTPUT` record holds the filters searched or the companies looked up, how many matched, how many were delivered, and which lookups found nothing.

### What it costs

You pay per company, nothing per month:

| What | Price |
|---|---|
| One company delivered | $0.0015 |
| A search where no company matches | Free |
| A company a lookup does not find | Free |
| The run start | $0.00005 |

So 1,000 companies cost $1.50. Set a maximum cost per run in the run options and the Actor stops delivering at that amount.

**On Apify's free plan** a run delivers up to 25 companies. Paid plans get up to 1,000 per run.

### Use it from an AI agent

Every Apify Actor can be called as a tool through Apify's MCP server, so an AI agent can pass filters or a list of websites to this Actor and read the companies back.

### Questions

**Does this scrape LinkedIn?**
No. It never opens LinkedIn or any other site and needs no account of yours. The records come from a licensed B2B company database (Icypeas), and a company's public LinkedIn page URL is part of the record you receive.

**Why did a search deliver nothing?**
No company matches every filter together. The status message and the `OUTPUT` record say which filter to widen.

**Why was a company I looked up not found?**
A website finds the company whose LinkedIn page lists that website. A few large companies list another site there (Amazon's page lists aboutamazon.com, Google's a short link), so look those up by their LinkedIn page instead.

**I need the people who work at these companies.**
Use the Company Employees Finder by the same publisher: it takes up to 25 companies by website, LinkedIn page or name and returns their employees, with verified work emails on request.

# Actor input Schema

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

The industries the companies are in, as LinkedIn names them.

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

Where the companies are headquartered: countries, states, regions or cities, for example Germany, California, London, DACH. Use City, Country to tell same-named places apart (Paris, France).

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

Pick one or more; the search covers from the smallest to the largest you pick.

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

Words the company's name, description or specialties contain, for a kind of company no industry names exactly: payroll, solar installer, Shopify agency, dental clinic.

## `companyTypes` (type: `array`):

Only companies of these types.

## `excludeSelfEmployed` (type: `boolean`):

Leave out pages of the types Self-Employed and Sole Proprietorship (freelancers' own pages). Ignored when Company types is set.

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

How many companies to deliver, up to 1,000 per run (25 on Apify's free plan). You pay per company delivered.

## `lookupCompanies` (type: `array`):

Websites (stripe.com) or LinkedIn company pages (linkedin.com/company/stripe), up to 100: each comes back as one company record with its LinkedIn page, industry, size, headquarters and description. When this list is set, the filters above are not used.

## Actor input object example

```json
{
  "industries": [
    "Software Development"
  ],
  "locations": [
    "Berlin"
  ],
  "companySizes": [
    "51-200"
  ],
  "excludeSelfEmployed": false,
  "maxResults": 100
}
```

# Actor output Schema

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

One row per company: name, website, domain, LinkedIn page, industry, employees, headquarters, description, specialties and, in a lookup, the input it answers.

## `summary` (type: `string`):

The filters searched or the companies looked up, how many matched, how many were delivered, and what was not found.

# 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 = {
    "industries": [
        "Software Development"
    ],
    "locations": [
        "Berlin"
    ],
    "companySizes": [
        "51-200"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("peoplesearch/b2b-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 = {
    "industries": ["Software Development"],
    "locations": ["Berlin"],
    "companySizes": ["51-200"],
}

# Run the Actor and wait for it to finish
run = client.actor("peoplesearch/b2b-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 '{
  "industries": [
    "Software Development"
  ],
  "locations": [
    "Berlin"
  ],
  "companySizes": [
    "51-200"
  ]
}' |
apify call peoplesearch/b2b-company-search --silent --output-dataset

```

## MCP server setup

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