get_institutional_holdings
Returns 13F holdings — quarterly snapshots of equity positions held by institutional investment managers with $100M+ AUM, filed with the SEC. Each record is one (fund, security, quarter) tuple. Use this when the user asks about: which institutions hold a stock, a fund's portfolio, position changes quarter-over-quarter, or 'whale' activity in a specific name. Reporting lag: up to 45 days after quarter end. A 2026-Q1 filing typically appears in mid-May 2026. The most recent quarter visible always lags real time. Important: 13F covers institutional managers ≥ $100M AUM but does NOT include short positions, cash, options (with rare exceptions), or non-US-listed equities. It's a snapshot of long equity positions only. For 'did the fund increase its AAPL stake?' questions, check the position_change field — values are 'new', 'increased', 'decreased', 'closed', or 'unchanged' relative to the same fund's prior quarter. form: the filing a row comes from, '13F-HR' (the quarter's report) or '13F-HR/A' (an amendment). amendment_type: on an amendment, 'RESTATEMENT' (it replaces the report) or 'NEW HOLDINGS' (it adds positions); null on a 13F-HR. Both are absent on rows stored before they were recorded. Values are US dollars. 13F filings before 2023 report thousands and are multiplied by 1000; a filing that used the other unit is corrected once market prices confirm it: a 2023+ filing in thousands ×1000, a pre-2023 filing already in dollars ÷1000 (units_corrected true; value_as_filed holds the filed number, summed across a security's lines). A few filings whose units could not be confirmed are left as stored: a 2023+ one may read 1000x too low, a pre-2023 one 1000x too high. verification_status: VERIFIED means the filing matches its own totals (its rows add up to the row count and total value it declares). It is not a check against market prices: a filer's own consistent but wrong numbers still read VERIFIED, and so do a few filings stored before the thousands check began. INSUFFICIENT_DATA means that check failed or could not run, or the values look filed in the wrong unit (a 2023+ filing in thousands, or a pre-2023 filing in dollars) but could not be confirmed.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cusip | No | Alternative to ticker — 9-character SEC CUSIP identifier. Useful when a security has multiple share classes with different tickers. | |
| limit | No | Maximum records to return. Default 50, max 500. | |
| cursor | No | Pass the `next_cursor` from the previous response VERBATIM to fetch the next page. Keep every other filter and the sort identical while paging. Omit to start from the top. A quarter of 13F filings runs to far more than 500 rows, so a complete picture requires paging. | |
| ticker | No | Filter to holdings of one stock by US ticker, e.g. 'AAPL'. Case-insensitive. | |
| quarter | No | Period ending date in YYYY-MM-DD form (e.g. '2026-03-31'). Defaults to all quarters available in the database. | |
| sort_by | No | Field used for ordering. Default: market_value (largest positions first). | |
| fund_cik | No | SEC CIK of the fund (10-digit, padded). Preferred over fund_name when known. Berkshire Hathaway = '0001067983'. | |
| fund_name | No | Full or partial fund name; case-insensitive substring match. Examples: 'Berkshire', 'Bridgewater', 'Citadel'. A name of 1-2 characters matches as a whole word within the newest 20,000 holdings by filing date only, and the answer says so; fund_cik searches the full history. | |
| min_value | No | Filter to positions with market_value >= this amount (USD). Use to focus on large positions. | |
| sort_order | No | Default: desc (largest first). | |
| position_change | No | Filter to position-change type. Common queries: 'increased' for funds adding to a position, 'closed' for funds that exited. |