/api/v1/ownership/beneficial-ownership/filingsList 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 QoQ change deltas (`priorPercent`, `priorShares`, `percentChange`, `sharesChange`, `daysSincePriorFiling` — added v3.3.2) 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, change deltas, and intent classification. Each row includes priorPercent, priorShares, percentChange, sharesChange, sharesChangePct, and daysSincePriorFiling (added v3.3.2) for amendment-chain analysis. Pair with GET /api/v1/ownership/beneficial-ownership/filings/{accession} to drill into a single filing.
Parameters
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| issuerCik | query | optional | — | — | 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 |
| issuerTicker | query | optional | — | — | 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 |
| filerCik | query | optional | — | — | 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 |
| filerName | query | optional | — | — | 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 |
| formType | query | optional | — | — | Form type filter — exactly one of `SC_13D` (active intent — 10-day filing window after crossing 5%), `SC_13D_A` (13D amendment), `SC_13G` (passive intent — annual), `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 |
| minOwnership | query | optional | — | — | 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 |
| dateFrom | query | optional | — | — | 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 |
| dateTo | query | optional | — | — | Inclusive upper bound on `filedAt`. Format ISO `YYYY-MM-DD`. Combine with `dateFrom` for closed ranges (e.g. one quarter). | 2026-04-01 |
| isAmendment | query | optional | — | — | 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 |
| isConversion | query | optional | — | — | 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 |
| sort | query | optional | filedAt | — | Sort field — one of `filedAt` (default; chronological), `aggregatePercent` (largest position first), `aggregateShares` (largest share count). Combine with `order=desc/asc`. | aggregatePercent |
| order | query | optional | desc | — | Sort direction — `asc` (oldest/smallest first) or `desc` (newest/largest first; default). | desc |
| page | query | optional | 1 | — | 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 |
| size | query | optional | 50 | — | 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 |
Response schema
| Field | Type | Nullable | Description |
|---|---|---|---|
| filings | array | no | Array of filing rows — one row per `(accession_number, filer_cik)` pair (so a 13D filed jointly by 3 group members produces 3 rows). Sorted per the `sort` + `order` parameters. Empty array on no match. |
| filings[].accessionNumber | string | no | SEC accession number in canonical `XXXXXXXXXX-YY-NNNNNN` format. Pass to `/ownership/beneficial-ownership/filings/{accession}` to retrieve the full structured payload (all filers + positions + exhibits + amendment chain). |
| filings[].formType | string | no | Schedule 13D/13G form type — one of `13D` (active intent — 10-day filing window after crossing 5%), `13G` (passive intent — annual filing), `13D/A` (13D amendment), `13G/A` (13G amendment). The `/A` suffix is preserved verbatim. 13D filings carry materially higher signal than 13G — they require disclosing INTENT, not just OWNERSHIP. |
| filings[].filedAt | string | no | ISO-8601 UTC timestamp of SEC EDGAR acceptance. Distinct from `eventDate` (the date that triggered the filing obligation — typically the date the position crossed 5%). For activist surveillance, the `filedAt` lag from `eventDate` is itself a signal (close-to-deadline filings indicate compliance-heavy intent vs proactive disclosure). |
| filings[].issuerCik | string | no | Issuer CIK (the company being reported on, NOT the filer). 10-character zero-padded string. The natural join key against `/api/v1/sec/filings`, `/financials/metrics`, and `/insider-module/api/insiders/transactions/by-ticker/{ticker}`. |
| filings[].issuerTicker | string | yes | Issuer ticker resolved from the issuer CIK via `ticker_norm_aliases`. Null when the issuer has no public-equity ticker (private-company 13D filings against pending mergers, foreign issuers without ADRs). Multi-class issuers return the canonical class (typically the most-traded one). |
| filings[].nameOfIssuer | string | no | Issuer name AS FILED on the cover page (typically all-caps in EDGAR convention). Casing preserved verbatim — for canonical company name use the Sharadar SF1 lookup via the issuer CIK. |
| filings[].filerCik | string | no | Filer CIK (the entity DOING the reporting — fund, family office, individual, or activist). 10-character zero-padded string. Join key for filer-portfolio queries via `/ownership/beneficial-ownership/filers/{cik}/portfolio`. |
| filings[].filerName | string | no | Filer name AS FILED (typically all-caps EDGAR convention). For activists this often surfaces multi-entity structures (e.g. `ICAHN CARL C`, `ICAHN ENTERPRISES LP`, `ICAHN PARTNERS LP` — all Carl Icahn affiliates). Use `filerCik` as the stable identifier. |
| filings[].percentOfClass | number | yes | Aggregate beneficial-ownership percent of the issuer's voting class, as reported by the filer (Item 13 on the cover page). Above 5.00 is the regulatory trigger threshold. Null only when the filing was malformed or the cover page omitted the field (rare; mostly pre-2010 archival filings). |
| filings[].sharesOwned | number | yes | Aggregate shares beneficially owned across all positions in the filing. Includes shared voting + dispositive power. Always positive. Null only on malformed legacy filings. NOT split-adjusted — preserves the as-filed view. |
| filings[].priorPercent | number | yes | Ownership percent from the prior filing by the same `(filer, issuer)` pair (auto-linked via amendment-chain detection — added v3.3.2). Null on the original filing (no prior). Useful for amendment-chain analysis without separate round-trips. |
| filings[].percentChange | number | yes | Delta in `percentOfClass` vs the prior filing (current - prior). Positive = position increased; negative = position decreased. Null on the original filing. Useful for surfacing material amendments — e.g. amendments that move a 13G holder above the 10% activist trigger. |
| filings[].sharesChange | number | yes | Delta in `sharesOwned` vs the prior filing (current - prior). Positive = additional accumulation; negative = position trim. Null on the original filing. Combine with `daysSincePriorFiling` to compute accumulation rate. |
| filings[].purpose | string | yes | Classified filer intent — one of `passive`, `activist`, `m&a`, `going-private`, `proxy-fight`, `recapitalization`, `block-trade`, `unspecified`, etc. Derived from rule-based NLP classification of the filing's Item 4 (Purpose of Transaction). Null on legacy pre-classification filings. The single most-watched signal for activist-detection workflows. |
| meta | object | no | Pagination + filter echo block: `{ total: integer, page: integer, size: integer, applied_filters: object }`. `total` is the cap-aware match count (full-corpus when below 10000). |
Sample response
·
- "filings":
- "meta":
- "total": 1
- "limit": 100
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/filings?api_Token=YOUR_API_KEY" \
-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).