How to Detect Institutional Buying and Selling
Detect institutional buying and selling from quarter-over-quarter 13F position changes via API, each row citing its SEC accession number.

A 13F institutional-ownership API should answer one question directly: is a fund building this stock, cutting it, or gone entirely? Getting there from raw SEC data means three separate hassles: resolving every filed CUSIP to a ticker, scraping and pulling two separate quarterly snapshots yourself, and diffing them by hand to derive the change. StockFit's /api/ownership/institutional-holders does all three in one call: the prior quarter's shares ride along on the same row, and every position carries the SEC accession number it came from. This post walks through detecting accumulation and distribution in Apple's institutional base with live data, the voting-authority field almost nobody writes about, and where the accession-number audit trail actually holds up against five named competitors.
What Form 13F-HR discloses
Any institutional investment manager exercising discretion over $100 million or more in Section 13(f) securities must file Form 13F-HR with the SEC within 45 calendar days of each calendar quarter's end. The filing lists every reportable position: issuer, class of security, share or principal amount, market value, the manager's investment discretion over it, and a three-way voting-authority breakdown (sole, shared, or none) per position. Well over 8,000 managers file it each quarter, from BlackRock down to single-person family offices that happen to clear the threshold. The 45-day window itself has real consequences for how fresh a "latest quarter" answer actually is, charted in detail in why 13F filing data is always 45 days stale.
The full mechanics live in the SEC's own Form 13F instructions. The two fields this post spends the most time on, quarter-over-quarter share changes and voting authority, are both disclosed on every row but rarely surfaced by a general-purpose ownership API.
Getting a stock's institutional holders via one API call
One call returns every institutional holder of a ticker for a given quarter, aggregated by manager, paired with the prior quarter for change tracking:
curl 'https://api.stockfit.io/v1/api/ownership/institutional-holders?symbol=AAPL&reportDate=2025-12-31&pageSize=3' \
-H 'Authorization: Bearer $STOCKFIT_API_KEY'{
"data": [
{
"managerName": "VANGUARD GROUP INC", "managerCik": 102909,
"shares": 1279051701, "value": 347722995434, "pctOfShares": 8.76,
"prevShares": 1256765319, "prevPctOfShares": 8.6,
"soleVoting": 0, "sharedVoting": 0, "noneVoting": 1279051701,
"reportDate": "2025-12-31", "accessionNumber": "0000102909-26-000031"
},
{
"managerName": "BlackRock, Inc.", "managerCik": 2012383,
"shares": 1156410254, "value": 314381691515, "pctOfShares": 7.92,
"prevShares": 1147921797, "prevPctOfShares": 7.86,
"soleVoting": 1036827570, "sharedVoting": 0, "noneVoting": 119582684,
"reportDate": "2025-12-31", "accessionNumber": "0002012383-26-000920"
}
// ...
]
}Every row already carries accessionNumber, the exact 13F-HR that position came from. Given just that number, /api/filings/search-by-accession-number resolves the underlying filing directly, so a share count is never a bare, unverifiable figure.
The inverse view, /api/ownership/portfolio, takes a manager's CIK instead of a ticker and returns that manager's full portfolio, each position already resolved from its filed CUSIP to a ticker symbol. Berkshire Hathaway's (CIK 1067983) 2025-03-31 13F-HR is a real example: the raw filing identifies its Coca-Cola stake by CUSIP 191216100, the API hands it back as "symbol": "KO" alongside 282,722,729 shares worth $20.2 billion, with American Express (AXP) and Occidental Petroleum (OXY) resolved the same way on adjacent rows. A vendor feed that only hands back the raw CUSIP pushes that lookup onto the caller.
Detecting accumulation and distribution across quarters
prevShares and prevPctOfShares on every row answer the single-quarter question for free, but a real accumulation or distribution signal needs more than one comparison. We pulled four consecutive clean quarters of AAPL's two largest holders, Vanguard and BlackRock, by pinning reportDate to each quarter end in turn.
The two managers do not move together. BlackRock climbs in every single quarter shown, 7.8% to 7.92% of shares outstanding, a slow, steady accumulation. Vanguard is the opposite of steady: it rises from 9.11% to 9.19% through the first half of the year, then drops to 8.6% in the third quarter, a real distribution quarter, before partially recovering to 8.76%. Two funds frequently grouped together as "passive index money" behaving this differently in the same stock over the same four quarters is exactly the kind of pattern a single-quarter snapshot cannot show.
For the aggregate view across many more quarters at once, /api/ownership/institutional-holders/history returns holder count, total shares, and total value per quarter without paging through individual managers, useful for spotting a market-wide buildup or exit rather than one manager's.
One case the current-quarter list cannot show directly: a manager that exits a position entirely has no row at all in the new quarter, not a row with a small number. Detecting a full exit means comparing the set of manager CIKs present in one quarter against the set present in the next and flagging whoever disappeared, not scanning the current list for a low share count.
Voting authority: sole, shared, and none explained
Every 13F position also discloses how much of it the manager can vote directly. The SEC's own Form 13F instructions define three categories per position: sole (the manager alone votes those shares), shared (voting authority is split with another party), and none (the manager holds the position but does not vote it, commonly because that right passes through to someone else, such as underlying fund shareholders or a separate proxy process). A manager can, and often does, split a single position across all three categories on the same row.
The same AAPL quarter shows three genuinely different profiles. Vanguard reports 100% of its stake as none, BlackRock reports the large majority as sole, and State Street splits across all three categories on the same position. This is disclosed data, not a derived estimate, and each manager's three figures sum exactly to its total reported shares, a useful integrity check on any voting-authority pipeline built on this data.
What Form 13F leaves out
Form 13F-HR covers long positions in Section 13(f) securities only: common stock, certain convertible debt, and a narrow set of exchange-traded options. It does not require disclosure of short positions, cash, most fixed income, or non-US holdings, and a manager is explicitly instructed not to net a short position against a long one. A fund holding a large long position on Form 13F can simultaneously run an offsetting short or swap-based bet elsewhere with no trace in this dataset, so a percent-of-shares figure here describes gross long exposure, never a manager's true net position.
The other well-known gap is timing, not content: every figure in this post is real but already up to 45 days old by the time a quarter's filings finish trickling in, the subject of our own filing-lag study across more than 8,000 real filings.
13F vs 13D/13G vs Form 4: which ownership data to use
Three SEC ownership regimes answer three different questions, and 13F is only one of them. Form 13F-HR is the wide institutional book: every position above the reporting threshold, across every manager with $100M+ under management, filed quarterly. Schedule 13D and 13G cover concentrated stakes above 5% of a single company with passive-or-activist intent attached, detailed in our beneficial ownership API guide. Forms 3, 4, and 5 cover officers, directors, and 10%-owners trading their own company's stock, often within two business days. Picking the wrong one for a given question is the most common mistake here: 13F for the broad institutional base, 13D/13G for a concentrated strategic stake, Form 4 for what the people running the company are doing with their own shares.
How the accession-number audit trail compares
Ask any 13F API three questions before trusting it: does a specific holding row cite the filing it came from, does a CUSIP resolve to a ticker automatically, and what does that cost? Financial Modeling Prep's institutional-ownership endpoint and Intrinio's both return a manager's CIK on each row but no accession number or filing link, so a position cannot be traced back to its source filing without a separate lookup. sec-api.io does carry an accession number, but only on the parent filing object, one join away from the individual manager's holding row, and its 13F dataset sits behind its $199/month Business tier. Massive (formerly Polygon.io) is the one competitor here that matches StockFit's row-level citation directly, flattening an accession number and filing URL onto every holding row the same way StockFit does.
Where StockFit still differs from Massive is the surrounding surface and the price of entry: automatic CUSIP-to-ticker resolution, the sole/shared/none voting-authority breakdown, and the prior quarter's shares built into the same row, all on the $59/month Stock plan ($39/month billed annually) rather than gated behind a higher tier. The full institutional-ownership surface, including manager-by-manager portfolios and quarter-over-quarter activity, is covered on the hedge fund data page. /api/ownership/summary rolls institutional, beneficial, and insider ownership into a single call for a first look, and /api/company/details, the ticker on-ramp used throughout this post, is on the free tier. to try it, no credit card required.
FAQ
Q.How do I detect a hedge fund building or exiting a position using 13F data?
reportDate on /api/ownership/institutional-holders to a completed quarter and read prevShares and prevPctOfShares directly off the same row, no second call needed for a single quarter's change. For a multi-quarter trend, repeat the pin across several quarter ends, as this post does for Vanguard and BlackRock's AAPL stake. A full exit will not appear as a low-share row, the manager simply has no row at all in the new quarter, so detecting an exit means comparing the set of manager CIKs between two quarters rather than scanning share counts.Q.What do sole, shared, and none mean in 13F voting-authority data?
Q.Can 13F institutional ownership data show a fund's true net long or short exposure?
Q.What is the difference between 13F institutional ownership and 13D/13G beneficial ownership?
Q.Does the institutional ownership API resolve CUSIP to a ticker automatically?
Q.Does StockFit's institutional ownership API include the SEC accession number on every row?
Q.How current is 13F institutional ownership data?
Q.Which StockFit plan includes institutional ownership data?
Ready to build?
Free API key, no credit card.