Skip to content
/api/v1/tickers/{ticker}/fund-trends

Historical quarterly fund ownership trends aggregated from ALL 9,600+ 13F filers (form_13f_holdings).

Historical quarterly fund ownership trends aggregated from ALL 9,600+ 13F filers (form_13f_holdings). CUSIP successor chain expansion and amendment deduplication included. Split-adjusted share counts. Returns per-quarter totals for shares, value, fund count, and computed deltas (fund flow, share change %).

10 tokensSince v1.3.3

Why use this

Quarterly time-series of institutional fund ownership for a ticker — drives the 'Fund Ownership' chart on every company-overview page. Aggregates ALL 9,600+ 13F filers (post-v3.3.0 rewrite — the legacy implementation was limited to 668 tracked funds). Includes CUSIP successor-chain expansion so M&A continuity is preserved across corporate actions (e.g. PFE/Wyeth merger, T/Time Warner spinoff, GOOGL share-class restructuring). Split-adjusted share counts so cross-quarter trends remain visually clean across 2-for-1 / 4-for-1 splits. The canonical answer to 'are funds buying or selling this name?' — pair with `/tickers/{ticker}/holders` for the current-quarter holder list at the same completeness level. Post-v3.7.1 fix uses fair-comparison QoQ (`fund_count_prev` only counts funds that filed in BOTH quarters), so AAPL Q4 2025 fund_change_pct now shows +11% instead of the misleading -98% the old logic produced.

Quarterly time-series of institutional fund ownership for a ticker — drives the "Fund Ownership" chart on company-overview pages. Queries ALL 9,600+ 13F filers (not the legacy 668-fund subset; rewritten in v3.3.0). Includes CUSIP successor-chain expansion so M&A continuity is preserved (e.g. PFE/Wyeth, T/Time Warner). Split-adjusted share counts. Use GET /api/v1/tickers/{ticker}/holders for the current-quarter holder list at the same level of completeness.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
tickerpathrequiredStock ticker (case-insensitive). Server normalizes to canonical hyphen form (`BRK.A`/`BRK/A`/`BRKA` → `BRK-A`). Multi-class issuers preserve the requested class — `GOOGL` and `GOOG` return distinct trends. Returns 404 if the ticker has been delisted with no successor in our chain table; for canonical resolution see `/api/v1/cusip-successors`.AAPL
limitqueryoptional20Maximum quarters to return (oldest-first ordering; FinRadar coverage starts 2013-Q1). Defaults to 20 (~5 years of history). Capped at 40 (~10 years). For full history beyond 10 years use `POST /api/v1/form-13f/holdings` with date-range chunking.20

Response schema

FieldTypeNullableDescription
tickerstringnoTicker echoed back in canonical hyphen form (e.g. `BRK-A`). Useful for asserting your client passed the ticker you intended after server-side normalization.
trendsarraynoArray of quarterly aggregate rows, sorted by `period ASC` (oldest first — chart-friendly ordering). One row per quarter where ANY 13F filer held the ticker. Empty array for tickers no fund has ever held (most pre-IPO and very-thinly-held names).
trends[].periodstringnoISO `YYYY-MM-DD` quarter-end date (always 03-31 / 06-30 / 09-30 / 12-31). The 13F filing for this period was due 45 days later. Most-recent quarter may be partially populated during the 45-day filing window — see `/form-13f/filing-progress` for completeness gauge.
trends[].fund_countintegernoNumber of distinct 13F filers holding the ticker as of `period`. Counts unique CIKs (one per fund family) — Fidelity, Vanguard, BlackRock are 1 each despite running thousands of underlying funds. Mega-cap names typically have 3000-5000 filers; small-caps 50-300; micro-caps 1-30.
trends[].total_sharesnumbernoAggregate share count across all funds holding the ticker, SPLIT-ADJUSTED to most recent split via Sharadar's split-adjustment factor. So a pre-2020 4-for-1 AAPL split is normalized to current-shares basis, making cross-quarter trends visually clean. For as-filed (un-adjusted) shares use `POST /api/v1/form-13f/holdings`.
trends[].total_value_usdnumbernoAggregate position USD value across all funds, post-Plan 51 holdings-quality correction (handles the thousands-vs-actual-dollars reporting issue). NOT mark-to-most-recent-price — uses the value as filed for that quarter (which is mark-to-quarter-end-price). For the price-adjusted view across quarters, multiply `total_shares` by your reference price.
trends[].fund_change_pctnumberyesQuarter-over-quarter percent change in `fund_count`, using FAIR-COMPARISON logic (post-v3.9.0 fix): `fund_count_prev` only counts funds that filed in BOTH quarters, so the metric correctly captures incremental adoption rather than being polluted by funds that simply skipped a quarterly filing. Null on the first row (no prior baseline).
trends[].shares_change_pctnumberyesQuarter-over-quarter percent change in `total_shares`, computed on split-adjusted shares so corporate actions don't manufacture artificial spikes. Positive = aggregate fund flow IN; negative = aggregate fund flow OUT. Null on the first row (no prior baseline).

Sample response

·
  • "data":
    • "ticker": "AAPL"
    • "security_name": "APPLE INC"
    • "quarters":
    }
}

Errors

StatusLabelDescription
200OKRequest succeeded.
400Bad RequestInvalid query, body, or path parameter.
401UnauthorizedMissing or invalid Authorization header / api_Token.
402Payment RequiredInsufficient token balance for this call. Top up
429Too Many RequestsRate limit exceeded for your tier (see /pricing for tier limits). Tier limits
500Server ErrorUnexpected server-side failure. Retry with backoff; report if persistent.

Code samples

curl "https://api.finradar.ai/api/v1/tickers/{ticker}/fund-trends?api_Token=YOUR_API_KEY" \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"

Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).

Try it

Related endpoints