Arcfeed Docs
arcfeed.finance ↗

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

Hoststream.arcfeed.finance:443
ProtocolConnect RPC (HTTP/2 + Protobuf)
TLSRequired
RPCarcfeed.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