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).
Why use this
Common use case
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
| Name | In | Required | Default | Allowed | Description | Example |
|---|---|---|---|---|---|---|
| api_key | auth | required | — | — | API 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 |
| path | config | required | /socket.io | — | Socket.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 |
| namespace | config | required | /13f | — | Socket.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
| Field | Type | Nullable | Description |
|---|---|---|---|
| event | string | no | Event 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_number | string | no | SEC 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. |
| cik | string | no | Filer CIK in 10-character zero-padded form (server-side normalized regardless of input form). Use for client-side per-fund routing. |
| filer_name | string | no | Filer 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_report | string | no | ISO `YYYY-MM-DD` quarter end (always 03-31 / 06-30 / 09-30 / 12-31). The reporting period the 13F covers. |
| filed_date | string | no | ISO `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_usd | number | yes | Reported 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_count | integer | yes | Number 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
| 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 -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).