/api/v1/ownership/aggregation/by-sector13D/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.
10 tokensSince v3.130.0
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
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| dateFrom | query | optional | — | — | Inclusive lower bound on `filedAt`, ISO `YYYY-MM-DD`. Defaults to 30 days before `dateTo`. Window capped at 366 days. | 2026-06-27 |
| dateTo | query | optional | — | — | Inclusive upper bound on `filedAt`. Defaults to today. Window capped at 366 days (HTTP 400 above). | 2026-07-27 |
| formType | query | optional | — | — | Restrict to exactly one of `SC_13D`, `SC_13D_A`, `SC_13G`, `SC_13G_A`. | SC_13D |
| minOwnership | query | optional | — | — | Minimum aggregate percent-of-class per filing (null-percent filings drop when set). | 11.5 |
| maxOwnership | query | optional | — | — | Maximum aggregate percent-of-class per filing. | 20 |
| direction | query | optional | — | — | `up` = position increases only, `down` = decreases only (share-change signal, percent fallback). | up |
| minPercentChange | query | optional | — | — | Minimum absolute percent-of-class change for amendments. | 1 |
| limit | query | optional | 50 | — | Maximum sector rows (1-500). Groups are ranked by total priced flow across both schedules, then filing count. | 50 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| data[].group | string | no | Sector name, from the same taxonomy the 13D/G filing endpoints serve. |
| data[].filings | integer | no | 13D/G filings in the window for this sector. |
| data[].companies | integer | no | Distinct issuers in the sector touched by a filing. |
| data[].holders | integer | no | Distinct beneficial holders, keyed on unified holder identity. |
| data[].form_13d | object | no | 13D counts plus dollar flow. Identical shape to by-ticker. |
| data[].form_13g | object | no | 13G counts only. No money keys. |
| data[].conversions | object | no | `{to_13d, to_13g, total}`, excluded from flow. |
| meta.coverage.filings_ungrouped | integer | no | Filings 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
| Status | Label | Description |
|---|---|---|
| 200 | OK | Request succeeded. |
| 400 | Bad Request | Invalid query, body, or path parameter. |
| 401 | Unauthorized | Missing or invalid Authorization header / api_Token. |
| 402 | Payment Required | Insufficient token balance for this call. Top up |
| 429 | Too Many Requests | Rate limit exceeded for your tier (see /pricing for tier limits). Tier limits |
| 500 | Server Error | Unexpected 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).