Tony Wang7 min readHow to Scrape PitchBook in 2026 (API & Python)
Scrape PitchBook company, fund, and investor profile data in 2026 — DIY, no-code, or a structured API — plus what's public vs. paid-terminal-only.
The fastest way to scrape PitchBook in 2026 is to call a structured API that returns normalized JSON — company, fund, investor, advisor, and limited-partner profile summaries — instead of parsing PitchBook's rendered pages yourself. PitchBook is the default private-market data terminal for VC, PE, and M&A research, but it has no self-serve API and its own terms are among the strictest in this series. This guide covers what's actually public, what's not, and the three ways to collect it.
Why scrape PitchBook profile data?
PitchBook's public profile pages surface a slice of private-market context that shows up across several workflows:
- Startup and company research — pull a company's founding year, status, employee count, industry, and investor count into a research doc or CRM record.
- Investor discovery — look up a VC firm or investor's type, status, and investment/portfolio/exit counts to qualify a fundraising or partnership target.
- Fund and LP tracking — check a fund's strategy, status, size, vintage, and manager, or a limited partner's institution type and location.
- M&A and advisory research — confirm a service provider's specialty and the deals they've been credited on.
- Market-intelligence and deal-sourcing tools — enrich an internal company or investor database with PitchBook's public identifiers and descriptions as one signal among several.
Is it legal to scrape PitchBook?
Option 1: DIY in Python (and why it breaks)
A DIY scraper requests a PitchBook profile URL and parses the rendered page:
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://pitchbook.com/profiles/company/752821-12",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Overview, description, and contact fields render as labeled key/value
# blocks; funding history, cap table, and full investor list render as
# gated "Request a free trial" / "request access" panels with no data
It demos and then breaks:
- The ToS is explicit, and it quantifies the penalty. Section 4.3 names scrapers, robots, bots, spiders, and data-mining tools directly, and the stated remedy — delete the data and pay 150% of direct-data pricing — makes this a real cost, not just theoretical risk.
- Most of the page is gated, not scraped-away. Funding/valuation history, the full cap table, the complete investor list, and deal history all render as "Request a free trial" or "request access" prompts with no underlying values — there's nothing to parse there even before the ToS issue.
- Five different profile kinds, five URL shapes. Companies, funds, investors, advisors, and limited partners each live under their own
/profiles/{kind}/{id}path with a slightly different table layout (an investor page has "Co-Investors," a company page has "Investors," a fund page has "Limited Partners"). - No discovery path. There's no public autocomplete or search you're meant to crawl — you already need to know the profile id or URL, and PitchBook's own search pages are excluded in
robots.txt.
Option 2: No-code tools
Marketplace scraper actors exist for one-off PitchBook profile pulls, and they can grab a page's teaser fields into a spreadsheet. They don't hold up for anything recurring — no scheduling, no consistent schema across the five profile kinds, and the same Terms of Use exposure as DIY, since Section 4.3 names "any other device, program, tool, algorithm, process or methodology," not just custom code.
Option 3: A structured PitchBook API
For a repeatable, permission-scoped workflow, a PitchBook scraping API returns normalized JSON for all five profile kinds — no page parsing, no gated-panel guesswork. Pull a company profile by id or source URL:
curl "https://api.crawlora.net/api/v1/pitchbook/company?id=752821-12" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"kind": "company",
"id": "752821-12",
"name": "Thinking Machines Lab",
"description": "Developer of artificial intelligence systems designed to support the research and development of AI technologies.",
"overview": {
"Year Founded": "2024",
"Status": "Private",
"Employees": "130",
"Latest Deal Type": "Early Stage VC",
"Investors": "23"
},
"contact": {
"Website": "http://www.thinkingmachines.ai",
"Ownership Status": "Privately Held (backing)",
"Financing Status": "Venture Capital-Backed",
"Primary Industry": "Business/Productivity Software",
"Corporate Office": "95 3rd Street, 2nd Floor, San Francisco, CA 94103, United States"
},
"tables": [
{
"name": "Investors",
"total": 23,
"columns": ["Investor Name", "Investor Type", "Holding", "Investor Since", "Participating Rounds"],
"rows": [["Accel", "Venture Capital", "Minority", "", ""]]
}
],
"faqs": [
{ "question": "When was Thinking Machines Lab founded?", "answer": "Thinking Machines Lab was founded in 2024." }
],
"source_url": "https://pitchbook.com/profiles/company/752821-12",
"fetched_at": "2026-07-08T20:00:00Z"
}
}
The other four kinds — advisor, fund, investor, and limited partner — share the exact same envelope, with kind and the overview/contact labels changing per type:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/pitchbook"
company = requests.get(f"{base}/company", headers=h, params={"id": "752821-12"}).json()["data"]
investor = requests.get(f"{base}/investor", headers=h, params={"id": "294471-37"}).json()["data"]
fund = requests.get(f"{base}/fund", headers=h, params={"url": "https://pitchbook.com/profiles/fund/19719-91F"}).json()["data"]
{
"code": 200,
"msg": "OK",
"data": {
"kind": "investor",
"id": "294471-37",
"name": "Better Capital (California)",
"description": "Founded in 2006, Better Capital is a venture capital firm based in Santa Clara, California.",
"overview": {
"Investor Type": "Venture Capital",
"Status": "Active",
"Investments": "339",
"Portfolio": "218",
"Exits": "49"
},
"contact": {
"Website": "http://www.bettercapital.vc",
"Investor Status": "Actively Seeking New Investments",
"Corporate Office": "1600 Duane Avenue, Santa Clara, CA 95148, United States"
},
"tables": [
{
"name": "Co-Investors",
"total": 843,
"columns": ["Name", "With", "Exits", "Lead Partner", "Series", "Industry"],
"rows": [["Astir Ventures", "33", "", "", "", ""]]
}
],
"source_url": "https://pitchbook.com/profiles/investor/294471-37",
"fetched_at": "2026-07-08T20:00:00Z"
}
}
Advisor, fund, and limited-partner profiles work identically — swap the path (/pitchbook/advisor, /pitchbook/fund, /pitchbook/limited-partner) and pass either id or url. Store one row per profile and re-run on a schedule to track changes to headcount, investor count, or deal credits over time.
What you can collect
Per profile (company, fund, investor, advisor, or limited partner): the profile kind and id, name, a text description, an overview block of type-specific summary fields (year founded, status, employee count, investor/investment/portfolio/exit counts, fund size and vintage, or professional count, depending on kind), a contact block (website, ownership/financing status, primary industry, corporate office), a tables array with whatever sample relationship table that profile type exposes publicly (Investors, Co-Investors, or Limited Partners — with a total count but only a handful of visible rows), a short faqs array, plus source_url and fetched_at. Public teaser data only.
Limitations and common challenges
- Teaser depth, not terminal depth. This mirrors exactly what a logged-out visitor sees on a public PitchBook profile page — a few overview and contact fields, a description, and a handful of sample table rows. Full funding and valuation history, complete cap tables, the entire investor or LP list, and deal-by-deal detail are gated behind PitchBook's own login and require its paid platform or a licensed Direct Data / API contract to see in full.
- No search or discovery endpoint. There's no PitchBook autocomplete or search endpoint here, and PitchBook's own
/searchand/profiles/searchpaths are excluded from crawling in itsrobots.txtanyway — profile ids and URLs typically come from a web search, a press release, or another dataset you already have, not from crawling PitchBook itself. - Five profile kinds, five id namespaces. A company id like
752821-12and an investor id like294471-37aren't interchangeable across endpoints — request the matching kind for the id or URL you have. - ToS-gated with a real enforcement clause. PitchBook's Section 4.3 explicitly bans scrapers and bots and names a 150%-of-pricing penalty plus mandatory data deletion for violating it — scope any project to genuinely public reference use, and go through PitchBook's own Direct Data team for anything at commercial scale.
- Public data only. This collects what PitchBook already shows a logged-out visitor — never a way to reconstruct PitchBook's underlying deal, valuation, or cap-table database, which is the product PitchBook itself sells as an enterprise platform subscription.
Where this gets used
- Deal-sourcing and prospecting tools — enrich a target list of companies or investors with PitchBook's public identifiers as one signal alongside other sources.
- Competitive and market research — track a company's public status, industry classification, and investor count over time.
- LP/GP relationship mapping — cross-reference limited partners, fund managers, and co-investment patterns from public profile data.
- CRM and research-doc enrichment — attach a verified PitchBook profile link and summary fields to an internal company or investor record.
Sources
Start collecting
Try it first, free: run any public URL through the Free Web Scraper, or check whether a site blocks bots with the Anti-Bot Checker — no signup.
Test the company, fund, investor, advisor, and limited-partner endpoints in the Playground, check the schema in the API docs, and review pricing. Funding data tells you who's backing a company; Product Hunt launch and traction data tells you whether the market actually noticed — pair the two for a startup research pipeline that covers capital and demand. On the people side, how to scrape GitHub covers the developer-activity signal that often precedes a funding round in the first place. For the bootstrapped side of the same market — companies that skipped the VC round entirely — how to scrape TrustMRR covers verified revenue and MRR for indie SaaS. See the broader alternative data use case for how private-market signals like this fit into a research pipeline.
Part of our how-to-scrape guide series — every platform we cover, in one index.
Frequently asked questions
Does PitchBook have a public API?
No self-serve one. PitchBook's own API is a separate contract sold through its Direct Data team, not a signup-and-get-a-key product.
Is it legal to scrape PitchBook?
PitchBook's Terms of Use (Section 4.3) explicitly prohibit scrapers, robots, bots, spiders, and data-mining tools from systematically accessing or copying the Site or Content, with a stated penalty of 150% of direct-data pricing plus mandatory deletion. This guide covers only the public teaser fields a logged-out visitor already sees; get PitchBook's own license for anything at scale. Not legal advice.
What does PitchBook's paid terminal cover that this public data doesn't?
The paid platform (and its licensed Direct Data/API contract) unlocks full funding and valuation history, complete cap tables, the entire investor or LP list, and deal-by-deal detail. The public profile view — and this API — only returns the overview, description, contact fields, and a handful of sample table rows that PitchBook displays without a login.
How much does a PitchBook subscription cost?
PitchBook doesn't publish pricing; buyer reports commonly cite roughly $12,000-$70,000+/year depending on seats and data modules, sold through a sales contract rather than self-serve checkout.
Can I get a full list of a company's investors from this API?
No — the tables field returns a sample of rows (matching what the public page shows) plus a total count, not the complete list. The full investor, LP, or deal table is gated behind PitchBook's own login.
Is there a PitchBook company search endpoint?
Not in this API, and PitchBook's own robots.txt excludes /search and /profiles/search from crawling. You supply a known profile id or URL rather than discovering one through the API.
What profile types does the PitchBook API cover?
Five: company, fund, investor, advisor, and limited partner. Each returns the same JSON envelope with kind-specific overview and contact fields.