Multiples

Investor Portfolio

Introduction

Returns the companies a single investor has funded, one row per company, with a compact summary of that investor's participation (when they first and last invested, how many rounds, and whether they ever led).

Use it to build an investor's portfolio view, gauge activity recency, or fan out to the company and transaction endpoints for deeper detail.

Results are offset-paginated and ordered by the investor's first investment in each company (first_invested), most recent first.

Set up

Endpoint

GET https://multiples.vc/api/private/v1/investors/{id}/portfolio

Request

{id} is the investor's UUID. Pagination is controlled with the page and limit query parameters. target_id keeps only the companies you name. Two kinds of filters narrow the portfolio before the page is cut, both passed as query parameters:

  • Company filters keep companies by their own attributes. They use the same names, values and rules as the filters of List of Companies.
  • Deal filters keep the investor's deals that match, and a company stays in the portfolio if at least one of them does. They use the same names, values and rules as the filters of List of Transactions.
paramtypedescription
idstring (uuid)Path parameter. The investor whose portfolio to return. Required.
pageinteger1-indexed page number. Default 1, minimum 1.
limitintegerPage size. Default 100, maximum 1000. page * limit may not exceed 10,000.
target_idrepeated (uuid)Keep only these portfolio companies, by company ID. Up to 100 ids, one per parameter (?target_id=A&target_id=B).
countryrepeatedKeep companies headquartered in any of these countries (ISO 3166-1 alpha-3, e.g. IND).
regionrepeatedKeep companies in any of these regions (e.g. South Asia).
verticalstag filterKeep companies tagged with any of these verticals, or with all of them (see below).
themestag filterSame, for themes.
client_focustag filterSame, for client focus (e.g. B2B).
revenue_modeltag filterSame, for revenue model (e.g. Subscription).
company_typetag filterSame, for company type.
deal_typerepeatedKeep deals of any of these types (e.g. Venture, M&A).
deal_subtyperepeatedKeep deals of any of these subtypes (e.g. Seed, Series A).
valuation_min, valuation_maxnumberDeal valuation bounds, millions USD.
revenue_min, revenue_maxnumberTarget's revenue at the time of the deal, millions USD.
ebitda_min, ebitda_maxnumberTarget's EBITDA at the time of the deal, millions USD. Can be negative.
ev_revenue_min, ev_revenue_maxnumberEV/Revenue multiple of the deal.
ev_ebitda_min, ev_ebitda_maxnumberEV/EBITDA multiple of the deal.

How the filters combine:

  • Different parameters combine with AND: ?country=IND&themes=B2B%20SaaS keeps Indian B2B SaaS companies. target_id combines the same way with every other filter.
  • Repeating a parameter matches any of its values: ?country=IND&country=SGP.
  • Deal filters work per deal: ?deal_subtype=Series%20A&valuation_min=100 keeps companies where the investor took part in a Series A valued at 100M USD or more. With deal filters set, first_invested, last_invested, rounds_count and led_any_round describe the matching deals only.
  • A deal whose value or multiple is not disclosed doesn't match a bound on that value. Number bounds take one value each (valuation_min=50), and min/max are inclusive.
  • A tag filter may instead be one JSON object to match every listed value: ?themes={"all":["B2B SaaS","FinTech"]} (URL-encode it). It can't be mixed with plain values for the same parameter, and {"all": []} is rejected. country, region, deal_type and deal_subtype take plain values only, since a company or deal has one of each.
  • Filters apply to the whole portfolio before paging, so meta.total counts only matching companies and you are charged only for the companies returned.
  • Unknown values return 400 and name the closest matches, e.g. unknown country value "India"; did you mean "IND"? or unknown deal_type value "Series A"; "Series A" is a deal subtype, filter on deal_subtype. A number that doesn't parse returns valuation_min must be a single number. Accepted values are on Filter values. An empty value (?country=) is an unknown value.
  • A target_id that is not a UUID, or several ids joined with commas in one value, returns 400 with target_id contains an invalid UUID (repeat the parameter for each id: target_id=...&target_id=...).
  • Any other query parameter (for example sort or fields) returns 400 with unknown query parameter: sort.

Examples:

GET /investors/{id}/portfolio?themes=B2B%20SaaS
GET /investors/{id}/portfolio?country=IND&client_focus=B2B&revenue_model=Subscription
GET /investors/{id}/portfolio?themes=%7B%22all%22%3A%5B%22B2B%20SaaS%22%2C%22FinTech%22%5D%7D
GET /investors/{id}/portfolio?deal_type=Venture&deal_subtype=Series%20A&ev_revenue_min=10

The first returns the investor's B2B SaaS portfolio. The second returns Indian B2B companies with a subscription revenue model. The third returns companies tagged with both B2B SaaS and FinTech. The fourth returns companies where the investor took part in a Series A venture round priced at 10x revenue or more.

One investor-company pair - when Sequoia first and last invested in Anthropic, in how many rounds, and whether it ever led:

GET /investors/9918f9bb-0d74-434d-9029-a44cbee87637/portfolio?target_id=75bdc421-b56b-4624-9c1f-6aa931f7dfcb

The response has one row for Anthropic, or none if the investor never took part in its deals. Add more target_id values to check several companies in one call.

Smaller page (3 most recent investments):

GET /investors/9918f9bb-0d74-434d-9029-a44cbee87637/portfolio?page=1&limit=3

Response

{
  "data": [
    {
      "id": "d092adc6-a48f-4713-8f5e-07bc22d238d5",
      "name": "Standard Intelligence",
      "short_name": "Standard Intelligence",
      "website": "https://si.inc/",
      "country": null,
      "first_invested": "2026-04-29",
      "last_invested": "2026-04-29",
      "rounds_count": 1,
      "led_any_round": true
    },
    {
      "id": "585003b7-0918-449a-b96c-968191f7169d",
      "name": "Parallel",
      "short_name": "Parallel",
      "website": "https://www.parallel.ai",
      "country": "USA",
      "first_invested": "2026-04-27",
      "last_invested": "2026-04-27",
      "rounds_count": 1,
      "led_any_round": true
    },
    {
      "id": "be67af9a-1dcc-4a35-a343-2e3ca1ef4459",
      "name": "Ineffable Intelligence",
      "short_name": "Ineffable Intelligence",
      "website": "https://www.ineffable.ai",
      "country": "GBR",
      "first_invested": "2026-04-26",
      "last_invested": "2026-04-26",
      "rounds_count": 1,
      "led_any_round": true
    }
  ],
  "meta": {
    "page": 1,
    "limit": 3,
    "returned": 3,
    "total": 836,
    "has_more": true,
    "usage": {
      "records_billable": 3,
      "records_charged": 3
    }
  }
}

Note: country is null for the first row; fields are always present, an unavailable value is returned as null (not omitted).

Fields

Each data row is a minimal company reference plus this investor's participation summary in that company.

Company

fieldtypedescription
idstring (uuid)Company identifier. Pass to /companies/{id} or /transactions for more detail.
namestring | nullCompany display name.
short_namestring | nullShortened display name.
websitestring | nullCompany website URL.
countrystring | nullISO 3166-1 alpha-3 country code.

Participation

fieldtypedescription
first_investedstring (date) | nullDate of this investor's earliest round in this company.
last_investedstring (date) | nullDate of this investor's most recent round in this company.
rounds_countintegerNumber of rounds in this company in which this investor participated.
led_any_roundbooleantrue if this investor led at least one of those rounds.

Meta

fieldtypedescription
meta.pageinteger1-indexed page number echoed back.
meta.limitintegerPage size used.
meta.returnedintegerRows in this response.
meta.totalintegerTotal companies in this investor's portfolio matching the query (always a count for this endpoint).
meta.has_morebooleantrue when further pages remain within the 10,000-row window.
meta.usageobjectRecords this call used against the monthly quota. See Rate Limits.

On this page