# Company Search — 115M Companies by Size, Industry, Funding (`sputnikapi/company-database-search`) Actor

Search 115M companies by country, industry, headcount, site domain and funding — the stage of the last round, its amount and its date, filters the rest of this shelf does not carry at all. A free count preview sizes the segment before you pay $1.50 per 1,000 delivered rows.

- **URL**: https://apify.com/sputnikapi/company-database-search.md
- **Developed by:** [Sputnik API](https://apify.com/sputnikapi) (community)
- **Categories:** Lead generation, AI, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.50 / 1,000 company rows

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

## Company Database Search — 115M companies by industry, size & funding

> **$1.50 per 1,000 companies — 25% under the cheapest company row on this
> shelf, and the only one here you can filter by funding.** Stage of the last
> round, its amount and its date are filters, not just columns. Size the
> segment for free before you buy a row.

### What it costs against the shelf

| What you get | Shelf price | Here |
|---|---|---|
| Short company row | $2.00 per 1,000 | **$1.50 per 1,000** |
| Company row with description, HQ, founding year, funding | $4.00 per 1,000 | **$1.50 per 1,000** |
| Filter by funding stage / amount / date | not offered | **included** |
| Counting the segment before you buy | not offered | **free** |

(Read off the public Apify listing on 2026-09-18, at its price on the plans
most buyers are on.)

Search a company database by **country, industry, headcount, funding, and
site domains** — and see how big your segment is **for free** before you
buy a single row.

This is a **database search, not a live scrape**: no per-page crawling, no
waiting. Filter combinations answer in seconds with funding data on every
row that has it.

### Free preview first

Run with `previewOnly: true` (the default) and the actor answers with one
free row: the total number of matching companies. Size the segment, tune
the filters, then uncheck preview to fetch the rows.

### Input

```json
{
  "countries": ["nl"],
  "industries": [],
  "companyDomains": [],
  "employeesMin": 200,
  "hasFunding": true,
  "fundedAfter": "2022-01-01",
  "fundedBefore": "2026-01-01",
  "fundingRounds": ["seed", "series_a"],
  "fundingAmountMin": 1000000,
  "previewOnly": true,
  "maxResults": 500
}
```

- `countries` — two-letter codes, up to 10.
- `industries` — labels as they appear on company pages, up to 50.
- `companyDomains` — look up specific companies by site domain, up to 50.
- `employeesMin` / `employeesMax` — headcount range.
- `hasFunding` / `fundedAfter` / `fundedBefore` — funding filters on the last
  recorded round.
- `fundingRounds` — keep companies whose **last** round is one of `pre_seed`,
  `seed`, `angel`, `series_a` … `series_g`, `series_unknown`, `private_equity`,
  `debt_financing`, `grant`, `convertible_note`, `post_ipo_equity`,
  `post_ipo_debt`, `secondary_market`, `corporate_round`,
  `equity_crowdfunding`, `product_crowdfunding`, `initial_coin_offering`. The
  store keeps one round per company, so `seed` reads "has not raised past seed
  yet" — which is the stage filter most target lists are actually built on.
- `fundingAmountMin` / `fundingAmountMax` — size of that last round, in USD.

At least one filter is required. Search by company **name** is not
offered — anchor on a site domain instead, it is unambiguous.

### What you get — a full company card per row

| Group | Fields |
|---|---|
| Identity | company name, primary site domain, website URL |
| Size & industry | employee count, industry, verticals list |
| Funding | last round type, date, and amount — on every row that has funding history |
| Story | founding year, description, operating status |
| Location | country code, headquarters (city, region, postal code) |
| Upsell | `_fullData` — the same company through the direct API |

A row (anonymized sample of the shape):

```json
{
  "_status": "found",
  "id": 456123,
  "name": "Acme Analytics",
  "domain": "acme-analytics.example",
  "website": "https://www.acme-analytics.example",
  "countryCode": "NL",
  "employeeCount": 85,
  "industry": "Software Development",
  "verticals": ["Analytics", "B2B SaaS"],
  "funding": { "hasFunding": true, "lastRoundType": "Series A", "lastRoundDate": "2023-05-01", "lastRoundAmount": 12000000 },
  "operatingStatus": "active",
  "founded": 2018,
  "description": "Product analytics for B2B teams…",
  "hq": { "locality": "Amsterdam", "region": "North Holland" }
}
```

Unknown facts are omitted, never shipped as empty strings — a missing HQ
means the record does not vouch for one.

The **Output tab** shows two views: *Overview* (one line per company) and
*Funding & firmographics* (verticals, funding block, HQ, description).

### Pricing — per delivered row

| Event | Price | When |
|---|---|---|
| Company row | $0.0015 | after the row landed in your dataset |
| Count preview | **$0** | always free |

**$1.50 per 1,000 companies.** Set `maxResults` to cap the spend of a run.

### FAQ

**How do I get the people behind these companies?** Feed the `domain`
column to our **Company Employees Finder** (whole roster at $1.5/1,000) or
use **People Database Search** with `companyDomains` for title-filtered
slices.

**Why is there no company-name search?** A name is ambiguous (150+
companies can share one); a site domain is not. Anchor on domains.

### The family

Same engine, other doors: **Reverse Email Lookup** (email → person),
**Profile Lookup** (URL → profile), **Work Email Finder** (name + domain →
email), **Company Employees Finder** (domain → roster), **People Database
Search** (filters → people), **Name-to-Profile**, **Social Handle Lookup**,
**Bulk People Enrichment** (CSV, 50k rows). One data core, one billing
promise: misses are free.

### Disclaimer

This Actor is an independent product and is not affiliated with, endorsed
by, or sponsored by LinkedIn Corporation. It does not access, crawl, or
scrape LinkedIn at run time — answers come from our own database of
publicly available professional data; "LinkedIn" is used only to describe
the kind of public profile data the database covers. Removal requests are
honored via the Issues tab.

# Actor input Schema

## `countries` (type: `array`):

Two-letter country codes (us, de, nl...). At most 10 per run.

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

Industry labels as they appear on company pages (example: "Information Technology & Services"). At most 50.

## `companyDomains` (type: `array`):

Look up specific companies by their site domain (acme.com). At most 50.

## `employeesMin` (type: `integer`):

Keep companies with at least this many employees.

## `employeesMax` (type: `integer`):

Keep companies with at most this many employees.

## `hasFunding` (type: `boolean`):

Keep only companies with at least one recorded funding round.

## `fundedAfter` (type: `string`):

Keep companies whose last funding round is on or after this date (YYYY-MM-DD).

## `fundedBefore` (type: `string`):

Keep companies whose last funding round is on or before this date (YYYY-MM-DD). Pair with "Funded after" to take a single vintage.

## `fundingRounds` (type: `array`):

Keep companies whose LAST recorded round is one of these. The store keeps one round per company, so "Seed" reads "has not raised past seed yet" — which is the stage filter most lists are built on.

## `fundingAmountMin` (type: `integer`):

Keep companies whose last round raised at least this much.

## `fundingAmountMax` (type: `integer`):

Keep companies whose last round raised at most this much.

## `previewOnly` (type: `boolean`):

Answer with the matching-company count instead of result rows. Free — size the segment before you buy rows.

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

Stop after this many company rows (default 500, maximum 50000). Billing is per delivered row.

## Actor input object example

```json
{
  "countries": [
    "nl"
  ],
  "employeesMin": 200,
  "hasFunding": true,
  "previewOnly": true,
  "maxResults": 500
}
```

# Actor output Schema

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

No description

# 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 = {
    "countries": [
        "nl"
    ],
    "employeesMin": 200,
    "hasFunding": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("sputnikapi/company-database-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 = {
    "countries": ["nl"],
    "employeesMin": 200,
    "hasFunding": True,
}

# Run the Actor and wait for it to finish
run = client.actor("sputnikapi/company-database-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 '{
  "countries": [
    "nl"
  ],
  "employeesMin": 200,
  "hasFunding": true
}' |
apify call sputnikapi/company-database-search --silent --output-dataset

```

## MCP server setup

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