NOTE:
This is the documentation for the websocket channel sec:13f_filings.
Websocket access for personal use is only available through the Advanced plan.
You can find fully-functional examples that stream data from many channels here:
Connect to the websocket URI:
wss://api.unusualwhales.com/socket?token=<YOUR_API_TOKEN>
then join the sec:13f_filings channel.
Each message carries one 13F filing of an institution (13F-HR, 13F-NT, 13F-CTR and their
amendments). The holdings are not listed one by one. The message totals their value and
their share count per security type: shares, funds, warrants, call options, put options,
preferred stock and debt.
The sec:13f_alerts channel carries a summary of the
position changes and the top holdings of a report.
Delivery characteristics
- Updates are event driven. The channel stays silent until a 13F filing is processed.
There is no heartbeat and no fixed schedule.
- A notice filing carries no holdings. A 13F-NT states that another manager reports the
holdings, so its values and counts are
0.
- Messages are not deduplicated. If the same filing is published twice, you receive it
twice. Identify a filing by
accession_no.
- The channel sends nothing when you join. Messages sent while you are disconnected are
not replayed.
- The channel is global only. It covers every institution at once. A join on
sec:13f_filings:<TICKER> is answered with an {"error": "..."} frame.
Payload format:
Field reference
Every field is present in every message. A value the filing does not provide is sent as an
empty string, 0 or false, never as null. A 0 can therefore mean either zero or not
reported. Dates are strings in YYYY-MM-DD format, and values are in USD.
The fields that start with agg_, and buy_value and sell_value, cover the whole report
period, including the amendments filed for it. The other totals cover this filing only.
The payload has the fields of the Kafka message
Form13F_HR, published to the topic
sec-filings under the key form13f. Last modified on October 1, 2026