Skip to content
/api/v1/form-13f/latest

Get the most recently parsed 13F filings across all funds, sorted by filing date descending.

Get the most recently parsed 13F filings across all funds, sorted by filing date descending.

free

Why use this

Returns the N latest completed 13F filings with fund metadata, portfolio value, holdings count, and quarter-over-quarter position change counts. Both `analysis` (raw counts) and `statistics` (frontend-friendly names) are included for compatibility. table_value_total passes through the stored filing value; the response applies no extra scaling.

Common use case

Building a live-updating '13F Activity Feed' showing the most recent institutional filings as they are parsed. Each entry includes statistics counts so you can immediately see portfolio changes without fetching the full fund report. The `statistics` field uses the same schema as WebSocket 13f_summary events for consistent frontend rendering.

Returns the most-recently parsed 13F filings as a live activity feed — sorted by parsed_at DESC (NOT filed_at, since SEC EDGAR occasionally accepts filings out of order). Each entry carries the fund identity, portfolio value, holdings count, AND QoQ position-change statistics — so a single GET call surfaces enough information to render an 'institutional activity feed' tile WITHOUT additional drill-downs.

Both analysis (legacy raw count names) AND statistics (frontend-friendly names + prior_quarter_available flag) are returned for backwards compatibility. The statistics field's schema is INTENTIONALLY identical to the WebSocket new_13f_filing event payload — so frontends can render REST and WebSocket events with the same component code (Phase 47-era WebSocket normalization).

Live updates: for true real-time consumption (filings as they're parsed), prefer the WebSocket /13f namespace — subscribe to new_13f_filing for push-based updates. This REST endpoint is the polling fallback (typical poll cadence: 30s during filing season, 5min between seasons).

For full-portfolio drill-down on any row, pass cik + period_of_report to GET /api/v1/form-13f/fund/{cik}. For the raw filing artifact, pass accession_no to GET /api/v1/sec/filings/{accession_number}. All monetary values in USD (post-Plan-51 thousands correction — note utility text is legacy and pre-dates the correction).

Parameters

NameInRequiredDefaultAllowedDescriptionExample
limitqueryoptional20—Number of filings to return (max 100)20
offsetqueryoptional0—Pagination offset into the filing_date-descending list (alias `from`). Previously accepted-and-ignored; pages now advance correctly.20
cikqueryoptional—Restrict the feed to a single filer CIK. Matched leading-zero-insensitively, so `1512397` and `0001512397` both resolve.1512397
sincequeryoptional—Only filings with `filing_date >=` this ISO date (`YYYY-MM-DD`, inclusive). Invalid input is ignored (no 400).2025-08-01

Response schema

FieldTypeNullableDescription
statusstringno—
request_idstringyes—
timestampstringno—
dataarrayno—
data[].accession_nostringyes—
data[].fund_namestringno—
data[].cikstringno—
data[].period_of_reportstringyes—
data[].filed_atstringyes—
data[].table_value_totalnumberyes—
data[].holdings_countintegeryes—
data[].form_typestringno—
data[].is_amendmentbooleanyes—
data[].analysisobjectno—
data[].analysis.newintegerno—
data[].analysis.closedintegerno—
data[].analysis.increasedintegerno—
data[].analysis.decreasedintegerno—
data[].analysis.unchangedintegerno—
data[].statisticsobjectno—
data[].statistics.new_positionsintegerno—
data[].statistics.increasedintegerno—
data[].statistics.increased_positionsintegerno—
data[].statistics.decreasedintegerno—
data[].statistics.decreased_positionsintegerno—
data[].statistics.closedintegerno—
data[].statistics.unchangedintegerno—
data[].statistics.prior_quarter_availablebooleanno—
data[].parsed_atstringyes—
metaobjectno—
meta.totalintegerno—

Sample response

·
  • "data":
    ]
  • "meta":
    • "total": 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/form-13f/latest?limit=20&offset=20&cik=1512397&since=2025-08-01" \
  -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).