/api/v1/ownership/beneficial-ownership/groupsList group filings where multiple parties act together.
List group filings where multiple parties act together.
10 tokensSince v3.0.0
Why use this
Schedule 13D groups — coordinated filers who file together as a single beneficial-ownership group under SEC Section 13(d)(3) (a 'group' is formed whenever 2+ entities agree to act together for the purpose of acquiring or holding the issuer's securities). Each row lists ALL members + their aggregate position. The most actionable use case is detecting 'wolf pack' formations — 2-5 activist funds quietly coordinating a >5% position before any individual filer crosses the threshold. Also surfaces SPAC sponsor consortia, family-office layered structures, and buyout-fund + management rollups in pre-merger filings. Pair with `/ownership/beneficial-ownership/activists` to see groups whose purpose is classified as activist intent.
Common use case
Identify coordinated investor groups, wolf pack formations.
Schedule 13D groups — coordinated filers who file together as a single beneficial-ownership group. Each row lists all members + their aggregate position. Useful for surfacing "ad-hoc activist coalitions" and SPAC sponsor consortia.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| issuerCik | query | optional | — | — | Filter to groups targeting this issuer (the company being collectively held). Accepts both 10-char zero-padded form (`0000051143`) and unpadded (`51143`). Returns empty array when no groups have ever filed against this issuer (most companies). | 0000051143 |
| activeOnly | query | optional | true | — | When `true` (default), returns only groups whose latest filing was within the last 12 months. Activity is derived from the latest group filing's `filedAt` at query time — the served `isActive` field carries the same derived truth. When `false`, includes historical groups whose campaigns have gone quiet. Set to `false` for activism-history research; leave default for current-state surveillance. | true |
| page | query | optional | 1 | — | 1-based page number. | 1 |
| size | query | optional | 50 | — | Page size, capped at 200 server-side. `meta.total` / `meta.totalPages` report the full result size. | 50 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| data | array | no | Array of group rows, newest group activity first (sorted by the latest member filing's `filedAt` DESC). Each group represents one coordinated filing structure against one issuer; a single issuer can have multiple groups if different consortia have filed separate Schedules. Empty array on no match. Pagination lives in `meta` (`total`, `page`, `size`, `totalPages`). |
| data[].id | number | no | Stable numeric group identifier — re-polls return the same id for the same group. Use as a join key when caching group state across polls. |
| data[].groupName | string | yes | Display name built from the first member names on the formation filing (e.g. `TRIAN FUND MANAGEMENT LP / NELSON PELTZ (+2 others)`). |
| data[].issuerCik | string | no | Target issuer CIK, unpadded. The company the coordinated group is filing against. |
| data[].issuerName | string | yes | Issuer name as filed on the group's filings. |
| data[].members | array | no | Array of member rows: `memberName`, `memberCik` (null for cover-page persons who file without their own CIK), `role`, `isCurrentMember`, `isLeadFiler`, `unifiedHolderUuid`. Length 2-9+ (2 is most common — typical PE LP+GP structure; 5+ usually indicates a multi-party activist coalition). Pass a `memberCik` to `/ownership/beneficial-ownership/filers/{cik}/portfolio` for that member's full book. |
| data[].aggregatePercent | number | yes | The group's aggregate `percent_of_class` as stated on its LATEST filing (never summed across members — member positions overlap by construction). A genuine as-filed 0% (full exit) is served as `0`, never null. |
| data[].aggregateShares | number | yes | Aggregate share count as stated on the group's latest filing. NOT split-adjusted — preserves the as-filed view. |
| data[].formationDate | string | yes | Date of the earliest filing that evidenced this group (ISO date). |
| data[].isActive | boolean | no | Derived at query time: `true` when the group's latest filing is within the last 12 months. This is the same rule `activeOnly` filters on. |
| data[].latestFiledAt | string | yes | ISO-8601 timestamp of the most recent group filing. With `activeOnly=true` this is always within the last 12 months. Use to detect group-state changes. |
| data[].latestAccessionNo | string | yes | Accession number of that latest filing — fetch its full detail from `/ownership/beneficial-ownership/filings/{accession}`. |
Sample response
·
- "data":
- "meta":
- "total": 128
- "page": 1
- "size": 50
- "totalPages": 3
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/beneficial-ownership/groups?api_Token=YOUR_API_KEY&issuerCik=0000051143&activeOnly=true&page=1&size=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).