Skip to main content
NOTE: This is the documentation for the websocket channel sec:13f_alerts. 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_alerts channel. Each message summarises one institution’s 13F report: the number of positions in the report period and how many of them the institution opened, added to, reduced and closed, an estimate of the value it bought and sold, and its largest holdings in each of those categories. The sec:13f_filings channel carries the filing itself, with the holdings totalled per security type.

Delivery characteristics

  • Updates are event driven. The channel stays silent until a 13F report is processed. There is no heartbeat and no fixed schedule.
  • Only the newest report period of an institution is sent. A 13F report for an earlier period, such as a late amendment, produces no message here.
  • The position counts and top holdings cover shares and funds only. Options, warrants, preferred stock and debt are left out of the stock_* and top_ten_* fields. total_value covers every security type.
  • A summary can be sent again. It is rebuilt and sent each time the institution’s holdings for its newest report period are processed, for example after an amendment. The newest message for a cik and report_date replaces the earlier ones.
  • Bought and sold values are estimates. A 13F report contains no trade prices. The buy and sell prices behind stock_buy_avg_weighted_prem, stock_sell_avg_weighted_prem and the ordering of the added, reduced and closed holdings are estimated from the market prices of each ticker during the report period.
  • 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_alerts:<TICKER> is answered with an {"error": "..."} frame.
Payload format:

Field reference

Every field is present in every message. A value that is not available is sent as an empty string, 0, false or an empty array, never as null. Dates are strings in YYYY-MM-DD format. Values are in USD, rounded to whole dollars. Each top_ten_* list holds up to ten entries, largest first.
The payload has the fields of the Kafka message ThirteenFAlert, published to the topic sec-filings under the key 13_f_alert.
Last modified on October 1, 2026