Private Markets
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 Wealthnow's alternative data suite, sourced from licensed private-markets archives (updated weekly) with real-time enrichment overlays (headcount, jobs, funding freshness) and automatic going-public detection.
What it is
Private Markets is an institutional-grade private-company intelligence surface. It mirrors the public-equity tools but for the private capital ecosystem: search and discovery (5 credits), 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 / deal / service provider) 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 licensed private-markets 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 licensed 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.
How access works
| Plan | Search (5 credits) | Profiles (5 credits) | Monthly credits | Cost |
|---|---|---|---|---|
| Free | No | No | 1,000 | $0 |
| Starter | Add-on required | Add-on required | 250,000 | $99 |
| Pro | Yes | Yes | 2,000,000 | $499 |
| Expert | Yes | Yes | 5,000,000 | $999 |
| Enterprise | Yes | Yes | 20,000,000 | Custom |
À-la-carte: On Starter, add Private Markets $299/mo (or Private Markets Pro $799/mo for 4× the credits) to unlock search, suggestions, and company/investor/fund profiles without a full upgrade. Pro, Expert and Enterprise already include private_markets, so the add-on is rejected at checkout for those plans.
Credit cost breakdown:
- Search (
/search,/search/suggest): 5 credits (Pro+ or add-on) - Company profile (
/company/{id},/page,/dossier,/valuation,/deals,/investors,/syndicate): 5 credits (Pro+) - Investor / fund / person / LP / deal / service-provider 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): 5 credits (Pro+), a short-cache (10 min) enrichment merge; it is a paidprivate_marketsroute like every other/company/*path
Search, suggestions, profiles, and graph traversals share the Private Markets entitlement. Each successful request costs 5 credits.
Typical workflow
- Search → find a company, investor, or fund by name/ticker/CIK (5 credits)
- 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
Every route below costs 5 credits and needs Pro+ or the Private Markets add-on. The MCP tool
column is the tool name on the MCP server; the
10 private_ tools also accept companyid as an alias for company_id.
Find an entity
| Method | Path | MCP tool | Description |
|---|---|---|---|
GET | /api/ | private_markets_search | Full-universe search by name, ticker or CIK, relevance-ranked so the prominent entity comes first. q, type (company default, investor, fund, person, lp, serviceprovider or all), limit (1–50, default 10), detail (lean default, or full for every column), fields (comma list; overrides detail). Returns a {results} array. |
GET | /api/ | private_ | Typeahead for company names (sub-100ms, same ranking as search); each hit carries website, domain, logo, sector, last-known valuation and ticker. q, limit (1–20, default 8). Returns {results} (company hits only). |
One company
| Method | Path | MCP tool | Description |
|---|---|---|---|
GET | /api/ | private_markets_company | Full company profile: EVERY field (financials, team, contact, parent, sources, classification). |
GET | /api/ | private_ | The company detail page in one render-ready call: identity, key facts, one full time series (valuation, revenue or headcount), financing in progress, per-round syndicate and team. tab (valuation default, revenue or headcount: which series to return in full; the others report availability and point counts), deals (1–500, default 200), team (1–500, default 60). |
GET | /api/ | private_ | Complete detail page in one call: profile + deals + investors + competitors + similar + board. deals (1–200, default 50), peers (1–100, default 25), investors (1–300, default 100), blocks (comma subset of deals, investors, competitors, similar, board; none for the profile only), fields (project the profile to these columns). |
GET | /api/ | private_ | A modeled valuation mark computed by Wealthnow from the licensed deal and company tables: estimate, confidence band, the driver bridge from the last priced round, and cohort exit base rates. Refuses rather than guesses when coverage is thin. No parameters. |
GET | /api/ | private_ | Real-time enrichment overlay: headcount trend, open jobs, latest funding freshness. Short cache (10 min). |
Financing history
| Method | Path | MCP tool | Description |
|---|---|---|---|
GET | /api/ | private_ | Full deal/funding-round history (newest first): size, type, round, pre/post valuation, investors. |
GET | /api/ | private_ | Investors in the company (via deal↔investor relation): name, AUM, type, preferences. |
GET | /api/ | private_ | Who was in each round, who led it, and the check size: one row per deal and investor, joinable to /deals by dealid. limit (1–1000, default 300). |
Peers and screening
| Method | Path | MCP tool | Description |
|---|---|---|---|
GET | /api/ | private_ | Peers: same sector, 0.2x–5x total raised (size band). |
GET | /api/ | private_ | Screen the 10.6M-company universe by sector, industry_group, country, region, financing_status, business_status, free-text q, size (min_raised/max_raised, min_valuation/max_valuation in $ millions, min_employees/max_employees), founded_after/founded_before and has_ticker. status (any default, or active_private for currently private operating companies), sort (totalraised default, lastknownvaluation, employees, yearfounded, lastfinancingdate, revenue or ebitda), desc (default true), limit (1–500, default 50), offset (0–50000, default 0), detail, fields. |
GET | /api/ | private_ | Market overview: buckets (sector/industry/region/country) with counts, raised, valuation, employee medians. |
Investors, funds, people, LPs, deals and advisers
| Method | Path | MCP tool | Description |
|---|---|---|---|
GET | /api/ | private_ | Full investor profile: type, AUM, dry powder, portfolio, preferences (stage/size/industry/geography). |
GET | /api/ | private_markets_fund | Full fund profile + returns time-series: IRR, DPI, TVPI, RVPI, NAV per period & quartile. |
GET | /api/ | private_markets_person | Full person profile: roles, positions, board/advisory seats, affiliated deals/funds, education, bio. |
GET | /api/ | private_ | Full LP profile: type, AUM, commitments (total/active/by-fund-type), allocation targets. |
GET | /api/ | private_markets_deal | Full deal profile: size, type, valuation, investors, tranches, bonds, loans, synopsis. |
GET | /api/ | private_ | Advisory-firm profile (law firm, investment bank, auditor or consultancy behind private-market deals): type, employees, parent and top-level parent, and the count of companies serviced. |
News
| Method | Path | Tool | What it returns |
|---|---|---|---|
GET | /api/v3/private_ | private_markets_news | News about private companies (venture-backed, unbacked or in IPO registration): funding rounds, M&A, IPO filings, partnerships, launches, leadership, legal and layoffs. One story per event, with its other outlets listed, each tagged with its companies. limit (1-100, default 30), sort (latest default, or top), category, sector (a facets.sectors name), company_id, q (headline or company name, matched as whole words), cursor (next_cursor from the previous page). See Private company news. |
Traverse the graph
Each relations route follows one edge per call, chosen with relation, and takes limit (1–500,
default 50). Always pass relation: the service requires it on every relations route and answers
422 validation without it, although the OpenAPI spec marks it optional on all but the
service-provider route. Rows that point at another entity come with that entity's name and key
fields, so you get "Sequoia Capital" rather than a bare id.
| Method | Path | MCP tool | relation values |
|---|---|---|---|
GET | /api/ | private_ | None: lists every queryable relation per entity type (the graph map). |
GET | /api/ | private_ | competitors, investors, board, similar, affiliates, buyside, lead_partners, service_providers, industries, verticals, naics, sic, locations, news, financials, clinical_trials, market_analysis, stock_exchanges, entity_types, morningstar_codes, employee_history, cik_codes |
GET | /api/ | private_ | portfolio_companies, funds, co_investors, board, limited_partners, affiliates, deals, locations, news, invest_industries, invest_years, service_providers, entity_types, types |
GET | /api/ | private_ | investors, lp_commitments, team, portfolio_holdings, close_history, family, service_providers, returns |
GET | /api/ | private_ | investors, tranches, debt_lenders, sellers, service_providers, bonds, loans, distrib_beneficiaries: who funded, lent into or sold in one round. |
GET | /api/ | private_ | positions, board_seats, education, affiliated_deals, affiliated_funds, advisory: where a founder or executive worked, which boards they sit on, which deals they touched. |
GET | /api/ | private_ | fund_commitments, board, mandates, news, service_providers: which funds an LP committed to and what mandates it runs. |
GET | /api/ | private_ | deals, companies, investors, funds, limited_partners, board: the reverse adviser index, answering "which deals did this bank run?" or "who does this law firm work for?". |
A relation with no rows returns an empty rows list, count: 0 and a note, not an error, and
the call is billed. A read that failed or timed out, which is likelier on the largest relations
such as board and competitors, is not an empty relation: the relations routes answer 503
with error: "upstream_ and error_, not billed and
never cached. Its Retry-After (30 to 60 seconds) is when the next read of that relation will be
made; a retry sooner gets the same 503. Inside a dossier or a company page, a relation block that
could not be read carries error: "read_failed" beside the blocks that did read. Time-series
relations (financials, news, employee_history, clinical_trials, market_analysis) come
newest first, and so do an investor's and a service provider's deals and a fund's returns.
The board relation holds the board and the wider team, current and former: rows come current
board first, then current team, then former, each with role_kind (board_current,
team_current, board_former or former), and roles counts the rows served of each kind. On a
hydrated person, primaryposition and primarycompany are that person's current main role
anywhere, not their role at this entity (persons_note says so). The adviser side of the graph
covers about 73.8k service providers.
Endpoints return a JSON envelope: { "ok": true, "timestamp": "...", ...data, "cache": {...}, "source": "private_. source is a neutral label for where the figures came from, not a vendor name. The modeled /valuation mark reports "source": "tengu_ instead, and the /realtime overlay reports "source": "realtime_. When no real-time source has data for the company, /realtime answers 503 paid_ and consumes no credits.
Private company news
/api/v3/private_ serves every story the private-markets news archive holds for a private company over its recent window: one story per event, with the other outlets that ran it, categorised and ranked. It is billed like the other private-markets routes (Pro, 5 credits).
- Stories. Each item has
id,title,summary,url,publisher,publisher_domain,published_date,published_at(an ISO-8601 instant, ornullwhen the source gives only a day),category,image(url,width,height,kind: "photo", ornull),companies,coverage(outletsandalso, the other outlets withpublisherandurl) andscore. Each company carriesid,name,domain,sector,industry_group,verticals,hq,ownership,total_raised_usd_mandlast_financing(type,date,size_usd_m). - Categories.
funding,m_and_a,ipo,partnership,product,people,legal,layoffsandother. - Sorting and paging.
sort=latestis newest first;sort=topranks byscore.totalcounts every match, andnext_cursorfetches the next page, or isnullon the last one. A cursor is tied to its filters and to the feed snapshot it came from: sent with other filters it is a400 cursor_invalid, and after the feed is rebuilt it is a409 cursor_expired, so start again from the first page. - Facets.
facets.sectorsandfacets.categoriescount the matches by sector and category.top_companieslists the companies with the most matching stories (company,stories), and isnullwhencompany_idorqis set. - Freshness.
freshness.vendor_is the newest story the archive holds; it trails real time by one to three weeks.through generated_atis when the feed was last rebuilt, andwindow_dayshow far back it reaches.is_staleistrue, withstale_reasons, when the newest story is more than 30 days old or the feed has not been rebuilt for more than 2 days. - When the feed cannot be read. The route answers
503witherror: "upstream_andunavailable" error_codeprivate_(the feed could not be read) ornews_ feed_ unavailable private_(it failed validation),news_ feed_ unusable Retry-After: 30, and it is not billed. It never answers an empty list in place of a feed it could not read. A feed that loads and matches nothing is an honest empty200.
Examples
Example 1: Search and fetch a company profile
Search for Stripe (5 credits), then fetch its full profile (5 credits). The two successful requests cost 10 credits in total.
# 1. Search for Stripe (returns company ID, basic info, logo_url)curl -H "Authorization: Bearer $WEALTHNOW_API_KEY" \ "https://firm.wealthnow.io/api/v3/private_markets/search?q=stripe&type=company&limit=5" # Response structure:# {# "ok": true,# "timestamp": "2024-12-16T14:22:00Z",# "query": "stripe",# "type": "company",# "count": 1,# "detail": "lean",# "search_mode": "index",# "source": "private_markets_archive",# "as_of": "2024-12-09T00:00:00Z",# "is_stale": false,# "results": [# {# "companyid": "stripe_inc_1234567",# "companyname": "Stripe, Inc.",# "ticker": null,# "exchange": null,# "primaryindustrysector": "Financial Services",# "primaryindustrygroup": "Fintech",# "hqcity": "San Francisco",# "hqlocation": "United States",# "website": "stripe.com",# "domain": "stripe.com",# "logo_url": "https://logo.clearbit.com/stripe.com",# "lastknownvaluation": 95000.0,# "lastknownvaluationdealtype": "Series G",# "totalraised": 18000.5,# "employees": 8000,# "yearfounded": 2010,# "ownershipstatus": "Privately Held",# "cikcode": null# }# ]# } # 2. Fetch the full profile using the companyid from above (5 credits)curl -H "Authorization: Bearer $WEALTHNOW_API_KEY" \ "https://firm.wealthnow.io/api/v3/private_markets/company/stripe_inc_1234567" # Response structure:# {# "ok": true,# "timestamp": "2024-12-16T14:22:15Z",# "company_id": "stripe_inc_1234567",# "found": true,# "field_count": 127,# "source": "private_markets_archive",# "as_of": "2024-12-09T00:00:00Z",# "is_stale": false,# "company": {# "companyid": "stripe_inc_1234567",# "companyname": "Stripe, Inc.",# "companyalsoknownas": "Stripe",# "companylegalname": "Stripe, Inc.",# "descriptionshort": "Fintech and payment processing platform",# "primaryindustrysector": "Financial Services",# "primaryindustrygroup": "Fintech",# "primaryindustrycode": "5812",# "companyfinancingstatus": "Venture Capital-Backed",# "businessstatus": "Generating Revenue",# "ownershipstatus": "Privately Held",# "totalraised": 18000.5,# "lastknownvaluation": 95000.0,# "lastknownvaluationdate": "2024-05-01",# "lastfinancingdate": "2024-05-01",# "lastfinancingdealtype": "Series G",# "employees": 8000,# "yearfounded": 2010,# "website": "stripe.com",# "domain": "stripe.com",# "logo_url": "https://logo.clearbit.com/stripe.com",# "hqlocation": "United States",# "hqcity": "San Francisco",# "hqstate_province": "California",# "hqcountry": "United States",# "cikcode": null,# "ticker": null,# "exchange": null,# "parentcompany": null,# "parentcompanyid": null,# "verticals": ["Financial Services", "Payments"],# "keywords": ["payment processing", "fintech", "payments"],# "...": "127 total fields (financials, contact, social, classification, etc.)"# },# "cache": {# "policy": "weekly",# "ttl_s": 604800,# "requested": false,# "refreshed": false# }# }Example 2: Fetch a fund profile with returns
Get a VC fund's profile and return time-series (IRR/DPI/TVPI).
curl -H "Authorization: Bearer $WEALTHNOW_API_KEY" \ "https://firm.wealthnow.io/api/v3/private_markets/fund/sequoia_capital_fund_2020_1" # Response structure:# {# "ok": true,# "timestamp": "2024-12-16T14:22:30Z",# "fund_id": "sequoia_capital_fund_2020_1",# "found": true,# "source": "private_markets_archive",# "as_of": "2024-12-09T00:00:00Z",# "is_stale": false,# "fund": {# "fundid": "sequoia_capital_fund_2020_1",# "fundname": "Sequoia Capital Fund 2020",# "fundno": "2020",# "investor": "Sequoia Capital",# "vintage": 2020,# "fundstatus": "Active",# "fundsize": 7000.0,# "fundcategory": "Venture Capital",# "fundtype": "VC",# "closedate": "2021-06-15",# "fundtargetsize": 7000.0,# "fundlocation": "United States",# "fundcountry": "United States",# "totalfundinvestments": 165,# "preferredindustry": ["Technology"],# "preferredverticals": ["Enterprise SaaS", "AI/ML"],# "preferredgeography": ["United States", "Europe"],# "preferreddealsize": [50, 500]# },# "returns": [# {# "fundid": "sequoia_capital_fund_2020_1",# "fundname": "Sequoia Capital Fund 2020",# "asofyear": 2024,# "asofquarter": "Q3",# "irr": 45.2,# "dpi": 3.8,# "tvpi": 4.1,# "rvpi": 0.3,# "nav": 2800.0,# "contributed": 7000.0,# "distributed": 10640.0,# "drypowder": 560.0,# "quartile": "Top Quartile"# },# {# "fundid": "sequoia_capital_fund_2020_1",# "fundname": "Sequoia Capital Fund 2020",# "asofyear": 2024,# "asofquarter": "Q2",# "irr": 42.8,# "dpi": 3.5,# "tvpi": 3.8,# "rvpi": 0.3,# "nav": 2950.0,# "contributed": 7000.0,# "distributed": 10150.0,# "drypowder": 450.0,# "quartile": "Top Quartile"# }# ],# "cache": {# "policy": "weekly",# "ttl_s": 604800,# "requested": false,# "refreshed": false# }# }Example 3: Company dossier (profile + deals + investors + board in one call)
Fetch the complete detail page for a company, with all the context you need in a single cached call.
curl -H "Authorization: Bearer $WEALTHNOW_API_KEY" \ "https://firm.wealthnow.io/api/v3/private_markets/company/stripe_inc_1234567/dossier?deals=50&peers=25&investors=100&blocks=deals,investors,competitors,board" # Response structure:# {# "ok": true,# "timestamp": "2024-12-16T14:22:45Z",# "company_id": "stripe_inc_1234567",# "found": true,# "company": {# "companyid": "...",# "companyname": "Stripe, Inc.",# "...": "127 fields"# },# "deals": {# "rows": [# { "dealid": "...", "dealdate": "2024-05-01", "dealtype": "Series G", "dealsize": 6500.0, ... },# { "dealid": "...", "dealdate": "2023-08-01", "dealtype": "Series F", "dealsize": 2800.0, ... }# ],# "count": 12# },# "investors": {# "company_id": "stripe_inc_1234567",# "relation": "investors",# "rows": [# {# "investorid": "sequoia_capital_1",# "investorname": "Sequoia Capital",# "primaryinvestortype": "Venture Capital",# "aum": 250000.0,# "drypowder": 45000.0,# "totalinvestments": 890,# "medianvaluation": 250.0# }# ],# "investors": [# { "investorid": "sequoia_capital_1", "investorname": "Sequoia Capital", ... }# ],# "count": 15# },# "competitors": {# "company_id": "stripe_inc_1234567",# "relation": "competitors",# "rows": [# {# "competitorid": "square_1",# "competitorname": "Square, Inc.",# "totalraised": 2800.0,# "lastknownvaluation": 8000.0# }# ],# "companys": [# { "companyid": "square_1", "companyname": "Square, Inc.", ... }# ],# "count": 8# },# "board": {# "company_id": "stripe_inc_1234567",# "relation": "board",# "rows": [# {# "personid": "ceo_patrick_collison_1",# "fullname": "Patrick Collison",# "primaryposition": "Co-founder & CEO",# "primarycompany": "Stripe, Inc."# }# ],# "persons": [# { "personid": "...", "fullname": "Patrick Collison", ... }# ],# "count": 12# },# "source": "private_markets_archive",# "as_of": "2024-12-09T00:00:00Z",# "is_stale": false,# "cache": { "policy": "weekly", "ttl_s": 604800, "requested": false, "refreshed": false }# }Example 4: The company page, ready to render
/page answers with everything above the fold of a company page. Money comes twice, as a raw
*_musd float in USD millions and as a formatted *_display string. Every series is sorted oldest
first for charting. Each block reports available on its own, so a slow or failing block leaves
the rest of the page intact.
# COMPANY_ID comes from /search or /search/suggestcurl -H "Authorization: Bearer $WEALTHNOW_API_KEY" \ "https://firm.wealthnow.io/api/v3/private_markets/company/$COMPANY_ID/page?tab=valuation" # Illustrative response structure (abridged); values are placeholders, not live data:# {# "ok": true,# "company_id": "<company_id>",# "found": true,# "identity": {"company_id": "<company_id>", "name": "...", "legal_name": "...",# "website": "...", "logo_url": "...", "sector": "...", "hq": "...",# "year_founded": 2015, "ticker": null, "cik": null},# "key_facts": {# "valuation": {"...": "the hero valuation and its basis"},# "total_raised": {"value_musd": 412.5, "value_display": "$412.5M", "units": "usd_millions",# "as_of": "2025-06-30", "basis": "completed_deals", "round_count": 7},# "employees": {"...": "headcount with the date it was measured"},# "last_financing": {"date": "2025-06-30", "deal_type": "...", "round": "Series C",# "size_musd": 150.0, "size_display": "$150.0M", "units": "usd_millions"},# "ownership_status": "Privately Held", "financing_status": "...", "business_status": "..."# },# "tab": "valuation",# "tabs": {"valuation": {"available": true, "count": 5},# "revenue": {"available": false, "count": 0},# "headcount": {"available": true, "count": 24}},# "series": [{"date": "2019-04-02", "valuation_musd": 60.0, "valuation_display": "$60.0M",# "basis": "post", "round": "Series A", "deal_id": "..."}],# "financing_in_progress": {"available": false, "count": 0, "rounds": []},# "syndicate": {"available": true, "count": 18, "available_fields": ["role"], "rows": ["..."]},# "team": {"available": true, "count": 12, "people": [{"person_id": "...", "name": "...", "title": "..."}]},# "units": "usd_millions",# "as_of": "...", "is_stale": false# }A series point's basis is post for a reported post-money valuation and derived_post when it
was reconstructed from pre-money plus deal size. total_raised.basis is completed_deals when it
is summed from the deal history, with the date it holds true at, and company_column when it
falls back to the profile's own figure. The team roster cannot separate current from former
members; team.note says so. For investors, competitors and similar companies, use /dossier.
Example 5: A modeled valuation mark
/valuation is Wealthnow's own model over the licensed tables, not a data vendor's valuation
estimate or exit predictor. The estimate is the last priced round (anchor_musd) plus additive
drivers (Round Momentum, Company Growth, Market Drift, Syndicate Quality) whose
contribution_musd values sum exactly to the estimate minus the anchor.
curl -H "Authorization: Bearer $WEALTHNOW_API_KEY" \ "https://firm.wealthnow.io/api/v3/private_markets/company/$COMPANY_ID/valuation" # Illustrative response structure; values are placeholders, not live data:# {# "ok": true,# "company_id": "<company_id>",# "as_of": "2026-09-19",# "model_version": "tengu-pmv-0.2.0",# "estimate_musd": 1180.0,# "anchor_musd": 1000.0,# "anchor_label": "Series D",# "anchor_date": "2025-03-14",# "interval_lo_musd": 731.6,# "interval_hi_musd": 1628.4,# "confidence": "medium",# "drivers": [# {"label": "Round Momentum", "contribution_musd": 95.0},# {"label": "Company Growth", "contribution_musd": 40.0},# {"label": "Market Drift", "contribution_musd": 42.0},# {"label": "Syndicate Quality", "contribution_musd": 3.0}# ],# "drift_basis": "cohort_median",# "drift_rate": 0.028,# "coverage": {"priced_rounds": 4, "signals": 3, "anchor_age_days": 554,# "revenue_points": 0, "headcount_points": 24, "investors": 17},# "exit": {"success": 0.55, "ipo": 0.1557, "ma": 0.3943, "none": 0.45,# "opportunity_score": 80, "universe_n": 5, "stage_bucket": "late",# "basis": "cohort_base_rate", "note": "..."},# "is_stale": false# }- It refuses rather than guesses. With fewer than two priced rounds, a last priced round more
than six years old, no usable signal, or an unknown
company_id, there is no mark: the route answers503 paid_and consumes no credits. That body is the generic unavailable error and does not say which check failed.data_ unavailable confidenceisvery_high,high,mediumorlow, and sets the band's width; an older anchor or fewer signals widens it.drift_basisiscohort_medianwhen Market Drift was measured from the sector's own deal medians (drift_cohortthen names the cohort), andflat_carry_fallbackwhen the cohort was too thin to measure.exitholds cohort base rates by stage (ipo,maandnonesum to 1), not a trained per-company prediction.opportunity_scoreranks the company'sstage_bucketamong the five stage buckets (universe_n: 5) by exit base rate, from 20 forseedto 100 forvery_late, so it is the same for every company at that stage. It is neither a return nor a rank within the stage. The block is left out when there is not enough round history.model_versionandas_ofmake a figure reproducible; quote them with it.
Example 6: Who was in each round, and who advised
# Per-round syndicate: one row per deal and investor, newest round first, leads firstcurl -H "Authorization: Bearer $WEALTHNOW_API_KEY" \ "https://firm.wealthnow.io/api/v3/private_markets/company/$COMPANY_ID/syndicate?limit=100" # Illustrative response structure; values are placeholders, not live data:# {# "ok": true,# "company_id": "<company_id>",# "rows": [# {"dealid": "<deal_id>", "investorid": "<investor_id>", "investorname": "...",# "role": "lead", "check_musd": null, "holding": null,# "dealdate": "2025-03-14", "round": "Series D", "dealsize_musd": 250.0,# "dealstatus": "Completed"}# ],# "count": 38,# "available_fields": ["role"],# "deals_covered": 6,# "as_of": "...", "is_stale": false# } # The advisory firm itself (SP_ID from /search?type=serviceprovider)curl -H "Authorization: Bearer $WEALTHNOW_API_KEY" \ "https://firm.wealthnow.io/api/v3/private_markets/service_provider/$SP_ID" # Illustrative response structure; values are placeholders, not live data:# {# "ok": true,# "sp_id": "<sp_id>",# "found": true,# "service_provider": {"serviceproviderid": "<sp_id>", "serviceprovidername": "...",# "primaryserviceprovidertype": "Law Firm", "employees": 2400,# "website": "...", "parentcompany": null, "toplevelparent": null,# "servicedcompanies": 5120, "...": "every other column"},# "field_count": 18,# "as_of": "...", "is_stale": false# } # Every deal it worked oncurl -H "Authorization: Bearer $WEALTHNOW_API_KEY" \ "https://firm.wealthnow.io/api/v3/private_markets/service_provider/$SP_ID/relations?relation=deals&limit=50" # Where a founder worked before (PERSON_ID from /search?type=person)curl -H "Authorization: Bearer $WEALTHNOW_API_KEY" \ "https://firm.wealthnow.io/api/v3/private_markets/person/$PERSON_ID/relations?relation=positions" # Illustrative response structure for a relation; values are placeholders:# {# "ok": true,# "person_id": "<person_id>",# "relation": "positions",# "rows": [{"...": "one row per position, every column of the relation"}],# "count": 6,# "as_of": "...", "is_stale": false# }In the syndicate, role is lead, follow or other, and null when the source does not say.
check_musd and holding are null when the warehouse does not carry them; available_fields
lists the ones it does, so a missing column reads as unknown, never as zero or as a follower. A
relations response carries rows and count, plus the linked entities' names when the edge
points at another entity. That list is keyed by the target type plus s: investors, funds,
persons, lps, and companys (spelled that way) for company targets.
Notes
-
Freshness: All data is sourced from weekly licensed 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 (fundamentals_,price_ snapshot fundamentals_; the block may give their oldercompany_ facts tengu_v3_names, whichtools/callalso accepts). Historical private figures are marked as stale and never presented as current. -
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, Expert 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.