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}/portfolioRequest
{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
filtersof 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
filtersof List of Transactions.
| param | type | description |
|---|---|---|
id | string (uuid) | Path parameter. The investor whose portfolio to return. Required. |
page | integer | 1-indexed page number. Default 1, minimum 1. |
limit | integer | Page size. Default 100, maximum 1000. page * limit may not exceed 10,000. |
target_id | repeated (uuid) | Keep only these portfolio companies, by company ID. Up to 100 ids, one per parameter (?target_id=A&target_id=B). |
country | repeated | Keep companies headquartered in any of these countries (ISO 3166-1 alpha-3, e.g. IND). |
region | repeated | Keep companies in any of these regions (e.g. South Asia). |
verticals | tag filter | Keep companies tagged with any of these verticals, or with all of them (see below). |
themes | tag filter | Same, for themes. |
client_focus | tag filter | Same, for client focus (e.g. B2B). |
revenue_model | tag filter | Same, for revenue model (e.g. Subscription). |
company_type | tag filter | Same, for company type. |
deal_type | repeated | Keep deals of any of these types (e.g. Venture, M&A). |
deal_subtype | repeated | Keep deals of any of these subtypes (e.g. Seed, Series A). |
valuation_min, valuation_max | number | Deal valuation bounds, millions USD. |
revenue_min, revenue_max | number | Target's revenue at the time of the deal, millions USD. |
ebitda_min, ebitda_max | number | Target's EBITDA at the time of the deal, millions USD. Can be negative. |
ev_revenue_min, ev_revenue_max | number | EV/Revenue multiple of the deal. |
ev_ebitda_min, ev_ebitda_max | number | EV/EBITDA multiple of the deal. |
How the filters combine:
- Different parameters combine with AND:
?country=IND&themes=B2B%20SaaSkeeps Indian B2B SaaS companies.target_idcombines 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=100keeps 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_countandled_any_rounddescribe 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), andmin/maxare 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_typeanddeal_subtypetake plain values only, since a company or deal has one of each. - Filters apply to the whole portfolio before paging, so
meta.totalcounts only matching companies and you are charged only for the companies returned. - Unknown values return
400and name the closest matches, e.g.unknown country value "India"; did you mean "IND"?orunknown deal_type value "Series A"; "Series A" is a deal subtype, filter on deal_subtype. A number that doesn't parse returnsvaluation_min must be a single number. Accepted values are on Filter values. An empty value (?country=) is an unknown value. - A
target_idthat is not a UUID, or several ids joined with commas in one value, returns400withtarget_id contains an invalid UUID (repeat the parameter for each id: target_id=...&target_id=...). - Any other query parameter (for example
sortorfields) returns400withunknown 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=10The 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-6aa931f7dfcbThe 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=3Response
{
"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
| field | type | description |
|---|---|---|
id | string (uuid) | Company identifier. Pass to /companies/{id} or /transactions for more detail. |
name | string | null | Company display name. |
short_name | string | null | Shortened display name. |
website | string | null | Company website URL. |
country | string | null | ISO 3166-1 alpha-3 country code. |
Participation
| field | type | description |
|---|---|---|
first_invested | string (date) | null | Date of this investor's earliest round in this company. |
last_invested | string (date) | null | Date of this investor's most recent round in this company. |
rounds_count | integer | Number of rounds in this company in which this investor participated. |
led_any_round | boolean | true if this investor led at least one of those rounds. |
Meta
| field | type | description |
|---|---|---|
meta.page | integer | 1-indexed page number echoed back. |
meta.limit | integer | Page size used. |
meta.returned | integer | Rows in this response. |
meta.total | integer | Total companies in this investor's portfolio matching the query (always a count for this endpoint). |
meta.has_more | boolean | true when further pages remain within the 10,000-row window. |
meta.usage | object | Records this call used against the monthly quota. See Rate Limits. |