WebSocket market data streaming API
No polling: subscribe to symbols and the server keeps pushing quotes, ticks and order books to you. The protocol matches the official iTick API.
Why use WebSocket
- Updates are pushed as prices change, which is more timely than polling REST on a timer and does not use your per-minute request allowance.
- One connection can subscribe to many symbols, and several connections can subscribe to the same symbol without affecting each other.
- The protocol matches the official iTick API, so existing subscription code only needs a new endpoint.
Message format
// Subscribe / unsubscribe. types: tick, quote, depth, kline@1
{"ac":"subscribe","params":"AAPL$US,700$HK","types":"quote,tick"}
{"ac":"unsubscribe","params":"AAPL$US","types":"quote"}
// Heartbeat
{"ac":"ping","params":"1731688569840"}
// Pushed message
{"code":1,"data":{"s":"BTCUSDT","r":"BA","ld":83988.54,"v":0.00019,"type":"tick"}}JavaScript example
const ws = new WebSocket("wss://itick.dev/crypto?token=YOUR_API_KEY");
ws.onopen = () => {
ws.send(JSON.stringify({ ac: "subscribe", params: "BTCUSDT$BA", types: "quote,tick" }));
// Send a heartbeat at least every 30 seconds
setInterval(() => ws.send(JSON.stringify({ ac: "ping", params: String(Date.now()) })), 25000);
};
ws.onmessage = (event) => console.log(event.data);Supported markets
Connect to wss://itick.dev/{market} where market is stock, forex, crypto, indices, future or fund. Available data depends on your plan.
Connection and subscription limits
Concurrent connections per API key per market and symbols per connection are set by your plan; see pricing. The free plan does not include WebSocket by default.
Frequently asked questions
What if the connection drops?
If the server closes a connection because the token was disabled, reset or expired, reconnect and subscribe again once you have a valid token. Network drops also require reconnecting and subscribing again.
Do I need to send heartbeats?
Yes. Send a ping at least every 30 seconds; a connection with no heartbeat for over a minute may be closed.
How do I pass the token in a browser?
Browser WebSockets cannot set request headers, so put the token in the token query parameter of the connection URL.
Stream live market data
Sign up and subscribe to a plan that includes WebSocket to start receiving updates.
Sign up free