Skip to main content
NOTE: This is the documentation for websocket channels periscope and periscope:<TICKER>. Websocket access for personal use is only available through the Advanced plan. These channels are not available on the enterprise and enterprise startup plans; joining them returns an error. 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 channel you wish to stream: periscope for every index ticker at once, or periscope:SPX for a single ticker. Payload format: Format for periscope:<TICKER>:
The global periscope channel streams the same envelope frames for every index ticker, tagged periscope (the ticker field distinguishes them):
Each frame carries a batch of up to 1024 strike/expiry rows. A full snapshot spans several frames; all frames of one snapshot share the same timestamp, and a new timestamp starts the next snapshot (snapshots are published about once a minute). has_more is true on every frame but the last one of a snapshot, so the frame with "has_more": false closes the board. Sum the rows lengths across frames with the same timestamp and compare against total_rows to verify you received the complete snapshot.
Last modified on September 28, 2026