Stream API
The Arcfeed Stream API delivers real-time trade data as a server-side stream. Send one request; receive a continuous stream of trades matching your filters until you close the connection.
Endpoint
| Host | stream.arcfeed.finance:443 |
| Protocol | Connect RPC (HTTP/2 + Protobuf) |
| TLS | Required |
| RPC | arcfeed.streamservice.v1.StreamService/StreamData |
Hello World
A minimal example that connects to the stream and prints each trade to stdout:
typescript
import { createClient } from '@connectrpc/connect';
import { createGrpcTransport } from '@connectrpc/connect-node';
import { StreamService } from '@arcfeed-dev/protobuf/gen/es/streamservice/v1/stream_pb';
const transport = createGrpcTransport({
baseUrl: 'https://stream.arcfeed.finance',
httpVersion: '2',
interceptors: [
(next) => async (req) => {
req.header.set('Authorization', 'YOUR_API_TOKEN');
return next(req);
}
]
});
const client = createClient(StreamService, transport);
const stream = client.streamData({
filter: [{ pair: 'BTC-USDT' }]
});
for await (const response of stream) {
const { trade, pair, source } = response;
if (trade) {
console.log(`[${source}] ${pair}: ${trade.price} x ${trade.quantity}`);
// Convert nanoseconds to milliseconds
const ms = Number(trade.timestamp) / 1_000_000;
console.log(' at', new Date(ms).toISOString());
}
}Reference
- Authentication — JWT token setup
- StreamDataRequest — request message and filter options
- StreamDataResponse — response message fields