biquote
Home / Docs / Guides

MetaTrader 5 Data as a REST API

Getting prices out of MetaTrader 5 normally means running a Windows terminal, writing MQL5, and wiring up pipes or the Python integration — just to read a quote. biquote runs that plumbing for you and exposes the live MT5 feed as a plain HTTP API anyone can call.

The usual way vs. this way

Running MT5 yourselfbiquote API
SetupWindows VPS + terminal + MQL5 EAone curl
LanguageMQL5 or the Python bridge (Windows-only)anything that speaks HTTP
Uptimeyour terminal must stay logged inhandled server-side
CostVPS + broker accountfree, no key

Read the feed

curl https://biquote.io/api/XAUUSD
{
  "symbol": "XAUUSD",
  "bid": 4391.999, "ask": 4392.181,
  "mid": 4392.09, "spread": 0.182,
  "high": 4436.388, "low": 4385.974,
  "direction": "DOWN", "dayDiffPercent": -0.62,
  "timestamp": "2026-08-18T11:59:53Z",
  "source": "MetaTrader 5 (Broker 1)"
}

The source field tells you exactly which feed produced the tick. Everything an MT5 SymbolInfoTick gives you is here — bid, ask, spread, day range — plus computed fields like mid and dayDiffPercent the terminal makes you derive yourself.

MT5-style history: OHLC bars

The equivalent of CopyRates(), over HTTP:

curl "https://biquote.io/api/EURUSD/ohlc?interval=1h&limit=100"

Returns {symbol, interval, bars} with M1–D1 intervals (1m 5m 15m 30m 1h 4h 1d), including tickVolume per bar and an isOpen flag on the forming candle.

MT5-style streaming: the tick hub

Instead of OnTick(), subscribe over SignalR (WebSocket) and receive every tick push:

const conn = new signalR.HubConnectionBuilder()
    .withUrl("https://biquote.io/hubs/tick")
    .withAutomaticReconnect()
    .build();
conn.on("ReceiveTick", t => console.log(t.symbol, t.mid));
await conn.start();
await conn.invoke("Subscribe", ["EURUSD", "XAUUSD", "US500"]);

What the feed carries

~280 instruments quote live at any moment. List them with /api/symbols?liveOnly=true, or browse them as pages under /forex, /crypto, /commodities and /stocks.

Building your own collector instead? The biquote stack itself feeds from an MQL5 expert advisor pushing ticks over a socket — the pattern is documented in the API docs, and the whole read side stays free either way.

Read the full API reference →