Skip to content
/api/v1/form-13f/aggregation/by-sector

Get institutional fund flows aggregated by sector and industry with momentum labels, flow significance metrics, and top movers drill-down.

Get institutional fund flows aggregated by sector and industry with momentum labels, flow significance metrics, and top movers drill-down. Response includes quarter_metadata (quarter, filing_deadline, is_complete, days_until_deadline) indicating whether the quarter's data is complete or still accumulating.

free

Why use this

Pre-aggregated sector-level 13F analytics with nested industry breakdown. Each sector includes flow significance (fund_flow/total_value %), momentum classification (Strong Buying to Strong Selling), ETF value tracking, and confidence flags. Industries include top 5 movers per industry. Supports quarter-over-quarter comparison.

Common use case

Building a sector rotation dashboard showing where institutional money is flowing. Drill from 'Technology is seeing Strong Buying' to 'Semiconductors is the driver' to 'NVDA, AMD, AVGO are the top movers'. Use ?compare=prev to highlight momentum shifts between quarters.

Pre-aggregated sector- and industry-level 13F analytics — the headline endpoint that powers sector-rotation dashboards. Backed by the sec_13f_sector_summary materialized view (refreshed ~6h post-filing). Each sector carries flow significance (fund_flow / total_value * 100), a 5-tier momentum classification (Strong Buying to Strong Selling), ETF-vs-active value split, and a nested industry breakdown — drill from 'Technology is seeing Strong Buying' to 'Semiconductors is the driver' to 'NVDA, AMD, AVGO are the top movers' in a single API call.

Use ?compare=prev to surface quarter-over-quarter momentum shifts (e.g. 'Q3 was Strong Growth Rotation but Q4 shifted to Strong Value Rotation') — useful for macro-rotation alerting. Combine with GET /api/v1/form-13f/market-rotation for value/growth and cyclical/defensive bucket-level rotation signals at the macro tier.

Designed for the 'portfolio managers tracking sector rotation across institutional holders' persona — combine with GET /api/v1/form-13f/aggregation/by-ticker for per-ticker drill-down within a sector. The confidence field gates display: filter to high confidence only when surfacing actionable signals during early filing season (when sparse data could mislead). All monetary values are in USD (post-Plan-51 thousands correction).

Parameters

NameInRequiredDefaultAllowedDescriptionExample
quarterqueryoptionalReport period YYYY-MM-DD (e.g. 2025-12-31). Defaults to latest available quarter.2025Q4
comparequeryoptionalSet to 'prev' to include quarter-over-quarter deltas per sector: flow_change, momentum_shift, fund_count_change, value_change_pct.false
industry_limitqueryoptional15Max industries per direction (inflows + outflows) per sector. Use 'all' for full breakdown. Range: 1-100.
sortqueryoptionalfund_flow'fund_flow' (absolute $) or 'significance' (flow_significance_pct). Applies to both sector and industry ordering.filed_at

Response schema

FieldTypeNullableDescription
statusstringnoAlways `success` on a 2xx response. Custom envelope (not the standard `ApiResponse`) — carries `data` directly with `quarter`, `sector_count`, `sectors[]`, `quarter_metadata`.
data.quarterstringnoISO `YYYY-MM-DD` reporting quarter (always a calendar quarter end). Echoed from the request; defaults to the latest available quarter.
data.sector_countintegernoTotal number of sectors with non-zero institutional flow this quarter. Typically 10-11 (the standard Sharadar sector taxonomy).
data.sectorsarraynoPer-sector aggregation rows from `sec_13f_sector_summary`. Sorted by `sort` parameter (default: `fund_flow DESC`). Each sector carries top-N industries (per `industry_limit`) with their top-5 movers — drill-down structure suitable for a 3-level navigation UI (sector → industry → ticker).
data.sectors[].sectorstringnoSharadar sector classification (e.g. `Technology`, `Healthcare`, `Financial Services`, `Energy`, `Utilities`, `Consumer Cyclical`, `Consumer Defensive`, `Industrials`, `Basic Materials`, `Communication Services`, `Real Estate`).
data.sectors[].fund_flownumbernoNet dollar flow into the sector this quarter, in USD (post-Plan-51 thousands correction). Positive = net institutional buying; negative = net selling. The headline sector-rotation metric.
data.sectors[].total_valuenumbernoTotal institutional position value in this sector this quarter, in USD. Sum of `value_usd` across all positions held by tracked funds in this sector.
data.sectors[].fund_countintegernoNumber of distinct funds with at least one position in this sector. Sectors with high fund_count + high fund_flow indicate broad institutional consensus on the sector direction.
data.sectors[].etf_valuenumbernoSub-aggregate of `total_value` that comes from ETF positions (`security_group=ETFs`). Useful for distinguishing active sector bets (high non-ETF value) from passive index exposure (high ETF value). Computed as `total_value - sum(non-etf positions)`.
data.sectors[].flow_significance_pctnumberno`fund_flow / total_value * 100` — measures flow significance relative to sector size. A 20% flow_significance_pct means institutions added 20% more value than they currently hold (very strong inflow). Used for the `momentum` classification.
data.sectors[].momentumstringno5-tier momentum label derived from `flow_significance_pct`: `Strong Buying` (≥10%), `Moderate Buying` (≥3%), `Neutral` (-3 to +3%), `Moderate Selling` (≤-3%), `Strong Selling` (≤-10%). The single most-used field for sector-rotation dashboards.
data.sectors[].confidencestringnoData-quality confidence flag: `high` (sector has >100 funds + filing_progress >80%), `medium` (>30 funds OR >50% complete), `low` (sparse coverage). Use to gate downstream display ('Show only high-confidence signals').
data.sectors[].industriesobjectnoIndustry-level breakdown: `{ inflows: [...], outflows: [...] }`. Each direction is sorted by `fund_flow` (inflows DESC, outflows ASC by absolute value). Page size capped by `industry_limit` (default 15, max 100, or `all` for full breakdown).
data.sectors[].industries.inflows[]objectnoPer-industry inflow row: `{ industry, fund_flow, total_value, fund_count, top_movers: [...] }`. `top_movers` is a top-5 list of CUSIPs by absolute fund_flow within the industry.
data.sectors[].industries.inflows[].top_movers[]objectnoPer-CUSIP mover row: `{ cusip, ticker, name, fund_flow, total_value }`. The 'NVDA, AMD, AVGO drove Semiconductor inflows' drill-down. Limited to 5 per industry to keep payload bounded.
data.sectors[].compareobjectyesQoQ comparison block — present ONLY when `?compare=prev`. Shape: `{ flow_change, momentum_shift, fund_count_change, value_change_pct }`. `momentum_shift` is a string like `'Strong Growth -> Moderate Value'` indicating cross-tier movement.
data.quarter_metadataobjectnoFiling-completeness state for the quarter: `{ quarter, filing_deadline, is_complete, days_until_deadline }`. Same shape as [GET /api/v1/form-13f/filing-progress](/docs/institutional-holdings/filing-progress-tracking/get-form-13f-filing-progress). `is_complete=false` during filing season — gate downstream sector-rotation analysis until the quarter has matured.

Sample response

·
  • "status": "success"
  • "data":
    • "quarter": "2025-12-31"
    • "sector_count": 11
    • "sectors":
    • "quarter_metadata":
    }
}

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/form-13f/aggregation/by-sector" \
  -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).