XRP XRP/USDT
Reconnecting- Best bid
- —
- Best ask
- —
- Cross-exchange spread
- —
- 24h volume
- —
- Exchanges live
- —
Price chart
Median price across exchanges, 1-minute candles, last 24 hours. Updates live.
Exchange price differences
Mid price vs. the median, in basis points. 1 bp = 0.01%.
Top of book by exchange
| Exchange | Bid size | Bid | Ask | Ask size | Spread | Mid | Lag | Updated |
|---|---|---|---|---|---|---|---|---|
For informational purposes only. Not investment, financial or trading advice. Data comes from third-party exchanges and may be delayed or inaccurate. See the terms of use.
Raw WebSocket messages
The exact JSON frames for ticker:XRPUSDT, as your client receives them. Each ticker message carries only the exchange(s) that just changed. Field reference: channels & payloads.
ticker:XRPUSDT- Waiting for messages…
About this feed
This page shows the live XRP (XRP) price against USDT from every supported exchange that lists XRP/USDT. Each row is the current best bid and best ask from that exchange's order book, streamed over WebSocket and updated in real time.
The headline price is the median of the exchange mid prices, which is more robust than any single venue. The cross-exchange spread compares the highest bid with the lowest ask across all venues. A negative value means the books are crossed, which is a possible arbitrage signal before fees.
You can stream the same data for free: subscribe to ticker:XRPUSDT on the Aeon Feed WebSocket. See the channel reference.
Stream XRP/USDT in your app
const ws = new WebSocket("wss://aeonfeed.com/ws");
ws.onopen = () => {
ws.send(JSON.stringify({ op: "subscribe", channels: ["ticker:XRPUSDT"] }));
};
ws.onmessage = (e) => {
const msg = JSON.parse(e.data);
if (msg.type === "ticker" || msg.type === "snapshot") {
for (const q of msg.data) console.log(q.ex, "bid", q.b, "ask", q.a);
}
};# pip install websockets
import asyncio, json, websockets
async def main():
async with websockets.connect("wss://aeonfeed.com/ws") as ws:
await ws.send(json.dumps({"op": "subscribe", "channels": ["ticker:XRPUSDT"]}))
async for raw in ws:
msg = json.loads(raw)
if msg["type"] in ("ticker", "snapshot"):
for q in msg["data"]:
print(q["ex"], "bid", q["b"], "ask", q["a"])
asyncio.run(main())// tokio-tungstenite = { version = "0.24", features = ["native-tls"] }
use futures::{SinkExt, StreamExt};
use tokio_tungstenite::{connect_async, tungstenite::Message};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let (mut ws, _) = connect_async("wss://aeonfeed.com/ws").await?;
ws.send(Message::text(r#"{"op":"subscribe","channels":["ticker:XRPUSDT"]}"#)).await?;
while let Some(msg) = ws.next().await {
if let Message::Text(t) = msg? {
println!("{t}");
}
}
Ok(())
}npx wscat -c "wss://aeonfeed.com/ws?subscribe=ticker:XRPUSDT"curl https://aeonfeed.com/v1/ticker/XRPUSDT