Docs/Sources/Institutional Holdings

Institutional Holdings

Get 13F Holdings by Fund Manager or by Stock

OperationalCredits 5 per callp50 284msFinance

Overview

Data comes from the SEC's Form 13F data sets (public), one zip per three-month filing window. A daily collector checks the SEC listing and, when a data set is new or revised, rebuilds the affected quarter: it reads every 13F-HR in the window for that quarter end plus late filings from the next window, keeps the latest original or restatement per manager and adds NEW HOLDINGS amendments to it. Rows for the same security, put/call and manager are merged. The latest eight quarter ends are kept; requests are served from that store, never from SEC live.

Change fields compare each position with the same manager's report for the previous stored quarter, matched on CUSIP and put/call. A position missing from the previous report is `new`; one in the previous report but not this one is `soldout` (shares 0, shown only with `changeType=soldout`). When the manager filed no report for the previous quarter, or the quarter is the oldest stored, every change field is null. `value` is in US dollars as filed (13F values have been reported in dollars since 2023), and `portfolioPercent` is value over the manager's total reported value, options included.

Tickers: 13F identifies securities by CUSIP, and CUSIP tables are licensed, so none is used. A CUSIP gets a ticker from SEC fails-to-deliver files (which list CUSIP and symbol), or, for common stock with a valid CUSIP check digit, from an exact issuer-name match against SEC company_tickers.json that resolves to a single company. Otherwise `ticker` is null; a ticker can map to several CUSIPs (`otherCusips`). `turnoverPercent` estimates buys and sells from share changes priced at this quarter's value per share and divides the lesser by the average of this and last quarter's total value.

Live Test Institutional Holdings Source →

Formula

One function covers the whole catalog: the first argument names the source, the next are its inputs, and the field after them says which single value lands in the cell. Formulas covers the grammar that applies to all of them.

=VERVE("institutionalholdings", "mode")

Inputs

Required inputs are positional, in the order below, followed by the field. Everything else is passed as a "name", value pair after that — the same shape as SUMIFS. Premium inputs are accepted on every plan but only take effect on plans that include them.

InputTypeWhere it goesDescription
cikOptionalstring"cik", valueSEC Central Index Key of the 13F filer, e.g. 1067983 for Berkshire Hathaway. Returns that manager's holdings.
length 0–10
managerOptionalstring"manager", valueManager name to search for instead of cik, e.g. bridgewater. The best match is returned, with other close matches in otherMatches.
length 0–100
tickerOptionalstring"ticker", valueTicker symbol. Alone, lists the managers holding it; with cik or manager, filters that manager's holdings to it.
length 0–10
cusipOptionalstring"cusip", value9-character CUSIP. Alone, lists the managers holding it; with cik or manager, filters that manager's holdings to it.
length 8–9
periodOptionalPremiumstring"period", valueQuarter to read, as a quarter end (2026-03-31) or quarter (2026Q1). Defaults to the latest quarter.
changeTypeOptionalstring"changeType", valueOnly positions that are new, increased, decreased, unchanged or soldout since the previous quarter. Sold-out positions appear only with soldout.
newincreaseddecreasedunchangedsoldout
putCallOptionalstring"putCall", valueOption filter: put, call, none (shares and principal only) or all. Defaults to all.
putcallnoneall
minValueOptionalnumber"minValue", valueOnly positions worth at least this many US dollars.
range 0–∞
maxValueOptionalnumber"maxValue", valueOnly positions worth at most this many US dollars.
range 0–∞
sortOptionalstring"sort", valueSort by value (default), shares, change (share change), changepercent or portfolio (weight).
valueshareschangechangepercentportfolio
orderOptionalstring"order", valueSort order: desc (default) or asc.
descasc
limitOptionalPremiuminteger"limit", valueRows to return (1-100). Defaults to 10.
range 1–100
offsetOptionalPremiuminteger"offset", valueRows to skip, for paging through a large portfolio or holder list.
range 0–∞
summaryOptionalPremiumboolean"summary", valueAdd a summary: for a manager, value change, position counts by change type, top-10 concentration and turnover; for a security, holder flows and top-10 share concentration.

Passing an option

=VERVE("institutionalholdings", "mode", "cik", 1067983)

What lands in your sheet

The field — the argument after the inputs — is what makes the formula resolve to one cell. Its value is a dot-path from the table below, so swapping it is how you pull a different value — one formula per column.

Seeing everything at once

Leave the field out and the formula returns the whole response instead: two columns, field name on the left and value on the right, spilling from the cell you typed in.

=VERVE("institutionalholdings")
Good for exploring, not for filling down

The second row's table would land on top of the first's, and every cell after the first reads #REF! (#SPILL! in Excel). Keep one per sheet, or name a field, and leave the cells below and to the right empty.

Response fields

Paths are relative to data. Each one is exactly what the field argument accepts, so swapping it is how you pull a different value into a cell. On a plan without a Premium field the cell reads #PREMIUM(field) rather than a value, so a locked field never looks like a real answer.

Use as the fieldTypeExample cell valueDescription
modestringmanagermanager (a manager's holdings) or holders (the managers holding a security)
periodstring2026-06-30Quarter-end date of the report (YYYY-MM-DD)
quarterstring2026Q2Quarter of the report, e.g. 2026Q2
previousPeriodstring2026-03-31Quarter the change fields compare against; null when there is no earlier report
managerobject{…}Manager mode: the 13F filer
manager.cikstring0001067983SEC Central Index Key, 10 digits
manager.namestringBerkshire Hathaway IncFiling manager name
manager.citystringOmahaCity of the filing manager
manager.statestringNEState or country code of the filing manager
filingobject{…}Manager mode: the report the holdings come from
filing.formTypestring13F-HR13F-HR, or 13F-HR/A when a restatement replaced the original
filing.accessionNumberstring0001193125-26-352200SEC accession number
filing.filingDatestring2026-08-14Date the report was filed (YYYY-MM-DD)
filing.amendmentsnumber0Amendments filed for this quarter
filing.urlstringhttps://www.sec.gov/Archives/edgar/data/1067983/000119312526352200/EDGAR folder of the filing
totalValuenumber299253556246Manager mode: total reported value in US dollars; holders mode: total value of share positions in the security
positionCountnumber29Manager mode: number of positions reported
countnumber5Rows returned
offsetnumber0Rows skipped
totalMatchesnumber29Rows matching the filters before paging
holdingsarray[5]Manager mode: positions, largest first by default
holdings.0.issuerstringAPPLE INCIssuer name as filed
holdings.0.tickerstringAAPLTicker matched through SEC data, or null
holdings.0.cusipstring037833100CUSIP
holdings.0.figistringBBG001S5N8V8FIGI when the filer supplied one, else null
holdings.0.titleOfClassstringCOMClass of security as filed
holdings.0.sharesnumber227917808Shares, or principal amount when shareType is PRN; 0 for a sold-out position
holdings.0.shareTypestringSHSH (shares) or PRN (principal amount)
holdings.0.valuenumber65950296923Reported value in US dollars
holdings.0.portfolioPercentnumber22.0383Value as a percent of the manager's total reported value
holdings.0.putCallobjectnullPut or Call for option positions, null for shares
holdings.0.investmentDiscretionstringDFNDSOLE, DFND (shared-defined) or OTR (shared-other); MIXED when rows differed
holdings.0.votingAuthorityobject{…}Shares by voting authority
holdings.0.votingAuthority.solenumber227917808Shares with sole voting authority
holdings.0.votingAuthority.sharednumber0Shares with shared voting authority
holdings.0.votingAuthority.nonenumber0Shares with no voting authority
holdings.0.previousSharesnumber227917808Shares in the previous quarter (0 for a new position); null without an earlier report
holdings.0.previousValuenumber57843260493Value in the previous quarter in US dollars; null without an earlier report
holdings.0.shareChangenumber0Change in shares since the previous quarter
holdings.0.shareChangePercentnumber0Change in shares in percent; null for a new position
holdings.0.valueChangenumber8107036430Change in value in US dollars
holdings.0.changeTypestringunchangednew, increased, decreased, unchanged or soldout
holdings.0.isNewbooleanfalseTrue when the position was not held in the previous quarter

When a cell doesn't fill

A failed lookup returns readable text starting with #ERR rather than a spreadsheet error, because Excel cannot show a custom message on a real error — you would get a bare #VALUE! with no reason. The trade-off is that IFERROR() will not catch it; test with LEFT(cell, 4) = "#ERR" instead. Error handling covers the rest.

Cell readsWhat happened
#ERR Not connectedNo API key saved. Open the side panel and connect your account.
#ERR Replace <name> with a cell or valueA preview formula was copied as-is. Swap the placeholder for a cell reference.
#ERR No "x" in institutionalholdingsAn option name this source does not take. The message lists the ones it does.
#ERR No data point "…"The field path is not in the response. Check it against the table above.
#PREMIUM(field)The field exists but your plan does not include it.
#ERR Out of creditsThe cycle's credits are spent. Usage resets on your billing date.

Before the formula works

The add-in reads the API key you saved once in the side panel — the key never goes in the formula, so a shared sheet does not leak it and a collaborator without access simply sees the last calculated values.

  1. Install the add-in for Google Sheets or Excel.
  2. Open the side panel and sign in, or paste a key from your dashboard.
  3. Type the formula above into any cell.

Use cases

Fund Tracking Apps
Investor apps follow well-known managers each quarter, showing new buys, adds, trims and exits straight from the change fields.
Institutional Ownership Pages
Stock research sites list the largest institutional holders of a ticker with their share changes and how many funds entered or exited.
Investor Relations Monitoring
IR teams watch which institutions built or cut positions in their own stock and peers' stocks after each 13F deadline.
Quant Signals
Researchers measure crowding and conviction from holder counts, top-10 concentration and quarter-over-quarter flows across thousands of managers.

Other ways to use Institutional Holdings

Set up Institutional Holdings on VerveSheets, or reach the same source a different way. Your VerveSheets account and credits work on all of them — one key, one balance.

Call it as a REST APIOne HTTPS endpoint and an x-api-key header, with SDKs for Node, Python and .NET.APIVerve →Reference →
Give it to an AI agentConnect over MCP and your agent calls it as a native tool — Claude, Cursor, ChatGPT.VerveKit →Reference →
Ground an agent on itA cited, machine-checkable fact your model can't produce on its own.VerveContext →Reference →

More in Finance:

Was this page helpful?