Skip to content
/api/v1/ownership/beneficial-ownership/groups

List 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

NameInRequiredDefaultAllowedDescriptionExample
issuerCikqueryoptionalFilter 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
activeOnlyqueryoptionaltrueWhen `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
pagequeryoptional11-based page number.1
sizequeryoptional50Page size, capped at 200 server-side. `meta.total` / `meta.totalPages` report the full result size.50

Response schema

FieldTypeNullableDescription
dataarraynoArray 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[].idnumbernoStable 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[].groupNamestringyesDisplay name built from the first member names on the formation filing (e.g. `TRIAN FUND MANAGEMENT LP / NELSON PELTZ (+2 others)`).
data[].issuerCikstringnoTarget issuer CIK, unpadded. The company the coordinated group is filing against.
data[].issuerNamestringyesIssuer name as filed on the group's filings.
data[].membersarraynoArray 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[].aggregatePercentnumberyesThe 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[].aggregateSharesnumberyesAggregate share count as stated on the group's latest filing. NOT split-adjusted — preserves the as-filed view.
data[].formationDatestringyesDate of the earliest filing that evidenced this group (ISO date).
data[].isActivebooleannoDerived 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[].latestFiledAtstringyesISO-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[].latestAccessionNostringyesAccession 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

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/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).

Try it

Related endpoints