Skip to content
/api/v1/ownership/aggregation/by-sector

13D/G activity aggregated per sector — the 'where are 5%-plus holders moving' heatmap, with counts always and dollars only where a transaction price is defensible.

13D/G activity aggregated per sector — the 'where are 5%-plus holders moving' heatmap, with counts always and dollars only where a transaction price is defensible.

Why use this

The 13D/G leg of a cross-source sector read, alongside the 13F and Form 4 sector aggregations. Same construction and the same four rules as by-ticker: one row per filing (never per filer), dollars and counts only at group level (share counts and percent of class are NOT additive across issuers and are deliberately absent here), 13D priced at the event-date close while 13G stays counts-only, and schedule conversions excluded from flow. Sector is resolved through the same lookup and the same daily snapshot the 13D/G filing endpoints already use, so classification stays a single source of truth across this API and the website's sector filter. Issuers with no sector match — non-traded BDCs and interval funds, OTC micro-caps, foreign partnerships — are EXCLUDED from the groups and counted in `meta.coverage.filings_ungrouped` rather than silently dropped; in a recent 30-day window that was 29% of filings. Use by-ticker when complete coverage matters more than the sector cut.

Common use case

Show where 5%-plus holders are building or cutting by sector; set the 13D/G leg beside 13F fund flow and insider flow on one sector view.

Per-sector 13D/G aggregation. One row per filing, 13D priced at the event-date close, 13G counts only, conversions excluded, unmatched issuers reported in coverage.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
dateFromqueryoptionalInclusive lower bound on `filedAt`, ISO `YYYY-MM-DD`. Defaults to 30 days before `dateTo`. Window capped at 366 days.2026-06-27
dateToqueryoptionalInclusive upper bound on `filedAt`. Defaults to today. Window capped at 366 days (HTTP 400 above).2026-07-27
formTypequeryoptionalRestrict to exactly one of `SC_13D`, `SC_13D_A`, `SC_13G`, `SC_13G_A`.SC_13D
minOwnershipqueryoptionalMinimum aggregate percent-of-class per filing (null-percent filings drop when set).11.5
maxOwnershipqueryoptionalMaximum aggregate percent-of-class per filing.20
directionqueryoptional`up` = position increases only, `down` = decreases only (share-change signal, percent fallback).up
minPercentChangequeryoptionalMinimum absolute percent-of-class change for amendments.1
limitqueryoptional50Maximum sector rows (1-500). Groups are ranked by total priced flow across both schedules, then filing count.50

Response schema

FieldTypeNullableDescription
data[].groupstringnoSector name, from the same taxonomy the 13D/G filing endpoints serve.
data[].filingsintegerno13D/G filings in the window for this sector.
data[].companiesintegernoDistinct issuers in the sector touched by a filing.
data[].holdersintegernoDistinct beneficial holders, keyed on unified holder identity.
data[].form_13dobjectno13D counts plus dollar flow. Identical shape to by-ticker.
data[].form_13gobjectno13G counts only. No money keys.
data[].conversionsobjectno`{to_13d, to_13g, total}`, excluded from flow.
meta.coverage.filings_ungroupedintegernoFilings excluded because the issuer had no sector match. Read this before treating the sector totals as the whole window.

Sample response

·
  • "status": "success"
  • "data":
    ]
  • "meta":
    • "groupBy": "sector"
    • "dateFrom": "2026-06-27"
    • "dateTo": "2026-07-27"
    • "returned": 1
    • "totalGroups": 11
    • "coverage":
    }
}

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/ownership/aggregation/by-sector?api_Token=YOUR_API_KEY&dateFrom=2026-06-27&dateTo=2026-07-27&formType=SC_13D&minOwnership=11.5&maxOwnership=20&direction=up&minPercentChange=1&limit=50" \
  -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).