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

List and filter beneficial ownership filings with full structured data.

List and filter beneficial ownership filings with full structured data.

10 tokensSince v3.0.0

Why use this

The screening workhorse for Schedule 13D/13G beneficial-ownership filings — the SEC disclosure regime that requires anyone owning >5% of a public company's voting class to file within 10 days (13D) or annually (13G). Filter by issuer (ticker/CIK), filer (name/CIK), form type (`SC_13D` for active intent, `SC_13G` for passive), minimum ownership %, date range, amendment-only, and 13G→13D conversion-only. The right entry point for activist-investor surveillance ('every 13D filed against a healthcare name this quarter'), passive-fund tracking, and ownership-threshold crossings. Each row carries immediate-predecessor change deltas (`priorPercent`, `priorShares`, `percentChange`, `sharesChange`, `sharesChangePct`, `daysSincePriorFiling`) so amendment chains are first-class. Pair with `/ownership/beneficial-ownership/filings/{accession}` to drill into a single filing's structured payload.

Common use case

Screen for activist positions, track ownership changes over time, find all 13D filings for a specific issuer, filter by purpose category.

Lists Schedule 13D / 13G / 13D-A / 13G-A filings with per-filer position data, immediate-predecessor change deltas, and intent classification. percentChange is percentage-point movement; sharesChangePct uses the verified split-adjusted prior-share denominator. Pair with GET /api/v1/ownership/beneficial-ownership/filings/{accession} to drill into a single filing.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
issuerCikqueryoptional——Filter by issuer CIK (the company being reported on). Leading zeros stripped server-side — `0000320193`, `320193`, and `00320193` all match Apple. Combine with `formType` for issuer-specific scans (e.g. all `SC_13D`s filed against AAPL).0000320193
issuerTickerqueryoptional——Filter by issuer ticker (case-insensitive). Server normalizes to canonical hyphen form (`BRK.A` → `BRK-A`). Multi-class issuers preserve the share class actually filed.AAPL
filerCikqueryoptional——Filter by filer CIK (the entity DOING the reporting — typically a fund or family office). Leading zeros stripped. Use to track one filer's activity across all issuers.0001067983
filerNamequeryoptional——Partial-match search on filer name (case-insensitive `ILIKE '%name%'`). Less precise than `filerCik` but useful when you don't yet know the CIK. Example: `filerName=ICAHN` finds all Carl-Icahn-affiliated filings (Icahn Enterprises LP, Icahn Partners, etc.).BERKSHIRE HATHAWAY
formTypequeryoptional——Form type filter — exactly one of `SC_13D` (active intent — 5-business-day filing window after crossing 5%, 17 CFR 240.13d-1(a)), `SC_13D_A` (13D amendment), `SC_13G` (passive/institutional intent — quarterly, month-end, or 5-business-day clock per filer category), `SC_13G_A` (13G amendment). Note: SEC's published form names use slashes (`SC 13D/A`); FinRadar normalizes to underscores for URL safety.SC_13D
minOwnershipqueryoptional——Minimum aggregate `percent_of_class` threshold. Default behaviour returns ALL filings (including <5% amendments that filed for cessation of beneficial ownership). Set to `5.0` to filter to >5% positions only; set to `10.0` for the 'real material activist' subset; set to `0.01` to also surface near-zero amendments documenting position exits.5
dateFromqueryoptional——Inclusive lower bound on `filedAt` (acceptance date — not the trade date). Format ISO `YYYY-MM-DD`. Useful for incremental-pull workflows: query `dateFrom = last_run_timestamp` to catch only new filings.2026-01-01
dateToqueryoptional——Inclusive upper bound on `filedAt`. Format ISO `YYYY-MM-DD`. Combine with `dateFrom` for closed ranges (e.g. one quarter).2026-04-01
isAmendmentqueryoptional——When `true`, filter to amendment filings only (`SC_13D_A` + `SC_13G_A`). When `false`, filter to original filings only. Omit for both. Most-frequent amendments document position-size changes and ownership-purpose updates.true
isConversionqueryoptional——When `true`, filter to 13G→13D conversions only — i.e. filings where a passive holder upgraded to active intent (often a leading indicator of activist campaigns or going-hostile-on-board signals). When `false`, exclude conversions. Omit for both. Conversions are a small minority of filings (<5%).true
sortqueryoptionalfiledAt—Sort field — one of `filedAt` (default; chronological), `aggregatePercent` (largest position first), `aggregateShares` (largest share count). Combine with `order=desc/asc`.aggregatePercent
orderqueryoptionaldesc—Sort direction — `asc` (oldest/smallest first) or `desc` (newest/largest first; default).desc
pagequeryoptional1—1-based page number for pagination. `page=1` returns the first page; `page=2` returns the next, etc. Combined with `size` to compute offset (`offset = (page - 1) * size`).1
sizequeryoptional50—Page size, capped at 200 server-side. Larger pages reduce round-trips for bulk-export workflows but increase per-request latency. For full corpus enumeration use date-range chunking + `size=200`.50
includequeryoptional——Comma-list of optional payload expansions on LIST rows (added v3.131.0): `items` — the filing's structured per-item values keyed `item1`..`item10` (third-party-parity field names, exactly as the filer stated them); `exhibits` — exhibit metadata (number, type, description, URL; the fetched trading-exhibit text stays detail-endpoint-only for size). An unknown member returns HTTP 400 listing the valid values — a typo can never silently serve less than you asked for. Batched server-side: one extra query per include for the whole page, regardless of page size.items,exhibits

Response schema

FieldTypeNullableDescription
statusstringno—
request_idstringyes—
timestampstringno—
dataarrayno—
data[].accessionNostringyes—
data[].formTypestringyes—
data[].filedAtstringyes—
data[].dateOfEventstringyesOptional; omitted when not applicable.
data[].priorAccessionNostringyesOptional; omitted when not applicable.
data[].secReferenceAccessionNostringyesOptional; omitted when not applicable.
data[].periodEndDatestringyesOptional; omitted when not applicable.
data[].nameOfIssuerstringyesOptional; omitted when not applicable.
data[].titleOfSecuritiesstringyesOptional; omitted when not applicable.
data[].eventDatestringyesOptional; omitted when not applicable.
data[].filerCategorystringyesOptional; omitted when not applicable.
data[].latencyClassstringyesOptional; omitted when not applicable.
data[].dateCrossed5pctstringyesOptional; omitted when not applicable.
data[].convertedFromTypestringyesOptional; omitted when not applicable.
data[].secFilingUrlstringyesOptional; omitted when not applicable.
data[].secIndexUrlstringyesOptional; omitted when not applicable.
data[].primaryDocumentUrlstringyesOptional; omitted when not applicable.
data[].applicableRulestringyesOptional; omitted when not applicable.
data[].createdAtstringyesOptional; omitted when not applicable.
data[].isAmendmentbooleanyesOptional; omitted when not applicable.
data[].amendmentNumberintegeryesOptional; omitted when not applicable.
data[].isConversionbooleanyesOptional; omitted when not applicable.
data[].schedule13gFiledPreviouslybooleanyesOptional; omitted when not applicable.
data[].cusiparraynoOptional; omitted when not applicable.
data[].cusip[]stringno—
data[].issuerobjectno—
data[].issuer.namestringyes—
data[].issuer.cikstringyes—
data[].issuer.tickerstringyes—
data[].issuer.cusipstringyes—
data[].issuer.classOfSecuritiesstringyes—
data[].issuer.sectorstringyes—
data[].issuer.industrystringyes—
data[].aggregatePercentnumberyes—
data[].aggregateSharesnumberyes—
data[].filersarrayno—
data[].filers[].filerNamestringyes—
data[].filers[].filerCikstringyes—
data[].positionsarrayno—
data[].positions[].percentOfClassnumberyes—
data[].positions[].sharesBeneficiallyOwnednumberyes—
data[].purposeobjectnoOptional; omitted when not applicable.
data[].itemsobjectnoOptional; omitted when not applicable.
data[].exhibitsarraynoOptional; omitted when not applicable.
data[].priorPercentnumberyes—
data[].priorSharesnumberyes—
data[].priorSharesAdjustednumberyes—
data[].percentChangenumberyes—
data[].sharesChangenumberyes—
data[].sharesChangePctnumberyes—
data[].daysSincePriorFilingnumberyes—
metaobjectno—
meta.totalintegerno—
meta.pageintegerno—
meta.sizeintegerno—
meta.totalPagesintegerno—

Sample response

·
  • "status": "success"
  • "request_id": null
  • "timestamp": "2026-09-25T12:00:00Z"
  • "data":
    ]
  • "meta":
    • "total": 1
    • "page": 1
    • "size": 50
    • "totalPages": 1
    }
}

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/filings?issuerCik=0000320193&issuerTicker=AAPL&filerCik=0001067983&filerName=BERKSHIRE+HATHAWAY&formType=SC_13D&minOwnership=5&dateFrom=2026-01-01&dateTo=2026-04-01&isAmendment=true&isConversion=true&sort=aggregatePercent&order=desc&page=1&size=50&include=items%2Cexhibits" \
  -H "X-API-Key: YOUR_API_KEY"

Generate an API key in /account/credentials to run live queries (literal YOUR_API_KEY placeholder shown until then).

Try it

Related endpoints