Sign up

Private Markets

Status

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

DimensionCountNotes
Private companies10.6MOperating, acquired, bankrupt, and in-registration; has-ticker/public joins available
Deals / funding rounds3MType, size, pre/post valuation, investor syndicate, round number, IPO pricing
People / executives4.9MCurrent/former board, CEO/founders, positions, education, LinkedIn profiles, affiliated deals
Investors / VCs / PE firms645kType, AUM, dry powder, investment preferences (stage/size/industry/geography), portfolio company counts
Funds100k+Vintage, size, status (open/closed), team, LP base; returns time-series (IRR/DPI/TVPI/RVPI) by fund & period
Limited partners100k+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

PlanSearch (5 credits)Profiles (5 credits)Monthly creditsCost
FreeNoNo1,000$0
StarterAdd-on requiredAdd-on required250,000$99
ProYesYes2,000,000$499
ExpertYesYes5,000,000$999
EnterpriseYesYes20,000,000Custom

À-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 paid private_markets route like every other /company/* path
Note:

Search, suggestions, profiles, and graph traversals share the Private Markets entitlement. Each successful request costs 5 credits.

Typical workflow

  1. Search → find a company, investor, or fund by name/ticker/CIK (5 credits)
  2. Discover → see the result ID and basic metadata (lean columns: name, sector, valuation, location, ticker)
  3. Fetch the profile → /company/{id} returns every field (financials, team, contact, parent, legal status)
  4. Traverse the graph → deals, investors, competitors, board, similar companies, LPs
  5. 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_markets_company* tools also accept companyid as an alias for company_id.

Find an entity

MethodPathMCP toolDescription
GET/api/v3/private_markets/searchprivate_markets_searchFull-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/v3/private_markets/search/suggestprivate_markets_search_suggestTypeahead 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

MethodPathMCP toolDescription
GET/api/v3/private_markets/company/{company_id}private_markets_companyFull company profile: EVERY field (financials, team, contact, parent, sources, classification).
GET/api/v3/private_markets/company/{company_id}/pageprivate_markets_company_pageThe 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/v3/private_markets/company/{company_id}/dossierprivate_markets_company_dossierComplete 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/v3/private_markets/company/{company_id}/valuationprivate_markets_company_valuationA 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/v3/private_markets/company/{company_id}/realtimeprivate_markets_company_realtimeReal-time enrichment overlay: headcount trend, open jobs, latest funding freshness. Short cache (10 min).

Financing history

MethodPathMCP toolDescription
GET/api/v3/private_markets/company/{company_id}/dealsprivate_markets_company_dealsFull deal/funding-round history (newest first): size, type, round, pre/post valuation, investors.
GET/api/v3/private_markets/company/{company_id}/investorsprivate_markets_company_investorsInvestors in the company (via deal↔investor relation): name, AUM, type, preferences.
GET/api/v3/private_markets/company/{company_id}/syndicateprivate_markets_company_syndicateWho 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

MethodPathMCP toolDescription
GET/api/v3/private_markets/company/{company_id}/comparablesprivate_markets_company_comparablesPeers: same sector, 0.2x–5x total raised (size band).
GET/api/v3/private_markets/companiesprivate_markets_companiesScreen 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/v3/private_markets/aggregatesprivate_markets_aggregatesMarket overview: buckets (sector/industry/region/country) with counts, raised, valuation, employee medians.

Investors, funds, people, LPs, deals and advisers

MethodPathMCP toolDescription
GET/api/v3/private_markets/investor/{investor_id}private_markets_investorFull investor profile: type, AUM, dry powder, portfolio, preferences (stage/size/industry/geography).
GET/api/v3/private_markets/fund/{fund_id}private_markets_fundFull fund profile + returns time-series: IRR, DPI, TVPI, RVPI, NAV per period & quartile.
GET/api/v3/private_markets/person/{person_id}private_markets_personFull person profile: roles, positions, board/advisory seats, affiliated deals/funds, education, bio.
GET/api/v3/private_markets/limited_partner/{lp_id}private_markets_limited_partnerFull LP profile: type, AUM, commitments (total/active/by-fund-type), allocation targets.
GET/api/v3/private_markets/deal/{deal_id}private_markets_dealFull deal profile: size, type, valuation, investors, tranches, bonds, loans, synopsis.
GET/api/v3/private_markets/service_provider/{sp_id}private_markets_service_providerAdvisory-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

MethodPathToolWhat it returns
GET/api/v3/private_markets/newsprivate_markets_newsNews 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.

MethodPathMCP toolrelation values
GET/api/v3/private_markets/relationsprivate_markets_relationsNone: lists every queryable relation per entity type (the graph map).
GET/api/v3/private_markets/company/{company_id}/relationsprivate_markets_company_relationscompetitors, 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/v3/private_markets/investor/{investor_id}/relationsprivate_markets_investor_relationsportfolio_companies, funds, co_investors, board, limited_partners, affiliates, deals, locations, news, invest_industries, invest_years, service_providers, entity_types, types
GET/api/v3/private_markets/fund/{fund_id}/relationsprivate_markets_fund_relationsinvestors, lp_commitments, team, portfolio_holdings, close_history, family, service_providers, returns
GET/api/v3/private_markets/deal/{deal_id}/relationsprivate_markets_deal_relationsinvestors, tranches, debt_lenders, sellers, service_providers, bonds, loans, distrib_beneficiaries: who funded, lent into or sold in one round.
GET/api/v3/private_markets/person/{person_id}/relationsprivate_markets_person_relationspositions, 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/v3/private_markets/limited_partner/{lp_id}/relationsprivate_markets_limited_partner_relationsfund_commitments, board, mandates, news, service_providers: which funds an LP committed to and what mandates it runs.
GET/api/v3/private_markets/service_provider/{sp_id}/relationsprivate_markets_service_provider_relationsdeals, 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_unavailable" and error_code: "warehouse_read_failed", 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_markets_archive", "as_of": "..." }. source is a neutral label for where the figures came from, not a vendor name. The modeled /valuation mark reports "source": "tengu_private_valuation" instead, and the /realtime overlay reports "source": "realtime_overlay". When no real-time source has data for the company, /realtime answers 503 paid_data_unavailable and consumes no credits.

Private company news

/api/v3/private_markets/news 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, or null when the source gives only a day), category, image (url, width, height, kind: "photo", or null), companies, coverage (outlets and also, the other outlets with publisher and url) and score. Each company carries id, name, domain, sector, industry_group, verticals, hq, ownership, total_raised_usd_m and last_financing (type, date, size_usd_m).
  • Categories. funding, m_and_a, ipo, partnership, product, people, legal, layoffs and other.
  • Sorting and paging. sort=latest is newest first; sort=top ranks by score. total counts every match, and next_cursor fetches the next page, or is null on the last one. A cursor is tied to its filters and to the feed snapshot it came from: sent with other filters it is a 400 cursor_invalid, and after the feed is rebuilt it is a 409 cursor_expired, so start again from the first page.
  • Facets. facets.sectors and facets.categories count the matches by sector and category. top_companies lists the companies with the most matching stories (company, stories), and is null when company_id or q is set.
  • Freshness. freshness.vendor_through is the newest story the archive holds; it trails real time by one to three weeks. generated_at is when the feed was last rebuilt, and window_days how far back it reaches. is_stale is true, with stale_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 503 with error: "upstream_unavailable" and error_code private_news_feed_unavailable (the feed could not be read) or private_news_feed_unusable (it failed validation), 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 empty 200.

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).

Shell
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.

Shell
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.

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

Shell
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 answers 503 paid_data_unavailable and consumes no credits. That body is the generic unavailable error and does not say which check failed.
  • confidence is very_high, high, medium or low, and sets the band's width; an older anchor or fewer signals widens it.
  • drift_basis is cohort_median when Market Drift was measured from the sector's own deal medians (drift_cohort then names the cohort), and flat_carry_fallback when the cohort was too thin to measure.
  • exit holds cohort base rates by stage (ipo, ma and none sum to 1), not a trained per-company prediction. opportunity_score ranks the company's stage_bucket among the five stage buckets (universe_n: 5) by exit base rate, from 20 for seed to 100 for very_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_version and as_of make a figure reproducible; quote them with it.

Example 6: Who was in each round, and who advised

Shell
# 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) and is_stale (true if >180 days old). The /realtime overlay adds live headcount & job freshness on a 10-minute cache.

  • Going-public detection: If a company went public, the response includes a public_transition block with the IPO date, ticker, and a link to public-equity tools (fundamentals_price_snapshot, fundamentals_company_facts; the block may give their older tengu_v3_ names, which tools/call also accepts). Historical private figures are marked as stale and never presented as current.

  • Search scope: /search covers 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.