/api/v1/ownership/aggregation/by-industry13D/G activity aggregated per industry — finer-grained sibling of by-sector with identical semantics and coverage accounting.
13D/G activity aggregated per industry — finer-grained sibling of by-sector with identical semantics and coverage accounting.
10 tokensSince v3.130.0
Why use this
Identical construction and coverage semantics to by-sector, one level finer. Same four rules: one row per filing rather than per filer, dollars and counts only at group level, 13D priced at the event-date close while 13G is counts-only, and conversions excluded from flow. Industry is resolved through the same single lookup as sector, so an issuer missing from the daily equity snapshot is excluded here too and reported in `meta.coverage.filings_ungrouped`.
Common use case
Narrow a sector signal to the industry driving it; find the industries where 5%-plus holders are most active.
Per-industry 13D/G aggregation. Same rules and coverage semantics as by-sector, one level finer.
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. | 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. Continuous. | 11.5 |
| maxOwnership | query | optional | — | — | Maximum aggregate percent-of-class per filing. | 20 |
| direction | query | optional | — | — | `up` / `down` position-change filter (share-change signal, percent fallback). | up |
| minPercentChange | query | optional | — | — | Minimum absolute percent-of-class change for amendments. | 1 |
| limit | query | optional | 50 | — | Maximum industry rows (1-500), ranked by total priced flow then filing count. | 50 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| data[].group | string | no | Industry name, same taxonomy as the sector cut. |
| data[].filings | integer | no | 13D/G filings in the window for this industry. |
| data[].companies | integer | no | Distinct issuers touched. |
| data[].holders | integer | no | Distinct beneficial holders, unified identity. |
| data[].form_13d | object | no | 13D counts plus dollar flow. |
| data[].form_13g | object | no | 13G counts only. |
| data[].conversions | object | no | `{to_13d, to_13g, total}`, excluded from flow. |
Sample response
·
- "status": "success"
- "data":
- "meta":
- "groupBy": "industry"
- "dateFrom": "2026-06-27"
- "dateTo": "2026-07-27"
- "returned": 1
- "totalGroups": 78
- "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-industry?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).