Skip to content
WebSocket (Namespace: /13f)

Stream of enriched 13F institutional filings with real-time position change analysis.

Stream of enriched 13F institutional filings with real-time position change analysis. Subscribe to summary (compact ~1KB) or full (complete holdings ~50-500KB) channels. Filters by CIK, ticker held, minimum AUM, and filing type. Catch-up delivery on connect sends recent filings matching your filters. Subscriptions persist across reconnects (7-day TTL).

100 tokens/conn-daySince v1.0.0

Why use this

Real-time push stream of 13F institutional-holdings filings — receive each filing within ~60 seconds of EDGAR acceptance, FULLY ENRICHED with position-change analysis (categorized into `new`/`closed`/`increased`/`decreased`/`unchanged` with top-20 items per category). Two-channel subscription: `summary` (compact ~1KB with top-10 holdings + statistics — drives dashboard tickers) or `full` (complete ~50-500KB position list with voting authority + investment discretion — drives heavy-analytics consumers). Server-side filtering on CIK whitelist, ticker-held whitelist, minimum AUM, and form type — eliminates client-side firehose handling. Catch-up delivery on connect replays the most-recent 50 filings matching your filters; subscriptions persist across reconnects with 7-day TTL so deploys/network blips don't lose state. The right choice for hedge-fund-tracker dashboards (StockCircle/WhaleWisdom-style) and institutional-flow trading desks. 100-token flat per-UTC-day connection fee.

Common use case

Monitor when Berkshire Hathaway files a new 13F, track any fund buying NVDA, or alert when a $1B+ fund makes portfolio changes.

Socket.IO WebSocket stream for live Form 13F-HR filings. Connect to namespace /13f and subscribe to new_13f_filing for every parsed cover page + holdings batch. Heaviest of the three streams during filing season (mid-Feb / mid-May / mid-Aug / mid-Nov) when 9,600+ filers all submit within ~10 days. Flat 100-token-per-UTC-day connection cost.

Parameters

NameInRequiredDefaultAllowedDescriptionExample
api_keyauthrequiredAPI key. Three methods (first match): Socket.IO `auth.api_key` payload (recommended), HTTP header `X-API-Key` or `Authorization: Bearer`, or `?api_key=` query. 100-token/day fee on first connect of the UTC day. Free-tier OK. `?token=` removed v3.20.2.tok_test_abc123
pathconfigrequired/socket.ioSocket.IO HTTP path. Default `/socket.io` — same as the Main API stream (`/sec` namespace) and DIFFERENT from the Insider stream which uses a custom path. Pass to your client as `io(url, { path: '/socket.io' })`./socket.io
namespaceconfigrequired/13fSocket.IO namespace. Connect via `io('/13f', {...})`. The connection multiplexes onto the same HTTP path as the `/sec` stream — only one TCP socket needed even if you subscribe to both namespaces./13f

Response schema

FieldTypeNullableDescription
eventstringnoEvent name — `13f_summary` for compact channel, `13f_holdings` for full channel, `13f_heartbeat` for keep-alive (every 30 seconds), `subscribed` / `subscription_restored` / `unsubscribed` for subscription-state events. Use to dispatch handlers.
accession_numberstringnoSEC accession in canonical `XXXXXXXXXX-YY-NNNNNN` format. NOTE: the per-event payload uses `accession_no` (underscore form) NOT `accession_number` — see notes block. Use as deduplication key.
cikstringnoFiler CIK in 10-character zero-padded form (server-side normalized regardless of input form). Use for client-side per-fund routing.
filer_namestringnoFiler name as filed (typically all-caps EDGAR convention). For aliasing to user-friendly names (Buffett vs Berkshire) use `/api/v1/form-13f/filers` with the alias lookup.
period_of_reportstringnoISO `YYYY-MM-DD` quarter end (always 03-31 / 06-30 / 09-30 / 12-31). The reporting period the 13F covers.
filed_datestringnoISO `YYYY-MM-DD` filing acceptance date. Compared against `period_of_report` reveals filing-cadence patterns — late-quarter filers hit closer to the 45-day deadline.
total_value_usdnumberyesReported aggregate portfolio value. IMPORTANT: emitted in SEC's 'thousands' convention — multiply by 1000 for actual USD. Example: `267890123` means $267.9 billion. Null when value not yet computable.
holdings_countintegeryesNumber of position rows in the filing's information table. Null on 13F-NT filings (notice-of-no-table — these always have 0 holdings). Berkshire-shaped books: ~50; index-fund books (Vanguard, BlackRock): 3000-9000+.

Sample response

·
  • "event": "new_13f_filing"
  • "accession_number": "0000950123-26-001234"
  • "cik": "0001067983"
  • "filer_name": "BERKSHIRE HATHAWAY INC"
  • "period_of_report": "2025-12-31"
  • "filed_date": "2026-02-14"
  • "total_value_usd": 308000000000
  • "holdings_count": 47
}

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 -X WS "https://api.finradar.aiWebSocket (Namespace: /13f)?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).

Related endpoints