Data connectors
You can load candles from your own API (Chart with your data). But when the data lives on Binance, Bybit, OKX, Kraken, KuCoin, Coinbase, Gate.io, CCXT-backed exchanges, CoinGecko, or a third-party market data API, a Data Connector does the boring work for you: fetch history, open WebSockets, parse candles, retry on errors.
Try the demo above — switch symbol and timeframe. That is a Data Connector in action.
When to use a connector
| Situation | Best path |
|---|---|
| Public crypto from Binance | Binance connector — no API key |
| Public crypto from Bybit | Bybit connector — no API key |
| Public crypto from OKX | OKX connector — no API key |
| Public crypto USD spot from Kraken | Kraken connector — no API key |
| Public crypto USDT spot from KuCoin | KuCoin connector — no API key |
| Public crypto USD/USDC spot from Coinbase | Coinbase connector — no API key |
| Public crypto USDT spot from Gate.io | Gate.io connector — no API key |
| Many exchanges from one package (backend) | CCXT connector — Node.js |
| Forex or multi-asset (stocks + FX + crypto) | Massive, Twelve Data, Finnhub, EODHD, or Finage — API key |
| Broad crypto catalog, daily bars | CoinGecko — coin ids, REST polling |
| US stocks and ETFs | Massive, Finnhub, EODHD, or Twelve Data — API key |
| Your company's own prices | Your API + setMainSeriesData |
Available connectors
| Connector | Data | API key? | Status |
|---|---|---|---|
| Binance · live demo | Crypto spot | No | ✅ Ready today |
| Bybit · live demo | Crypto spot | No | ✅ Ready today |
| OKX · live demo | Crypto spot | No | ✅ Ready today |
| Kraken · live demo | Crypto spot (USD) | No | ✅ Ready today |
| KuCoin · live demo | Crypto spot (USDT) | No | ✅ Ready today |
| Coinbase · live demo | Crypto spot (USD / USDC) | No | ✅ Ready today |
| Gate.io · live demo | Crypto spot (USDT) | No | ✅ Ready today |
| CCXT · live demo | 100+ crypto exchanges | No (public data) | ✅ Ready today |
| Twelve Data · live demo | Forex, stocks, crypto | Yes (API key) | ✅ Ready today |
| Finage · live demo | Forex, stocks, crypto | Yes (API key) | ✅ Ready today |
| Finnhub · live demo | US stocks, forex, crypto | Yes (API token) | ✅ Ready today |
| EODHD · live demo | Global stocks, forex, crypto | Yes (API token) | ✅ Ready today |
| Massive · live demo | US stocks, forex, crypto | Yes (API key) | ✅ Ready today |
| CoinGecko · live demo | 10,000+ crypto assets | Free demo tier | ✅ Ready today |
Compare pricing and licenses on the Data Connectors catalog.
The whole flow in four steps
Every connector follows the same pattern:
flowchart LR
Install["1. npm install connector"]
Wire["2. createChart + dataAdapter"]
Load["3. loadData(symbol)"]
Live["4. subscribeToUpdates"]
Install --> Wire --> Load --> Live
import { createChart } from "@efixdata/exeria-chart";
import { BinanceAdapter } from "@efixdata/connector-binance";
const connector = new BinanceAdapter();
const chart = createChart({ container, dataAdapter: connector });
chart.init();
await chart.loadData("BTCUSDT", { interval: "1h", limit: 1000 });
chart.subscribeToUpdates("BTCUSDT", (tick) => {
console.log(tick.c ?? tick.price);
});
No manual fetch, no candle parsing — the connector speaks to the chart in the shapes it already understands (Data model).
What is a connector, in one sentence?
A small npm package that implements the DataAdapter interface: “give me history for this symbol” and “push me live ticks.” Your API keys (if any) stay in your app — never in the chart library.
Details: Overview.
Pick your next page
| Goal | Read |
|---|---|
| Understand how connectors work | Overview |
| Ship crypto charts today | Binance, Bybit, OKX, Kraken, KuCoin, Coinbase, or Gate.io |
| Many exchanges on your backend | CCXT |
| Forex or multi-asset charts | Massive, Twelve Data, Finnhub, EODHD, or Finage |
| Portfolio / news use cases | CoinGecko |
| US stocks and ETFs | Massive, Finnhub, EODHD, or Twelve Data |
| Build your own connector | Overview → custom connector |
Quick troubleshooting
| Problem | Fix |
|---|---|
Blank chart after loadData | Check symbol spelling (BTCUSDT not BTC-USD) |
| No live updates | Call subscribeToUpdates after loadData |
| Switching symbol acts weird | unsubscribeFromUpdates() first |
| Need exact method types | API Reference |
Tutorial walkthrough: Connect with a Data Connector.