# Crunchbase Scraper (`magicfingers/crunchbase-scraper`) Actor

Scrape Crunchbase company profiles, funding rounds, founders/executives, and investor data. Search by keyword, industry, location, or funding stage.

- **URL**: https://apify.com/magicfingers/crunchbase-scraper.md
- **Developed by:** [abdulrahman alrashid](https://apify.com/magicfingers) (community)
- **Categories:** Other
- **Features:** Limited permissions
- **Stats:** 243 total users, 3 monthly users, 100.0% runs succeeded, 4 bookmarks
- **User rating**: 1.00 out of 5 stars

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-usage

## 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

## Crunchbase Scraper

Scrape Crunchbase company profiles, funding rounds, founders/executives, and investor data without a Crunchbase Pro subscription.

### What data can you extract?

#### Organization profiles

- Name, description, founded date, headquarters location
- Employee count range, operating status, website
- Social links (LinkedIn, Twitter, Facebook)
- Industry categories and category groups
- Total funding raised, last funding type and date
- IPO status, stock symbol, revenue range
- Crunchbase rank

#### Funding rounds

- Announced date, funding type (Seed, Series A, etc.)
- Money raised (USD), pre-money valuation
- Lead investors with names and Crunchbase links
- All investors for each round
- Number of investors

#### People (founders and executives)

- Name, title, current organization
- LinkedIn and Twitter profiles
- Crunchbase profile URL
- Employment history

#### Investor profiles

- Name, type, location, description
- Number of investments, exits, and funds
- Lead investments count
- Portfolio companies list
- Website and social links

### How to use

#### Search companies by keyword

```json
{
    "action": "searchCompanies",
    "searchQuery": "artificial intelligence",
    "maxResults": 50,
    "includeFunding": true,
    "includePeople": true
}
```

#### Search with filters

```json
{
    "action": "searchCompanies",
    "searchQuery": "fintech",
    "location": "San Francisco",
    "industryFilter": "Financial Services",
    "fundingStage": "series_a",
    "maxResults": 100
}
```

#### Scrape specific company profiles

```json
{
    "action": "scrapeProfiles",
    "directUrls": [
        "https://www.crunchbase.com/organization/openai",
        "https://www.crunchbase.com/organization/stripe",
        "https://www.crunchbase.com/organization/anthropic"
    ],
    "includeFunding": true,
    "includePeople": true
}
```

#### Scrape investor profiles

```json
{
    "action": "scrapeInvestors",
    "directUrls": [
        "https://www.crunchbase.com/organization/sequoia-capital",
        "https://www.crunchbase.com/organization/andreessen-horowitz"
    ]
}
```

#### Scrape people profiles

```json
{
    "action": "scrapePeople",
    "directUrls": [
        "https://www.crunchbase.com/person/sam-altman",
        "https://www.crunchbase.com/person/elon-musk"
    ]
}
```

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `action` | string | `searchCompanies` | What to scrape: `searchCompanies`, `scrapeProfiles`, `scrapeInvestors`, `scrapePeople` |
| `searchQuery` | string | | Keyword to search for |
| `location` | string | | Filter by HQ location |
| `industryFilter` | string | | Filter by industry category |
| `fundingStage` | string | | Filter by last funding stage (seed, series_a, etc.) |
| `directUrls` | array | `[]` | Crunchbase URLs to scrape directly |
| `maxResults` | integer | `100` | Max results (0 = unlimited) |
| `includeFunding` | boolean | `true` | Include funding rounds for profiles |
| `includePeople` | boolean | `true` | Include founders/executives for profiles |
| `includeInvestors` | boolean | `false` | Include detailed investor info |
| `maxConcurrency` | integer | `3` | Parallel pages (lower = safer) |
| `requestTimeout` | integer | `90` | Page load timeout in seconds |
| `proxyConfiguration` | object | Residential | Proxy settings (residential recommended) |

### Output format

Each item in the dataset is a JSON object with a `type` field (`organization`, `investor`, `person`, or `searchResult`).

#### Organization example

```json
{
    "type": "organization",
    "name": "OpenAI",
    "shortDescription": "OpenAI is an AI research and deployment company.",
    "foundedDate": "2015-12-11",
    "headquartersLocation": "San Francisco, California, United States",
    "website": "https://openai.com",
    "employeeCount": "1001-5000",
    "totalFunding": "$11,300.0M",
    "totalFundingUsd": 11300000000,
    "lastFundingType": "Series Unknown",
    "operatingStatus": "Active",
    "industries": ["Artificial Intelligence", "Machine Learning"],
    "linkedin": "https://www.linkedin.com/company/openai",
    "twitter": "https://twitter.com/OpenAI",
    "fundingRounds": [
        {
            "announcedDate": "2023-04-28",
            "fundingType": "Series Unknown",
            "moneyRaised": 10000000000,
            "leadInvestors": [{ "name": "Microsoft" }],
            "numInvestors": 1
        }
    ],
    "people": [
        {
            "name": "Sam Altman",
            "title": "CEO",
            "linkedin": "https://linkedin.com/in/samaltman"
        }
    ],
    "crunchbaseUrl": "https://www.crunchbase.com/organization/openai",
    "scrapedAt": "2024-01-15T10:30:00.000Z"
}
```

### Pricing

This actor uses pay-per-event pricing: **$2.00 per 1,000 results** ($0.002 per result).

Each saved item (organization profile, investor profile, person profile, or search result) counts as one result.

### Tips for best results

1. **Use residential proxies** — Crunchbase has strong anti-bot detection. Residential proxies are strongly recommended.
2. **Keep concurrency low** — 2-3 concurrent pages reduces blocking risk significantly.
3. **Start with direct URLs** — Scraping specific profile URLs is more reliable than search-based scraping.
4. **Use reasonable limits** — Start with smaller `maxResults` to verify output before large runs.

### Technical details

- Built with Apify SDK v3 and Crawlee PlaywrightCrawler
- Uses response interception to capture Crunchbase's internal API data
- Falls back to DOM extraction when API data is not available
- Extracts JSON-LD and **NEXT_DATA** structured data
- Includes stealth measures (navigator overrides, random delays, human-like scrolling)
- Automatic session rotation and retry logic

# Actor input Schema

## `action` (type: `string`):

What type of scraping to perform.

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

Keyword to search for companies/organizations (e.g., 'artificial intelligence', 'fintech').

## `location` (type: `string`):

Filter by headquarters location (e.g., 'San Francisco', 'United States', 'Europe').

## `industryFilter` (type: `string`):

Filter by industry category (e.g., 'Artificial Intelligence', 'Financial Services', 'Health Care').

## `fundingStage` (type: `string`):

Filter by last funding stage.

## `directUrls` (type: `array`):

List of Crunchbase URLs to scrape directly (for scrapeProfiles, scrapeInvestors, scrapePeople actions). One URL per line.

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

Maximum number of results to return. Use 0 for unlimited.

## `includeFunding` (type: `boolean`):

Scrape detailed funding rounds for each organization profile.

## `includePeople` (type: `boolean`):

Scrape founders and key executives for each organization profile.

## `includeInvestors` (type: `boolean`):

Scrape detailed investor information for each funding round.

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

Select proxies for the scraper. Residential proxies are strongly recommended for Crunchbase.

## `maxConcurrency` (type: `integer`):

Maximum number of pages to process in parallel. Lower values reduce chance of blocking.

## `requestTimeout` (type: `integer`):

Maximum time in seconds to wait for a page to load.

## Actor input object example

```json
{
  "action": "searchCompanies",
  "searchQuery": "artificial intelligence",
  "fundingStage": "",
  "maxResults": 5,
  "includeFunding": true,
  "includePeople": true,
  "includeInvestors": false,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "maxConcurrency": 3,
  "requestTimeout": 90
}
```

# 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": "artificial intelligence",
    "maxResults": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("magicfingers/crunchbase-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": "artificial intelligence",
    "maxResults": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("magicfingers/crunchbase-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": "artificial intelligence",
  "maxResults": 5
}' |
apify call magicfingers/crunchbase-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,magicfingers/crunchbase-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/kFKdMLnsKxF18LRri/builds/tJcVu4kDYQ6M43nOy/openapi.json
