Subscribe to the market in real time.
Stream normalized events milliseconds after they finalize, over gRPC or WebSocket, with server-side filters and typed SDKs — the same schema you query historically.
1// Subscribe to normalized market trades in real time2import { QXX } from "@qxx/stream";34const stream = new QXX({ apiKey: process.env.QXX_KEY })5 .subscribe("market.trades", {6 symbols: ["BTC-USD", "ETH-USD", "AAPL"],7 filter: "size_usd > 50000",8 delivery: "at-least-once", // deduped, ordered9 });1011for await (const trade of stream) {12 console.log(trade.ts, trade.symbol, trade.price);13}Real-time you can build a business on.
Freshness, ordering and durability designed for trading and production systems — not best-effort feeds.
Millisecond freshness
Events are delivered within milliseconds of the source, streamed as they happen.
Ordered per stream
Events arrive in deterministic order within each subscription.
Replay & backfill
Reconnect and resume from your last offset; missed windows backfill automatically.
Server-side filters
Filter by chain, asset, size and more before data ever leaves our edge.
gRPC & WebSocket
Binary gRPC for the lowest latency, WebSocket for reach — one schema for both.
At-least-once + dedupe
Idempotent event keys give you effectively exactly-once processing.
Where the milliseconds go.
Indicative delivery latency, measured end-to-end. Co-located deployments cut the last mile further.
| Stage | p50 | p99 |
|---|---|---|
| Source → delivery | 210 ms | 480 ms |
| Stream fan-out | < 5 ms | < 20 ms |
| Reconnect + replay | < 1 s | < 3 s |
Start streaming financial data.
Get API access to open your first subscription, or book a demo to review latency and delivery for your workload.
Usage-based pricing · Free tier · SOC 2–aligned