Intraday research starts with price action that updates as the session unfolds. A single end-of-day snapshot cannot tell you whether a stock is grinding higher on steady volume or spiking on a headline. For dashboards, surveillance, and alert engines, you need a stream that pushes open, high, low, close, and volume as the market moves.
Vantafin delivers live OHLCV quotes over WebSocket at wss://socket.vantafin.com/v1/stocks. The LS channel publishes per-second bars and the LM channel publishes per-minute bars. This is not a trade tape; it is normalized OHLCV you can chart, aggregate, or compare against prior sessions. If you have not connected to our streaming stack before, start with the WebSocket API overview.
Connect and subscribe
Open a WebSocket connection against the Vantafin streaming endpoint and authenticate with your API key before sending subscription messages. Once the socket is open, subscribe by sending a JSON message with an action and params field. For a single symbol, use {"action":"subscribe","params":"LS.AAPL"} for per-second OHLCV or {"action":"subscribe","params":"LM.AAPL"} for per-minute OHLCV. You can also pass a channels array if your client batches subscriptions after the connection is established.
Each live quote message carries the OHLCV fields you need for charting and analytics: open, high, low, close, and volume for the current interval. The LS channel (live_quote_second) is ideal for responsive intraday charts; LM (live_quote_minute) reduces message volume when you only need minute-level resolution. Heartbeats arrive on a fixed interval. Treat a missed heartbeat as a signal to reconnect rather than assuming the feed is healthy.
Point the same symbols at price alerts so a sharp move on a name in your watchlists reaches you even when you are not watching the chart. Alerts and the live stream complement each other: the WebSocket feed gives continuous context, while alerts catch the threshold breach you would have missed during a meeting.
Build the live chart
A well-built intraday view is more than a line that ticks upward. Maintain a rolling buffer of recent bars (a few hundred seconds or minutes depending on your channel) and append each incoming message as the interval updates. Format timestamps in the user's locale, but keep the underlying epoch for sorting and cross-session replay. Color candles or line segments by whether close exceeds open, and overlay cumulative volume so operators can see whether price moves come with participation.
For research workflows, compare the current session's high and low against the prior close from a REST snapshot. A stock pushing through yesterday's close on rising minute volume deserves more attention than the same price tick on thin participation. Open each symbol's company profile in the app so a burst of activity on a ticker you follow is never anonymous noise.
Throttle DOM or canvas updates if you subscribe to LS on a busy symbol during the opening hour or around a headline. Batching several updates per animation frame keeps the browser responsive without sacrificing the feel of a live stream. If you need a point-in-time snapshot across many names, combine the stream with bulk quote snapshots for a watchlist header that refreshes efficiently between WebSocket ticks.
Extend the workflow
Once live OHLCV is flowing, the natural next step is analytics layered on top of the stream. Rolling VWAP from minute bars, session range as a percent of average true range, and volume rate per five-minute window help you spot acceleration ahead of a breakout or fade. These derived metrics do not require new infrastructure. They are aggregations over the same LS or LM feed you already consume.
The MCP server extends the workflow into ad-hoc research. Use get_price_history when you need historical OHLCV bars for comparison, or get_quotes for a quick snapshot of where the name sits relative to the day's range. Combine live streaming with trading halt monitoring on names where regulatory pauses can interrupt an otherwise smooth session.
Ready to ship? Read the full message schema in the WebSocket docs, compare connection limits on pricing, and learn more about how we source market data on the about page. Live OHLCV streaming is often the first real-time feature teams ship) and the one they keep running longest.
Per-second and per-minute quote streams
A live tape in the Vantafin sense is built from the LS and LM channels on wss://socket.vantafin.com/v1/stocks. Subscribe to LS.AAPL for per-second open, high, low, close, and volume updates during market hours, or LM.AAPL when you want one consolidated quote per minute and lower message volume. Both channels run from 4:00 AM through 8:00 PM Eastern on trading days; if you connect while the market is closed, the socket returns a market_status message instead of empty data.
Authenticate with your API key via query parameter or an initial auth frame, then load symbols from today's watchlist before the session opens. Each incoming message carries enough context to paint a scrolling grid: last price, session change, volume accumulation, and a timestamp you can format for the user's locale. Throttle DOM updates during the first fifteen minutes if you subscribe to busy names by batching ten or twenty rows per animation frame keeps the browser responsive without sacrificing the feel of a live feed.
Pair the stream with email price alerts on symbols where a sharp move matters more than watching every tick. The WebSocket gives continuous context; alerts catch the moment you stepped away. For connection patterns and message schemas, start with the WebSocket overview.
Building a tape UI that analysts trust
A well-built tape is more than a table of numbers. Maintain a rolling buffer of a few hundred rows, color upticks and downticks relative to the prior print, and link each row to that symbol's company profile in the app so a burst of activity is never anonymous noise. Measure receive-to-render latency during regular hours; spikes usually point to client-side batching rather than network issues.
When you need a point-in-time refresh without holding a socket open for end-of-day reconciliation, a mobile pull-to-refresh, or a serverless cron job (merge streaming updates with bulk quote snapshots on a schedule. That pairing gives you continuous intraday context plus periodic marks that match what the REST layer returns for the same tickers.
For ad-hoc questions during fast markets, the MCP server exposes get_quotes and get_price_history so a Cursor agent can summarize recent performance on a watchlist without you writing custom glue code. The agent fetches structured data; you still validate against primary sources before acting.
Operating at production scale
Automatic reconnect with resubscribe on socket open belongs in every production client. Log when message rate drops unexpectedly during regular hours) a silent feed is worse than a noisy one because charts look fine while analytics drift. Confirm per-connection symbol limits on pricing before sharding a universe across multiple sockets.
Choose LS when your UI needs smooth intraday charts and sub-minute reactivity; choose LM when you are building dashboards, alert engines, or research panels that refresh once per minute and want to stay well within bandwidth budgets. Many desks run LM for broad watchlists and LS for a short list of catalyst names on the calendar. Document which symbols use which channel so onboarding engineers do not accidentally subscribe everything to per-second traffic.