# Crunchbase Company & Funding Search Scraper (`automation-lab/crunchbase-company-funding-search-scraper`) Actor

Search public Crunchbase companies and extract structured company, industry, location, funding-round, and investor summaries without an API key.

- **URL**: https://apify.com/automation-lab/crunchbase-company-funding-search-scraper.md
- **Developed by:** [Stas Persiianenko](https://apify.com/automation-lab) (community)
- **Categories:** Business
- **Stats:** 3 total users, 2 monthly users, 60.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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/platform/actors/running/actors-in-store#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

## Crunchbase Company & Funding Search Scraper

Search public Crunchbase company profiles and turn visible company, industry, location, funding-round, and investor summaries into structured data. The Actor works without a Crunchbase API key and supports both keyword discovery and exact organization URLs.

Use it to refresh company research lists, enrich market maps, qualify leads, or feed recurring funding research workflows. It deliberately does not infer or bypass fields that Crunchbase marks as locked.

### What does this Crunchbase scraper do?

The Actor opens an anonymous browser session through a sticky US residential proxy, searches Crunchbase's public company autocomplete, and extracts the structured state exposed on public organization profiles.

It can:

- search company names, industries, and themes;
- extract exact `crunchbase.com/organization/...` URLs;
- deduplicate companies across queries and URLs;
- retain only profiles reporting at least one funding round;
- return visible round and investor summaries;
- retry with a fresh sticky session when Crunchbase challenges a browser;
- stop at a predictable result limit.

### Who is it for?

- **Market intelligence teams** refreshing a company landscape.
- **Investors and analysts** collecting public funding signals.
- **Sales operations teams** enriching a company lead list.
- **Researchers** comparing industries, locations, and operating status.
- **Developers** who need typed Crunchbase records without maintaining a browser stack.

### Why use this Actor?

Crunchbase's normal pages are browser-rendered and protected. A plain HTTP scraper often receives a challenge instead of company data. This Actor packages browser fingerprinting, residential session affinity, challenge detection, bounded rotation, search discovery, profile parsing, and Apify dataset output into one repeatable run.

It returns only fields visible to an anonymous visitor. Locked amounts or dates remain unavailable rather than being guessed.

### What data can you extract?

| Field | Meaning |
| --- | --- |
| `query` | Search query that discovered the company; null for an exact URL |
| `name`, `description` | Public company identity and short description |
| `crunchbaseUrl`, `website` | Crunchbase profile and public company website |
| `companyType`, `operatingStatus` | Public organization status fields |
| `employeeRange` | Reported employee-size band |
| `city`, `region`, `country` | Headquarters location |
| `industries`, `industryGroups` | Public Crunchbase categories |
| `rank` | Public Crunchbase company rank, when present |
| `lastFundingType` | Most recent reported round type |
| `numberOfFundingRounds` | Reported round count |
| `totalFundingVisible` | Whether a total-funding value is publicly visible |
| `investorCount`, `leadInvestorCount` | Reported investor totals |
| `recentFundingRounds` | Up to ten round names, types, links, and visible summary signals |
| `investors` | Up to 25 investor names, links, lead status, and round labels |
| `scrapedAt` | Extraction time in UTC |

### Getting started

1. Open the Actor input page.
2. Add one or more company, industry, or theme searches under **Company search queries**.
3. Optionally add exact Crunchbase organization URLs.
4. Choose a result limit from 1 to 50.
5. Enable **Only companies with funding rounds** when building a funded-company list.
6. Keep the default US residential proxy unless you have a tested custom proxy.
7. Run the Actor and open the **Companies** dataset view.

A small first run such as `OpenAI` with one result is recommended before scheduling a larger refresh.

### Input parameters

#### `queries`

An array of up to 20 search terms, each at most 100 characters. Searches can be company names such as `OpenAI` or themes such as `climate tech`. Search results are source-ranked, not an exhaustive advanced Crunchbase query.

#### `startUrls`

Up to 50 exact public Crunchbase organization URLs. Only `https://www.crunchbase.com/organization/<slug>` and the equivalent non-`www` hostname are accepted. Other domains and Crunchbase page types fail validation.

#### `maxItems`

Maximum number of deduplicated company records saved, from 1 to 50. The default is 10.

#### `requireFunding`

When true, profiles with zero reported funding rounds are skipped. Locked funding amounts do not cause a company to be skipped if the public profile reports a round count.

#### `maxSessionRetries`

Maximum number of sticky browser identities attempted after source challenges. The default is 4 and the maximum is 6. More retries increase runtime and proxy transfer.

#### `proxyConfiguration`

The default uses Apify Proxy's `RESIDENTIAL` group with a US exit. Crunchbase can challenge direct and datacenter traffic; changing this setting can reduce success rates.

### Example input: company search

```json
{
  "queries": ["artificial intelligence"],
  "startUrls": [],
  "maxItems": 5,
  "requireFunding": false
}
```

### Example input: exact funded company

```json
{
  "queries": [],
  "startUrls": [
    { "url": "https://www.crunchbase.com/organization/openai" }
  ],
  "maxItems": 1,
  "requireFunding": true
}
```

### Example output

The following abbreviated record reflects the Actor's current output shape:

```json
{
  "query": "OpenAI",
  "name": "OpenAI",
  "permalink": "openai",
  "crunchbaseUrl": "https://www.crunchbase.com/organization/openai",
  "description": "OpenAI is an AI research and deployment company that develops advanced AI models, including ChatGPT.",
  "website": "https://openai.com",
  "companyType": "For Profit",
  "operatingStatus": "Active",
  "employeeRange": "1001-5000",
  "city": "San Francisco",
  "region": "California",
  "country": "United States",
  "industries": ["Agentic AI", "Artificial Intelligence (AI)", "Software"],
  "lastFundingType": "Series Unknown",
  "numberOfFundingRounds": 14,
  "totalFundingVisible": false,
  "investorCount": 108,
  "leadInvestorCount": 18,
  "recentFundingRounds": [
    {
      "name": "Venture Round - OpenAI",
      "type": "Series Unknown",
      "investorCount": 1,
      "leadInvestors": ["Robinhood Ventures"],
      "announcedOnVisible": false,
      "moneyRaisedVisible": false
    }
  ],
  "scrapedAt": "2026-07-31T05:48:00Z"
}
```

Values can change as Crunchbase updates a profile. Fields unavailable on a particular profile can be null or empty.

### How much does it cost to extract Crunchbase company profiles?

The Actor uses pay per event. A run emits one `start` charge and one `item` charge for each saved company. There is no separate charge for rounds or investors included inside a company record.

Current source-package pricing starts at:

- **Start:** $0.005 per run.
- **Item:** $0.10057 per company on the BRONZE tier.

At BRONZE, one saved company is about $0.10557, ten are about $1.01070, and 50 are about $5.03350, excluding any Apify platform plan allowances. Higher usage tiers receive lower per-item rates. The active pricing shown in Apify Console is authoritative.

### Scheduling company-list refreshes

Create an Apify schedule with a stable input such as `climate tech`, `maxItems: 10`, and `requireFunding: true`. Each run produces a fresh dataset. Connect the dataset to your database, webhook, Make, Zapier, or another Actor and compare by `permalink`.

The Actor does not maintain history or send change alerts itself. Your downstream workflow should store earlier datasets if you need additions or field-change detection.

### API usage with cURL

```bash
curl -X POST \
  "https://api.apify.com/v2/acts/automation-lab~crunchbase-company-funding-search-scraper/runs?token=$APIFY_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"queries":["climate tech"],"maxItems":10,"requireFunding":true}'
```

Use the returned run's default dataset URL after the run succeeds.

### API usage with JavaScript

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

const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/crunchbase-company-funding-search-scraper').call({
  queries: ['artificial intelligence'],
  maxItems: 5,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

### API usage with Python

```python
from apify_client import ApifyClient
import os

client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('automation-lab/crunchbase-company-funding-search-scraper').call(
    run_input={'queries': ['OpenAI'], 'maxItems': 1, 'requireFunding': True}
)
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)
```

### Use through Apify MCP

Add the Actor to Claude Code:

```bash
claude mcp add --transport http apify \
  "https://mcp.apify.com?tools=automation-lab/crunchbase-company-funding-search-scraper"
```

#### Claude Desktop, Cursor, and VS Code setup

Claude Desktop, Cursor, and VS Code can use the following MCP server configuration:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com?tools=automation-lab/crunchbase-company-funding-search-scraper"
    }
  }
}
```

Example prompts:

- “Search Crunchbase for five climate tech companies and return those with funding rounds.”
- “Extract the public company and investor summary from this Crunchbase organization URL.”
- “Run my saved AI company research input and summarize locations and last funding types.”

### Reliability and retries

Crunchbase applies adaptive anti-bot checks. A challenged identity is retired rather than parsed as an empty result. The Actor retries with a different sticky session up to `maxSessionRetries` and fails with a non-zero exit when no useful record can be extracted.

For better reliability:

- keep the default US residential proxy;
- use small, scheduled batches rather than simultaneous large runs;
- avoid raising retries unless a normal run is challenged;
- inspect logs before repeating a failed run;
- use exact URLs when you already know the company.

### Limits

- Search uses the public autocomplete surface, not Crunchbase Pro advanced search.
- A query can have many matches, but the public source returns a bounded ranked candidate list.
- The Actor saves at most 50 companies per run.
- Public profile fields can be missing, changed, or locked.
- Funding amounts and announcement dates are not returned when the source hides them.
- Investor and recent-round arrays are intentionally bounded.
- An anonymous browser cannot provide private, licensed, or account-only Crunchbase data.

### Troubleshooting

#### The run says the session challenge was not cleared

Keep the residential proxy enabled and try again later. The Actor already rotates bounded sessions; repeatedly increasing concurrency or using datacenter traffic is unlikely to help.

#### The run found companies but saved fewer than requested

Deduplication, `requireFunding`, a short public candidate list, or challenged profiles can reduce output. Check `discovered` and `saved` in the log and test the exact company URL when appropriate.

#### My URL is rejected

Use a Crunchbase organization profile such as `https://www.crunchbase.com/organization/openai`. Search pages, people, funding-round URLs, and non-Crunchbase URLs are not accepted.

#### Why is `totalFundingVisible` false?

The profile reported funding activity but did not expose a public total in structured state. The Actor records visibility instead of guessing a monetary value.

### Responsible use and legality

Use the Actor only for data you are authorized to collect and process. Review Crunchbase's current terms, robots guidance, and applicable privacy, database, and marketing laws. Avoid using company data to make unlawful discriminatory decisions or to send unsolicited messages. You are responsible for your input, storage, retention, and downstream use.

### FAQ

#### Does this require a Crunchbase API key?

No. It reads anonymous public profile data in a browser session. It is not a replacement for licensed Crunchbase API or Pro data.

#### Can it scrape people or contacts?

No. The contract is company profiles plus public funding-round and investor summaries.

#### Does it return funding amounts?

Only visibility is reported. The Actor does not bypass locked values or infer hidden money amounts.

#### Can I combine search queries and exact URLs?

Yes. Both inputs use the same parser, funding filter, deduplication, and result limit.

#### Can I monitor changes?

Schedule repeated runs and compare datasets downstream by `permalink`. Built-in history and alerts are not claimed.

### Related Automation Lab actors

- [Company Funding Tracker](https://apify.com/automation-lab/company-funding-tracker) for a complementary funding-monitoring workflow.
- [PitchBook Company Profiles Scraper](https://apify.com/automation-lab/pitchbook-company-profiles-scraper) when your research source is PitchBook rather than Crunchbase.

Choose the Actor whose source and public-data contract match your workflow.

# Actor input Schema

## `queries` (type: `array`):

Company names, industries, or themes to search on Crunchbase. Up to 20 queries; results are deduplicated.

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

Optional public Crunchbase /organization/ profile URLs to extract directly.

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

Maximum number of useful company records to save after deduplication and filtering.

## `requireFunding` (type: `boolean`):

Keep only companies whose public Crunchbase profile reports at least one funding round.

## `maxSessionRetries` (type: `integer`):

Number of sticky sessions to try when Crunchbase challenges or rate-limits a session.

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

Crunchbase requires a stable high-quality proxy. The default uses a sticky US residential Apify Proxy session.

## Actor input object example

```json
{
  "queries": [
    "OpenAI"
  ],
  "startUrls": [
    {
      "url": "https://www.crunchbase.com/organization/openai"
    }
  ],
  "maxItems": 10,
  "requireFunding": false,
  "maxSessionRetries": 4,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `dataset` (type: `string`):

Dataset containing all extracted company records.

# 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 = {
    "queries": [
        "OpenAI"
    ],
    "startUrls": [
        {
            "url": "https://www.crunchbase.com/organization/openai"
        }
    ],
    "maxItems": 10,
    "requireFunding": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("automation-lab/crunchbase-company-funding-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 = {
    "queries": ["OpenAI"],
    "startUrls": [{ "url": "https://www.crunchbase.com/organization/openai" }],
    "maxItems": 10,
    "requireFunding": False,
}

# Run the Actor and wait for it to finish
run = client.actor("automation-lab/crunchbase-company-funding-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "queries": [
    "OpenAI"
  ],
  "startUrls": [
    {
      "url": "https://www.crunchbase.com/organization/openai"
    }
  ],
  "maxItems": 10,
  "requireFunding": false
}' |
apify call automation-lab/crunchbase-company-funding-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=automation-lab/crunchbase-company-funding-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/C1uTFvwcvd0VgMbnq/builds/tNAkaeYmx6ETMOdJf/openapi.json
