Skip to content
/api/v1/ownership/analytics/threshold-crossings

Recent filings that crossed 5%, 10%, 15%, or 20% ownership thresholds.

Recent filings that crossed 5%, 10%, 15%, or 20% ownership thresholds.

10 tokensSince v3.0.0

Why use this

Surfaces 13D/13G filings that crossed a beneficial-ownership threshold (5%, 10%, 15%, 20%) in either direction — the leading-indicator endpoint for material ownership-buildup or position-trim events. Computed via amendment-chain analysis: comparing each filing's `percentOfClass` against the prior filing by the same `(filer, issuer)` pair and emitting a row whenever the crossing occurs. Filterable by issuer ticker, specific threshold level, direction (`up` = accumulating; `down` = reducing), and date range. The 5% threshold is the SEC trigger; 10% triggers Section 16 short-swing-profit rules and is a common activist threshold; 15% (added v3.7.3) is a finer-grained activist-watching level; 20% is the often-used 'control-position' threshold. The right endpoint for compliance teams monitoring control-block accumulation and for analysts tracking activist position-building campaigns.

Common use case

Monitor for large ownership buildups/reductions, detect threshold trigger events, filter by crossing direction.

Surfaces 13D/13G filings that crossed a beneficial-ownership threshold (5%, 10%, 15%, 20%) in either direction. Filterable by issuerTicker, threshold, direction, dateTo (v3.7.3). The 15% threshold defaults to detection in the response (added v3.7.3).

Parameters

NameInRequiredDefaultAllowedDescriptionExample
issuerTickerqueryoptionalIssuer ticker filter, case-insensitive (server normalizes to canonical hyphen form). Returns only crossings against this specific issuer. Useful for company-overview pages: 'has anyone crossed 5% in this name recently?'IBM
thresholdqueryoptionalSpecific threshold to filter on — `5`, `10`, `15`, or `20`. Default: returns crossings of any threshold. The `15` threshold was added in v3.7.3; pre-v3.7.3 only `5`, `10`, `20` were detected.10
directionqueryoptionalCrossing direction filter — `up` (accumulating: prior < threshold ≤ current) or `down` (reducing: prior ≥ threshold > current). Default: returns both directions blended. `up` crossings are the more actionable surveillance target.up
dateFromqueryoptionalInclusive lower bound on `filedAt` (the date of the crossing-triggering filing). Format ISO `YYYY-MM-DD`. Use for incremental polling: `dateFrom = last_run_timestamp`.2026-01-01
dateToqueryoptionalInclusive upper bound on `filedAt` (added v3.7.3). Format ISO `YYYY-MM-DD`. Combine with `dateFrom` for closed ranges.2026-04-01
pagequeryoptional11-based page number. Crossings are a moderate-density subset of 13D/G filings — even broad date ranges typically fit on 5-20 pages.1
sizequeryoptional50Page size, capped at 200 server-side. For full-corpus enumeration use date-range chunking + `size=200`.50

Response schema

FieldTypeNullableDescription
crossingsarraynoArray of threshold-crossing rows, sorted by `filedAt DESC` (most recent crossings first). Each row represents one threshold-crossing event by one filer at one issuer (a single filing that crosses multiple thresholds emits multiple rows — e.g. going from 4% to 11% emits both `5%` and `10%` rows). Empty array on no match.
crossings[].accessionNumberstringnoSEC accession of the filing that triggered the crossing. Pass to `/ownership/beneficial-ownership/filings/{accession}` for the full filing payload (purpose, intent flags, exhibits).
crossings[].filedAtstringnoISO-8601 UTC timestamp of SEC EDGAR acceptance for the crossing-triggering filing. Use for time-bucketed crossing-rate analytics ('how many 10% crossings filed this quarter?').
crossings[].issuerCikstringnoIssuer CIK in 10-char zero-padded form. The company whose ownership threshold was crossed.
crossings[].issuerTickerstringyesResolved issuer ticker (canonical hyphen form). Null only for private-issuer filings (rare; most threshold-crossings target public issuers).
crossings[].filerCikstringnoFiler CIK in 10-char zero-padded form. The entity that crossed the threshold. Pass to `/ownership/beneficial-ownership/filers/{cik}/portfolio` for the filer's full position book.
crossings[].filerNamestringnoFiler name from the crossing filing (typically all-caps EDGAR convention). For activist crossings commonly surfaces names like `TRIAN FUND MANAGEMENT LP`, `STARBOARD VALUE LP`, `ELLIOTT INVESTMENT MANAGEMENT LP`.
crossings[].thresholdintegernoThe threshold that was crossed — `5`, `10`, `15`, or `20`. A single filing can produce multiple rows in this response if it crossed multiple thresholds (e.g. accumulating from 4% to 11% → two rows: one for `5` and one for `10`).
crossings[].directionstringnoCrossing direction — literal `"up"` (accumulating: prior was below threshold, current is at-or-above) or `"down"` (reducing: prior was at-or-above, current is below). The actionable direction for surveillance is `"up"`.
crossings[].priorPercentnumberyesFiler's `percent_of_class` from the IMMEDIATELY-PRIOR filing (the last filing before this crossing-triggering one). Together with `currentPercent` defines the magnitude of the threshold crossing. Null on first-ever filings by this `(filer, issuer)` pair (i.e. fresh 5% accumulations from zero).
crossings[].currentPercentnumbernoFiler's `percent_of_class` on the crossing-triggering filing. Always above the threshold for `direction='up'`; always below the threshold for `direction='down'`. Use `currentPercent - priorPercent` (when prior is not null) to compute crossing-event size.

Sample response

·
  • "crossings":
    ]
}

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/analytics/threshold-crossings?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).

Try it

Related endpoints