Private Markets
The private-capital graph: 10.6M companies, 3M deals, 4.9M people/executives, 645k investors & funds with returns (IRR/DPI/TVPI), and 100k+ limited partners — all searchable, queryable, and connected. The crown jewel of Tengu's alternative data suite, sourced from WRDS PitchBook (updated weekly) with real-time enrichment overlays (headcount, jobs, funding freshness) and automatic going-public detection.
What it is#
Private Markets is a PitchBook-grade private-company intelligence surface. It mirrors the public-equity tools but for the private capital ecosystem: search & discovery (free), full company profiles (5 credits), deal history, investor networks, fund performance (IRR/DPI/TVPI), LP commitments, board composition, and comparables. Every entity (company / investor / fund / person / LP) carries deep taxonomies, financials, and a map to traverse the graph—competitors, co-investors, portfolio companies, limited partners, people, locations, industries.
All data is sourced from WRDS PitchBook snapshots (weekly ingest) and comes with freshness metadata (as_of_ts, is_stale flag) so the Brain never presents stale figures as live. A going-public detector reconciles private-→public transitions in real time, so a company that went public is never confidently called private.
Data coverage#
| Dimension | Count | Notes |
|---|---|---|
| Private companies | 10.6M | Operating, acquired, bankrupt, and in-registration; has-ticker/public joins available |
| Deals / funding rounds | 3M | Type, size, pre/post valuation, investor syndicate, round number, IPO pricing |
| People / executives | 4.9M | Current/former board, CEO/founders, positions, education, LinkedIn profiles, affiliated deals |
| Investors / VCs / PE firms | 645k | Type, AUM, dry powder, investment preferences (stage/size/industry/geography), portfolio company counts |
| Funds | 100k+ | Vintage, size, status (open/closed), team, LP base; returns time-series (IRR/DPI/TVPI/RVPI) by fund & period |
| Limited partners | 100k+ | Institution type, AUM, commitments (total/active/by-fund-type), allocation targets |
EDGAR overlay: Company CIK codes & ticker symbols let you join to public-equity tools; a built-in flag detects and reports when a private company went public (ticker, IPO date, SEC effective date), with direct links to public profiles and filings.
Freshness: All data is a weekly WRDS PitchBook snapshot. Real-time overlays (headcount, jobs, latest funding) are available on /company/{id}/realtime and auto-cache with a 10-minute TTL. Stale data (>180 days old) is flagged in the response; the breaking-news override (?refresh=true) bypasses the 7-day cache for one rebuild.
How access works#
| Plan | Search (free) | Profiles | Monthly credits | Cost |
|---|---|---|---|---|
| Free | ✅ (discovery only) | ❌ | 1,000 | $0 |
| Starter | ✅ | ❌ | 250,000 | $99 |
| Pro | ✅ | ✅ (5 credits) | 2,000,000 | $499 |
| Enterprise | ✅ | ✅ | 20,000,000 | Custom |
À-la-carte: Add Private Markets $299/mo to any paid plan (Starter, Pro, or Enterprise) to unlock the product + 0-credit searches on any plan.
Credit cost breakdown:
- Search (
/search,/search/suggest): 0 credits (discovery, all plans) - Company profile (
/company/{id},/dossier,/deals,/investors): 5 credits (Pro+) - Investor / fund / person / LP / deal profiles: 5 credits (Pro+)
- Screener / comparables / aggregates: 5 credits (Pro+)
- Relations (competitors, board, co-investors, etc.): 5 credits (Pro+)
- Real-time overlay (
/company/{id}/realtime): 0 credits (a lightweight short-cache merge)
Free discovery, paid detail. /search and /search/suggest are always free — they're the typeahead. The paid detail (5 credits) unlocks company profiles and the graph traversals.
Typical workflow#
- Search → find a company, investor, or fund by name/ticker/CIK (free)
- Discover → see the result ID and basic metadata (lean columns: name, sector, valuation, location, ticker)
- Fetch the profile →
/company/{id}returns every field (financials, team, contact, parent, legal status) - Traverse the graph → deals, investors, competitors, board, similar companies, LPs
- For a VC fund → fetch the fund profile + returns time-series (IRR/DPI/TVPI per period)
Optional: Real-time overlay (/realtime) adds headcount trends and live funding freshness (short cache, moves every 10min).
Endpoints#
| Method | Path | Credits | Description |
|---|---|---|---|
GET | /api/v3/private_markets/search | 0 | Full-universe search: companies/investors/funds/people/LPs by name, ticker, CIK. Returns {results} array (lean or full detail). |
GET | /api/v3/private_markets/search/suggest | 0 | Typeahead: company names (sub-100ms, in-memory index). Returns {results} (company hits only). |
GET | /api/v3/private_markets/company/{company_id} | 5 | Full company profile: EVERY field (financials, team, contact, parent, sources, classification). |
GET | /api/v3/private_markets/company/{company_id}/dossier | 5 | Complete detail page in one call: profile + deals + investors + competitors + similar + board (can request subsets via ?blocks=). |
GET | /api/v3/private_markets/company/{company_id}/realtime | 0 | Real-time enrichment overlay: headcount trend, open jobs, latest funding freshness. Short cache (10 min). |
GET | /api/v3/private_markets/company/{company_id}/deals | 5 | Full deal/funding-round history (newest first): size, type, round, pre/post valuation, investors. |
GET | /api/v3/private_markets/company/{company_id}/investors | 5 | Investors in the company (via deal↔investor relation): name, AUM, type, preferences. |
GET | /api/v3/private_markets/company/{company_id}/comparables | 5 | Peers: same sector, 0.2x–5x total raised (size band). |
GET | /api/v3/private_markets/company/{company_id}/relations | 5 | Traverse any relation: competitors, board, similar, affiliates, industries, news, financials, etc. |
GET | /api/v3/private_markets/companies | 5 | Screen the 10.5M-company universe by sector, geo, funding, business status, valuation, employees, founding year. |
GET | /api/v3/private_markets/aggregates | 5 | Market overview: buckets (sector/industry/region/country) with counts, raised, valuation, employee medians. |
GET | /api/v3/private_markets/investor/{investor_id} | 5 | Full investor profile: type, AUM, dry powder, portfolio, preferences (stage/size/industry/geography). |
GET | /api/v3/private_markets/investor/{investor_id}/relations | 5 | Investor relations: portfolio companies, funds, co-investors, LPs, board, investment focus. |
GET | /api/v3/private_markets/fund/{fund_id} | 5 | Full fund profile + returns time-series: IRR, DPI, TVPI, RVPI, NAV per period & quartile. |
GET | /api/v3/private_markets/fund/{fund_id}/relations | 5 | Fund relations: investors, LPs, team, portfolio holdings, close history, family. |
GET | /api/v3/private_markets/person/{person_id} | 5 | Full person profile: roles, positions, board/advisory seats, affiliated deals/funds, education, bio. |
GET | /api/v3/private_markets/limited_partner/{lp_id} | 5 | Full LP profile: type, AUM, commitments (total/active/by-fund-type), allocation targets. |
GET | /api/v3/private_markets/deal/{deal_id} | 5 | Full deal profile: size, type, valuation, investors, tranches, bonds, loans, synopsis. |
GET | /api/v3/private_markets/relations | 0 | List all queryable relations per entity (the graph map). |
All endpoints return a JSON envelope: { "ok": true, "timestamp": "...", ...data, "cache": {...}, "source": "wrds_pitchbook", "as_of": "..." }.
Examples#
Example 1: Search and fetch a company profile#
Search for Stripe (free), then fetch its full profile (5 credits).
1# 1. Search for Stripe (returns company ID, basic info, logo_url)2curl -H "Authorization: Bearer $TENGU_API_KEY" \3 "https://firm.tengu.co/api/v3/private_markets/search?q=stripe&type=company&limit=5"4 5# Response structure:6# {7# "ok": true,8# "timestamp": "2024-12-16T14:22:00Z",9# "query": "stripe",10# "type": "company",11# "count": 1,12# "detail": "lean",13# "search_mode": "index",14# "source": "wrds_pitchbook",15# "as_of": "2024-12-09T00:00:00Z",16# "is_stale": false,17# "results": [18# {19# "companyid": "stripe_inc_1234567",20# "companyname": "Stripe, Inc.",21# "ticker": null,22# "exchange": null,23# "primaryindustrysector": "Financial Services",24# "primaryindustrygroup": "Fintech",25# "hqcity": "San Francisco",26# "hqlocation": "United States",27# "website": "stripe.com",28# "domain": "stripe.com",29# "logo_url": "https://logo.clearbit.com/stripe.com",30# "lastknownvaluation": 95000.0,31# "lastknownvaluationdealtype": "Series G",32# "totalraised": 18000.5,33# "employees": 8000,34# "yearfounded": 2010,35# "ownershipstatus": "Privately Held",36# "cikcode": null37# }38# ]39# }40 41# 2. Fetch the full profile using the companyid from above (5 credits)42curl -H "Authorization: Bearer $TENGU_API_KEY" \43 "https://firm.tengu.co/api/v3/private_markets/company/stripe_inc_1234567"44 45# Response structure:46# {47# "ok": true,48# "timestamp": "2024-12-16T14:22:15Z",49# "company_id": "stripe_inc_1234567",50# "found": true,51# "field_count": 127,52# "source": "wrds_pitchbook",53# "as_of": "2024-12-09T00:00:00Z",54# "is_stale": false,55# "company": {56# "companyid": "stripe_inc_1234567",57# "companyname": "Stripe, Inc.",58# "companyalsoknownas": "Stripe",59# "companylegalname": "Stripe, Inc.",60# "descriptionshort": "Fintech and payment processing platform",61# "primaryindustrysector": "Financial Services",62# "primaryindustrygroup": "Fintech",63# "primaryindustrycode": "5812",64# "companyfinancingstatus": "Venture Capital-Backed",65# "businessstatus": "Generating Revenue",66# "ownershipstatus": "Privately Held",67# "totalraised": 18000.5,68# "lastknownvaluation": 95000.0,69# "lastknownvaluationdate": "2024-05-01",70# "lastfinancingdate": "2024-05-01",71# "lastfinancingdealtype": "Series G",72# "employees": 8000,73# "yearfounded": 2010,74# "website": "stripe.com",75# "domain": "stripe.com",76# "logo_url": "https://logo.clearbit.com/stripe.com",77# "hqlocation": "United States",78# "hqcity": "San Francisco",79# "hqstate_province": "California",80# "hqcountry": "United States",81# "cikcode": null,82# "ticker": null,83# "exchange": null,84# "parentcompany": null,85# "parentcompanyid": null,86# "verticals": ["Financial Services", "Payments"],87# "keywords": ["payment processing", "fintech", "payments"],88# "...": "127 total fields (financials, contact, social, classification, etc.)"89# },90# "cache": {91# "policy": "weekly",92# "ttl_s": 604800,93# "requested": false,94# "refreshed": false95# }96# }1import os, requests2 3# 1. Search (free)4r = requests.get(5 "https://firm.tengu.co/api/v3/private_markets/search",6 params={"q": "stripe", "type": "company", "limit": 5},7 headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},8 timeout=30,9)10r.raise_for_status()11data = r.json()12company_id = data["results"][0]["companyid"] if data["results"] else None13print(f"Found: {data['results'][0]['companyname']}")14print(f"Valuation: ${data['results'][0]['lastknownvaluation']}M")15print(f"Logo: {data['results'][0].get('logo_url')}")16 17# 2. Fetch full profile (5 credits)18if company_id:19 r = requests.get(20 f"https://firm.tengu.co/api/v3/private_markets/company/{company_id}",21 headers={"Authorization": f"Bearer {os.environ['TENGU_API_KEY']}"},22 timeout=30,23 )24 r.raise_for_status()25 profile = r.json()26 company = profile.get("company", {})27 print(f"\nFull profile: {company.get('field_count')} fields")28 print(f"Board/team: {company.get('boardmembers', [])}")29 print(f"Freshness: {profile['as_of']} (stale={profile.get('is_stale')})")Example 2: Fetch a fund profile with returns#
Get a VC fund's profile and return time-series (IRR/DPI/TVPI).
1curl -H "Authorization: Bearer $TENGU_API_KEY" \2 "https://firm.tengu.co/api/v3/private_markets/fund/sequoia_capital_fund_2020_1"3 4# Response structure:5# {6# "ok": true,7# "timestamp": "2024-12-16T14:22:30Z",8# "fund_id": "sequoia_capital_fund_2020_1",9# "found": true,10# "source": "wrds_pitchbook",11# "as_of": "2024-12-09T00:00:00Z",12# "is_stale": false,13# "fund": {14# "fundid": "sequoia_capital_fund_2020_1",15# "fundname": "Sequoia Capital Fund 2020",16# "fundno": "2020",17# "investor": "Sequoia Capital",18# "vintage": 2020,19# "fundstatus": "Active",20# "fundsize": 7000.0,21# "fundcategory": "Venture Capital",22# "fundtype": "VC",23# "closedate": "2021-06-15",24# "fundtargetsize": 7000.0,25# "fundlocation": "United States",26# "fundcountry": "United States",27# "totalfundinvestments": 165,28# "preferredindustry": ["Technology"],29# "preferredverticals": ["Enterprise SaaS", "AI/ML"],30# "preferredgeography": ["United States", "Europe"],31# "preferreddealsize": [50, 500]32# },33# "returns": [34# {35# "fundid": "sequoia_capital_fund_2020_1",36# "fundname": "Sequoia Capital Fund 2020",37# "asofyear": 2024,38# "asofquarter": "Q3",39# "irr": 45.2,40# "dpi": 3.8,41# "tvpi": 4.1,42# "rvpi": 0.3,43# "nav": 2800.0,44# "contributed": 7000.0,45# "distributed": 10640.0,46# "drypowder": 560.0,47# "quartile": "Top Quartile"48# },49# {50# "fundid": "sequoia_capital_fund_2020_1",51# "fundname": "Sequoia Capital Fund 2020",52# "asofyear": 2024,53# "asofquarter": "Q2",54# "irr": 42.8,55# "dpi": 3.5,56# "tvpi": 3.8,57# "rvpi": 0.3,58# "nav": 2950.0,59# "contributed": 7000.0,60# "distributed": 10150.0,61# "drypowder": 450.0,62# "quartile": "Top Quartile"63# }64# ],65# "cache": {66# "policy": "weekly",67# "ttl_s": 604800,68# "requested": false,69# "refreshed": false70# }71# }Example 3: Company dossier (profile + deals + investors + board in one call)#
Fetch the complete detail page for a company — all the context you need in a single cached call.
1curl -H "Authorization: Bearer $TENGU_API_KEY" \2 "https://firm.tengu.co/api/v3/private_markets/company/stripe_inc_1234567/dossier?limit=50&peers=25&investors=100&blocks=deals,investors,competitors,board"3 4# Response structure:5# {6# "ok": true,7# "timestamp": "2024-12-16T14:22:45Z",8# "company_id": "stripe_inc_1234567",9# "found": true,10# "company": {11# "companyid": "...",12# "companyname": "Stripe, Inc.",13# "...": "127 fields"14# },15# "deals": {16# "rows": [17# { "dealid": "...", "dealdate": "2024-05-01", "dealtype": "Series G", "dealsize": 6500.0, ... },18# { "dealid": "...", "dealdate": "2023-08-01", "dealtype": "Series F", "dealsize": 2800.0, ... }19# ],20# "count": 1221# },22# "investors": {23# "company_id": "stripe_inc_1234567",24# "relation": "investors",25# "rows": [26# {27# "investorid": "sequoia_capital_1",28# "investorname": "Sequoia Capital",29# "primaryinvestortype": "Venture Capital",30# "aum": 250000.0,31# "drypowder": 45000.0,32# "totalinvestments": 890,33# "medianvaluation": 250.034# }35# ],36# "investors": [37# { "investorid": "sequoia_capital_1", "investorname": "Sequoia Capital", ... }38# ],39# "count": 1540# },41# "competitors": {42# "company_id": "stripe_inc_1234567",43# "relation": "competitors",44# "rows": [45# {46# "competitorid": "square_1",47# "competitorname": "Square, Inc.",48# "totalraised": 2800.0,49# "lastknownvaluation": 8000.050# }51# ],52# "companies": [53# { "companyid": "square_1", "companyname": "Square, Inc.", ... }54# ],55# "count": 856# },57# "board": {58# "company_id": "stripe_inc_1234567",59# "relation": "board",60# "rows": [61# {62# "personid": "ceo_patrick_collison_1",63# "fullname": "Patrick Collison",64# "primaryposition": "Co-founder & CEO",65# "primarycompany": "Stripe, Inc."66# }67# ],68# "people": [69# { "personid": "...", "fullname": "Patrick Collison", ... }70# ],71# "count": 1272# },73# "source": "wrds_pitchbook",74# "as_of": "2024-12-09T00:00:00Z",75# "is_stale": false,76# "cache": { "policy": "weekly", "ttl_s": 604800, "requested": false, "refreshed": false }77# }Notes#
-
Freshness: All data is sourced from WRDS PitchBook weekly snapshots. Every response carries
as_of(the snapshot date) andis_stale(true if >180 days old). The/realtimeoverlay adds live headcount & job freshness on a 10-minute cache. -
Going-public detection: If a company went public, the response includes a
public_transitionblock with the IPO date, ticker, and a link to public-equity tools (tengu_v3_fundamentals_price_snapshot,tengu_v3_fundamentals_company_facts). Historical private figures are marked as stale and never presented as current. -
Breaking-news override: Add
?refresh=trueto bypass the 7-day cache for one rebuild. Debounced per key (cooldown 30s) and globally capped (20 refreshes/minute) to prevent abuse. -
Search scope:
/searchcovers all 10.6M companies (via a confidence-gated Athena substring match), not just the top-100K index. A tail company (outside the prominent index) is still discoverable. -
Errors: On
402 plan_required, the response body names which plan unlocks Private Markets (Pro or Enterprise, or the $299/mo add-on). No credits charged on any error. -
Rate limits: Pro plan: 600 req/min. Enterprise: 6,000 req/min. See Pricing & credits for details.