# PitchBook Scraper — Companies & Investors (`memo23/pitchbook-scraper`) Actor

Scrape PitchBook company & investor profiles without a login — financing status, competitors, employees, deal history, investor type, HQ, activity metrics, and FAQ data. Works with profile URLs, keyword search (auto-paginated), or sitemap-wide investor filters. JSON or CSV out.

- **URL**: https://apify.com/memo23/pitchbook-scraper.md
- **Developed by:** [Muhamed Didovic](https://apify.com/memo23) (community)
- **Categories:** Lead generation, Automation, Agents
- **Stats:** 14 total users, 13 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $15.00 / 1,000 results

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

## PitchBook Scraper — Companies & Investors

Export structured **company and investor profiles** from PitchBook's public pages. Companies come with financing status, competitors, investment history, investor names, and FAQ data; investors with type, status, headquarters, activity metrics, recent investments, exits, and co-investors. Paste profile URLs, run a PitchBook search (`/profiles/search?q=…` — paginated automatically), or filter the whole public investor universe by region, type, status, and geography.

#### How it works

![How the PitchBook Scraper works](https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-pitchbook.png)

#### ✨ Why use this scraper?

- **No login, no PitchBook seat.** Reads only public profile pages — no gated platform access.
- **Companies AND investors in one actor.** Mix company URLs, investor URLs, and search URLs in a single run; each row comes out in the right shape automatically.
- **Search crawling.** Point it at `https://pitchbook.com/profiles/search?q=fintech` and it paginates the results, scraping every company and investor profile it finds up to `maxItems`.
- **The whole public investor universe.** With no URLs at all, enumerate ~278k investors from PitchBook's own sitemap and filter by region, type, status, geography, and activity counts.
- **Rich company data.** Year founded, status, employees, latest deal type, financing rounds, full contact block, socials, competitors table, investment history, investor names, and the on-page FAQ.
- **Fresh, on-demand email enrichment.** Each investor profile exposes the firm's real website, so the actor can visit it and harvest a contact email live — not a stale snapshot.
- **One clean row per profile.** JSON, CSV, Excel — billed per result, no padding rows.

#### 🎯 Use cases

| Audience | What they pull |
|---|---|
| Market research & competitive intelligence | Company profiles with competitors, financing status, and employee counts |
| Investment & M\&A analysts | Deal history, latest deal types, and investor lists for due diligence |
| Fund managers & placement agents | Investor prospecting lists filtered by type + region |
| Founders raising capital | Actively-seeking investors in their region + sector |
| Lead generation & sales teams | Company contact blocks, socials, and investor websites + emails |
| Data & research teams | Structured company/investor universe for CRM import or market sizing |

#### 📥 Supported inputs

| Input | Example | Behaviour |
|---|---|---|
| Company profile URL | `https://pitchbook.com/profiles/company/361831-87` | Scraped directly → company row |
| Investor profile URL | `https://pitchbook.com/profiles/investor/100016-92` | Scraped directly → investor row (advisor URLs work too) |
| Search URL | `https://pitchbook.com/profiles/search?q=fintech` | Paginated automatically; every company/investor result scraped |
| No URLs + filters | `regions: ["Americas"]`, `investorTypes: ["Venture Capital"]` | Enumerates investors from the public sitemap and keeps matches |

**Not supported:** fund / limited-partner profiles, and PitchBook Platform data behind login (valuation, revenue, deal sizes, AUM, fund performance, full contact phone).

#### ⚠️ Access note

PitchBook is fronted by Cloudflare and tightened its gate in August 2026: profile pages are now challenged from ordinary proxies **and** from clean residential IPs. The actor therefore runs a ladder — three fingerprinted HTTP stacks first, then a managed unblocker as the last attempt — and switches to unblocker-first automatically once the free lanes have failed a few profiles in a row, so it stops paying for attempts that cannot succeed. Sitemap discovery goes through the same unblocker, since the sitemap is gated for every cloud egress. Nothing needs configuring for this; the proxy setting only affects the free lanes.

#### 🔄 How it works

1. **Classify** every start URL — company profile, investor profile, or search listing.
2. **Paginate** search listings, feeding each result into the profile pipeline.
3. **Fetch** each profile through the Cloudflare-tolerant stack (impit → parallel impit/gotScraping race, rotating proxy on retry).
4. **Parse** the JSON-LD + on-page tables + FAQs into a normalized company or investor row.
5. **Enrich** (optional, investors) — visit the investor's on-page website and harvest a contact email.
6. **Filter** investor rows by region / type / status / country / city / count-ranges; company rows are never dropped by investor filters.
7. **Push** one row per profile to the dataset, up to `maxItems`.

#### ⚙️ Input parameters

| Field | Type | Description |
|---|---|---|
| `startUrls` | array | Any mix of company profile, investor profile, and search URLs. Leave empty to enumerate investors from the sitemap. |
| `regions` | array | Investor filter: Americas, Europe, Asia, Oceania, Africa, Middle East. |
| `investorTypes` | array | Investor filter: e.g. Venture Capital, Private Equity, Family Office, Angel, Accelerator/Incubator. |
| `investorStatuses` | array | Investor filter: e.g. Actively Seeking New Investments, Out of Business, Acquired/Merged. |
| `countries` / `cities` | array | Investor filter: specific HQ country / city. |
| `minInvestments` / `maxInvestments` | integer | Investor filter: total-investments range. |
| `minActivePortfolio` / `maxActivePortfolio` | integer | Investor filter: active-portfolio range. |
| `minExits` / `maxExits` | integer | Investor filter: total-exits range. |
| `requiredFields` | array | Investor filter: only emit rows with a non-empty value in ALL listed fields (e.g. `website`, `contactEmail`). |
| `enrichEmails` | boolean | Discover a contact email from each investor's website. Default `false`. |
| `maxItems` | integer | Hard cap on profile rows pushed (companies + investors). Default `1000` (free users: 50). |
| `maxConcurrency` | integer | Profiles fetched in parallel. Default `10`. |
| `proxy` | object | Proxy configuration. Defaults to Apify Proxy. |

> **Note:** investor filters apply to investor rows only — company profiles are never dropped by them. PitchBook has no public filter endpoint, so sitemap-mode filters are applied *after* each profile is fetched: a narrow filter over investors the archive has never seen reads many profiles per match. Investors already in the archive are judged for free, and the run reports the real match rate as it goes, stopping rather than grinding on if a filter turns out to match almost nothing. **For filter-style questions, `instantDatabase` is the cheap path.** You are billed per row pushed, not per page read.

#### ⚡ Instant database (no scraping)

Every profile this actor scrapes is also written to a cumulative archive, so a page paid for once is owned for good. Set `instantDatabase: true` and the run answers **straight from that archive** — no fetching, no unblocker spend, results in seconds.

This matters more here than on a typical target. PitchBook publishes no filter endpoint, so a live filtered crawl has to fetch each candidate before it can tell whether it matches. Against the archive the same question is free.

| Field | Type | Description |
|---|---|---|
| `instantDatabase` | boolean | Serve from the archive instead of scraping. Default `false`. |
| `dbQuery` | string | Case-insensitive substring on investor name or description. |
| `dbCountry` | string | Exact country, e.g. `United States`. |
| `dbRegion` | string | Exact HQ region, e.g. `Americas`, `Europe`. |
| `dbInvestorType` | string | Exact type, e.g. `Venture Capital`, `PE/Buyout`. |
| `dbMinInvestments` / `dbMinExits` | integer | Minimum recorded investments / exits. |
| `dbMaxAgeDays` | integer | Only rows seen within this many days. |

Rows served this way carry **`servedFromDatabase: true`** and **`dataAsOf`**, so archived data can never be mistaken for a fresh scrape — you always see how old it is.

**What the archive is not:** it holds what has been collected so far, not the whole of PitchBook. A filter that matches nothing returns nothing rather than falling back to a live crawl. Run a normal scrape first if you need coverage the archive does not yet have.

#### 📊 Output overview

Each row is a single profile. **Company rows** carry identity, overview stats (year founded, status, employees, latest deal type, financing rounds, investments made), description, the full contact block, socials, the competitors table, investment history, investor names, and the on-page FAQ. **Investor rows** carry identity + type/status, full headquarters address, headline activity counts, description, website (and optional contact email), plus recent investments, exits, and co-investors.

#### 📦 Output sample — company

```json
{
  "type": "company",
  "url": "https://pitchbook.com/profiles/company/361831-87",
  "id": "361831-87",
  "company_name": "Badia Spices",
  "company_socials": [
    { "domain": "www.linkedin.com", "link": "https://www.linkedin.com/company/badia-spices-inc." },
    { "domain": "twitter.com", "link": "https://twitter.com/badiaspices" },
    { "domain": "www.facebook.com", "link": "https://www.facebook.com/BadiaSpices" }
  ],
  "year_founded": 1967,
  "status": "Private",
  "employees": 101,
  "latest_deal_type": "Buyout/LBO",
  "financing_rounds": 1,
  "investments": 1,
  "description": "Manufacturer and distributor of food ingredients based in Doral, Florida…",
  "contact_information": [
    { "Type": "Website", "value": "www.badiaspices.com" },
    { "Type": "Ownership Status", "value": "Privately Held (backing)" },
    { "Type": "Financing Status", "value": "Private Equity-Backed" },
    { "Type": "Corporate Office", "value": "PO Box 226497, Doral, FL 33322-4697, United States" },
    { "Type": "Primary Industry", "value": "Food Products" },
    { "Type": "Vertical(s)", "value": "Manufacturing" }
  ],
  "competitors": [
    { "company_name": "Louisiana Fish Fry", "financing_status": "Private Equity-Backed", "link": "https://pitchbook.com/profiles/company/233704-27", "location": "Baton Rouge, LA" }
  ],
  "all_investments": [
    { "company_name": "Tech Data (Warehouse in Sweetwater, Texas)", "deal_date": "2020-11-03T00:00:00.000Z", "deal_type": "Corporate Asset Purchase", "deal_size": null, "industry": "Buildings and Property" }
  ],
  "investors": ["BDT & MSD Partners"],
  "faq": [
    { "type": "Question", "value": "When was Badia Spices founded?" },
    { "type": "Answer", "value": "Badia Spices was founded in 1967." }
  ],
  "scrapedAt": "2026-07-22T20:04:11.000Z"
}
```

#### 📦 Output sample — investor

```json
{
  "type": "investor",
  "investorId": "100016-92",
  "investorUrl": "https://pitchbook.com/profiles/investor/100016-92",
  "companyName": "Planetary Technologies",
  "formerlyKnownAs": "Bioeconomy Capital",
  "primaryInvestorType": "Venture Capital",
  "investorStatus": "Actively Seeking New Investments",
  "website": "http://planetarytech.earth",
  "yearFounded": "2015",
  "country": "United States",
  "city": "Seattle",
  "stateOrProvince": "Washington",
  "professionals": 2,
  "totalInvestments": 30,
  "activePortfolio": 9,
  "totalExits": 6,
  "recentInvestments": [
    { "companyName": "ZymeCo", "dealDate": "01-Jul-2026", "dealType": "Later Stage VC", "industry": "Other Agriculture", "companyStage": "Generating Revenue", "leadPartner": null }
  ],
  "recentExits": [
    { "companyName": "Parse Biosciences", "exitDate": "01-Dec-2025", "exitType": "Merger/Acquisition" }
  ],
  "coInvestors": ["Sagana", "Sahsen Ventures", "Band of Angels", "Lowercase Capital"],
  "scrapedAt": "2026-07-22T20:04:25.000Z"
}
```

#### 🗂 Key output fields

**Company rows** (field names mirror the shape used by established PitchBook company scrapers, so existing pipelines can swap in):

| Field | Type | Notes |
|---|---|---|
| `company_name`, `id`, `url` | string | Identity + PitchBook profile ID |
| `year_founded`, `status`, `employees` | number / string | Overview stats |
| `latest_deal_type`, `financing_rounds`, `investments` | string / number | Deal activity headline stats |
| `description` | string | Company summary |
| `contact_information[]` | array | `{Type, value}` rows: website, ownership status, financing status, office, industry, verticals |
| `company_socials[]` | array | `{domain, link}` — LinkedIn, X/Twitter, Facebook, … |
| `competitors[]` | array | name, financing status, profile link, location (public rows only) |
| `all_investments[]` | array | Investments the company itself made: name, ISO date, type, size, industry |
| `investors[]` | array | Investor names (extracted from the public FAQ) |
| `faq[]` | array | Alternating `{type: Question/Answer}` entries as rendered on the page |

**Investor rows:**

| Field | Type | Notes |
|---|---|---|
| `companyName`, `formerlyKnownAs` | string | Investor name and prior name |
| `primaryInvestorType`, `otherInvestorType`, `investorStatus` | string | e.g. Venture Capital / Actively Seeking New Investments |
| `website`, `yearFounded`, `description` | string | Firm website (used for enrichment) + summary |
| `hqGlobalRegion`, `country`, `city`, `stateOrProvince`, `postalCode`, `streetAddress` | string | Headquarters location |
| `phonePartial` | string | Only country + area code render publicly (rest is redacted by PitchBook) |
| `professionals`, `totalInvestments`, `activePortfolio`, `totalExits` | number | Headline activity counts |
| `recentInvestments[]`, `recentExits[]`, `coInvestors[]` | array | First public rows of each table |
| `contactEmail`, `contactEmails` | string / array | Present only when `enrichEmails` is on and an email was found |
| `scrapedAt` | ISO datetime | When the row was collected |

> **Archive provenance fields.** Rows served by `instantDatabase` add `servedFromDatabase: true` and `dataAsOf` (when that profile was last scraped). Live-scraped rows never carry them, so the two are always distinguishable in the same dataset.

#### ❓ FAQ

**Does this return valuation, revenue, deal sizes, or AUM?** No. Those are gated on PitchBook's platform and never appear in the public page HTML — the placeholders you see on the page are literally empty boxes. This actor returns everything that *is* public.

**Can I scrape from a keyword search?** Yes — paste `https://pitchbook.com/profiles/search?q=<term>` into `startUrls`. The actor walks every results page and scrapes each company/investor profile it finds, up to `maxItems`.

**Where does the contact email come from?** PitchBook doesn't publish investor emails. With `enrichEmails` on, the actor visits the investor's own website (shown on the profile) and harvests a contact email. Hit rate depends on whether the firm publishes one — expect a partial rate.

**Why is `phonePartial` incomplete?** PitchBook renders only the country + area code publicly and masks the rest with placeholder boxes. The masked digits are not present in the page HTML.

**Can I get every investor in a country/type?** Yes — leave `startUrls` empty and set the filters. The actor streams the public sitemap and keeps matches until `maxItems`. Broad filters read more profiles per match.

**How do I get a specific company or investor?** Paste its profile URL (`/profiles/company/<id>-<nn>` or `/profiles/investor/<id>-<nn>`) into `startUrls`.

#### 💬 Support

Found a field that's missing or mis-parsed? Open an issue on the actor's Issues tab with the profile URL and what you expected.

#### 🛠 Additional services

Need fund or limited-partner profiles, or a bulk one-off pull? Reach out via the Issues tab.

#### 🔎 Explore more scrapers

Browse the rest of the portfolio on the Apify Store for more lead-generation and market-intelligence actors.

#### 🤖 For AI Agents & LLM Apps

This actor works as a structured data source for AI agents via the [Apify MCP server](https://docs.apify.com/integrations/mcp) or the Apify API. Typical agent tasks: "get the competitors and financing status of company X", "list actively-investing VC firms in Europe", "build a due-diligence brief from a PitchBook URL". Input is a simple JSON with `startUrls`; output is a clean dataset with one JSON row per profile — no HTML parsing needed downstream.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by PitchBook Data, Inc., Morningstar, or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available profile pages — no authenticated endpoints, subscriber-only features, or content behind a PitchBook login. Users are responsible for ensuring their use complies with PitchBook's Terms of Service, applicable data-protection law (GDPR, CCPA, etc.), and any contractual obligations of their own organisation.

***

### SEO Keywords

pitchbook scraper, scrape pitchbook, pitchbook companies scraper, pitchbook company profile scraper, pitchbook investors scraper, pitchbook api, apify pitchbook, company data scraper, investor data scraper, venture capital investor list, private equity firm scraper, vc firm database, company competitors scraper, financing rounds data, startup funding data, investor contact scraper, lp prospecting data, family office list scraper, investor email finder, deal sourcing data, co-investor mapping, due diligence data, market intelligence scraper, pitchbook alternative scraper, company profile api

# Actor input Schema

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

Any mix of: company profiles (https://pitchbook.com/profiles/company/361831-87), investor profiles (https://pitchbook.com/profiles/investor/100016-92), or search listings (https://pitchbook.com/profiles/search?q=fintech) which are paginated automatically. When empty, the actor streams investors from PitchBook's public sitemap and applies the filters below.

## `regions` (type: `array`):

Global regions to include. Allowed values: Americas, Europe, Asia, Oceania, Africa, Middle East. Leave empty to include all.

## `investorTypes` (type: `array`):

Primary/other investor types to include, e.g. Venture Capital, Private Equity, Corporate Venture Capital, Angel (individual), Family Office, Growth/Expansion, Hedge Fund, Fund of Funds, Sovereign Wealth Fund, Accelerator/Incubator. Leave empty to include all.

## `investorStatuses` (type: `array`):

Statuses to include, e.g. Actively Seeking New Investments, Making Add-On Investments Only, Not Actively Seeking New Investments, Out of Business, Acquired/Merged. Leave empty to include all.

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

Specific countries to include (e.g. United States, United Kingdom, Germany). Leave empty to include all.

## `cities` (type: `array`):

Specific HQ cities to include (e.g. San Francisco, London). Leave empty to include all.

## `minInvestments` (type: `integer`):

Only include investors with at least this many total investments. Investors with no disclosed value are kept.

## `maxInvestments` (type: `integer`):

Only include investors with at most this many total investments. Investors with no disclosed value are kept.

## `minActivePortfolio` (type: `integer`):

Only include investors with at least this many active portfolio companies. Investors with no disclosed value are kept.

## `maxActivePortfolio` (type: `integer`):

Only include investors with at most this many active portfolio companies. Investors with no disclosed value are kept.

## `minExits` (type: `integer`):

Only include investors with at least this many total exits. Investors with no disclosed value are kept.

## `maxExits` (type: `integer`):

Only include investors with at most this many total exits. Investors with no disclosed value are kept.

## `requiredFields` (type: `array`):

Only emit investors that have a non-empty value in ALL selected fields. Useful field names: website, contactEmail, primaryInvestorType, city, country, streetAddress. Leave empty to keep every scraped investor.

## `enrichEmails` (type: `boolean`):

When enabled, the actor visits each investor's on-page website and harvests a contact email. Best-effort; hit rate depends on whether the firm publishes an email. Adds latency per row.

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

Hard cap on the number of profile rows (companies + investors) pushed to the dataset. Free users are capped at 50.

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

Maximum number of investor profiles fetched in parallel.

## `proxy` (type: `object`):

PitchBook is Cloudflare-fronted and — unusually — TRUSTS clean datacenter egress while CHALLENGING residential exit nodes. The scraper therefore prefers Apify's datacenter pool and drops a RESIDENTIAL group if one is set. The default below is RESIDENTIAL only because every account can select it: accounts that have datacenter access still get datacenter, and accounts that do not fall back to what is set here (expect 403s on that path). If a run reports no usable proxy, check Console → Settings → Limits for the monthly external-data-transfer allowance.

## `instantDatabase` (type: `boolean`):

Skip scraping entirely and answer from the archive using the filters below. Useful because PitchBook blocks live discovery: without start URLs there is nothing to crawl, so filter-style queries only work against the archive.

## `dbQuery` (type: `string`):

Case-insensitive substring match on the investor's name or description.

## `dbCountry` (type: `string`):

Exact country, e.g. <code>United States</code>, <code>United Kingdom</code>.

## `dbRegion` (type: `string`):

Exact region, e.g. <code>Americas</code>, <code>Europe</code>, <code>Asia</code>.

## `dbInvestorType` (type: `string`):

Exact type, e.g. <code>PE/Buyout</code>, <code>Venture Capital</code>, <code>Corporation</code>.

## `dbMinInvestments` (type: `integer`):

Only investors with at least this many total investments recorded on their PitchBook profile.

## `dbMinExits` (type: `integer`):

Only investors with at least this many recorded exits.

## `dbMaxAgeDays` (type: `integer`):

Freshness cap. Leave empty to accept any age — every row still carries <code>dataAsOf</code>.

## Actor input object example

```json
{
  "startUrls": [
    "https://pitchbook.com/profiles/company/361831-87",
    "https://pitchbook.com/profiles/investor/100016-92",
    "https://pitchbook.com/profiles/search?q=spices"
  ],
  "regions": [
    "Americas"
  ],
  "investorTypes": [
    "Venture Capital"
  ],
  "enrichEmails": false,
  "maxItems": 1000,
  "maxConcurrency": 10,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  },
  "instantDatabase": false
}
```

# 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 = {
    "startUrls": [
        "https://pitchbook.com/profiles/company/361831-87",
        "https://pitchbook.com/profiles/investor/100016-92",
        "https://pitchbook.com/profiles/search?q=spices"
    ],
    "regions": [
        "Americas"
    ],
    "investorTypes": [
        "Venture Capital"
    ],
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/pitchbook-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 = {
    "startUrls": [
        "https://pitchbook.com/profiles/company/361831-87",
        "https://pitchbook.com/profiles/investor/100016-92",
        "https://pitchbook.com/profiles/search?q=spices",
    ],
    "regions": ["Americas"],
    "investorTypes": ["Venture Capital"],
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/pitchbook-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 '{
  "startUrls": [
    "https://pitchbook.com/profiles/company/361831-87",
    "https://pitchbook.com/profiles/investor/100016-92",
    "https://pitchbook.com/profiles/search?q=spices"
  ],
  "regions": [
    "Americas"
  ],
  "investorTypes": [
    "Venture Capital"
  ],
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call memo23/pitchbook-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,memo23/pitchbook-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/45aV0sNPfsYJIKBxb/builds/6MoNTc33eK4biEJyt/openapi.json
