WebSocket Streaming API — Live Quotes, No Polling

wss://tickatlas.com/ws/v1/quotes streams M1 bid/ask data for subscribed symbols. Authenticate, subscribe, receive — no polling, no rate-limit gymnastics.

No credit card$2.50 PAYG credit on sign up
15+API endpoints
42Indicator series
M1–D17 timeframes
$2.50PAYG starting credit
Why TickAtlas

Why Use TickAtlas?

Pre-Calculated, Redis-Cached

Indicator values are computed server-side on every new candle. Your app queries the result — no TA library, no candle history needed.

7 Timeframes

M1, M5, M15, M30, H1, H4, D1 — the same endpoint serves scalpers and position traders alike.

Forex, Crypto, Commodities

EURUSD, GBPUSD, XAUUSD, BTCUSD, USDJPY — data available for every symbol in our data.

One Request. Instant Data.

REQUEST
const ws = new WebSocket("wss://tickatlas.com/ws/v1/quotes");

ws.onopen = () => {
  ws.send(JSON.stringify({ action: "auth", key: "YOUR_API_KEY" }));
};

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  if (msg.type === "authenticated") {
    ws.send(JSON.stringify({ action: "subscribe", symbols: ["EURUSD", "XAUUSD"] }));
  } else if (msg.type === "quote") {
    console.log(msg.symbol, "bid=" + msg.bid, "ask=" + msg.ask);
  }
};

Streaming Costs No Credits

WebSocket pushes are unmetered on every plan: the server sends quotes without deducting anything from your daily quota. What the plan sets is how many symbols a connection can subscribe to:

  • Starter: up to 5 symbols, 0 credits per push.
  • Pro: up to 20 symbols, 0 credits per push.
  • Enterprise: unlimited symbols, 0 credits per push.

Pushes never count against your quota. If your REST usage for the day goes over your plan's daily quota with overage off, the server closes the stream with code 4029 until the quota resets at midnight UTC.

Code Examples

Python — websocket-client

import json, websocket

def on_open(ws):
    ws.send(json.dumps({"action": "auth", "key": "YOUR_API_KEY"}))

def on_message(ws, raw):
    msg = json.loads(raw)
    if msg["type"] == "authenticated":
        ws.send(json.dumps({"action": "subscribe",
                            "symbols": ["EURUSD", "XAUUSD"]}))
    elif msg["type"] == "quote":
        print(msg["symbol"], "bid", msg["bid"], "ask", msg["ask"])

ws = websocket.WebSocketApp(
    "wss://tickatlas.com/ws/v1/quotes",
    on_open=on_open, on_message=on_message,
)
ws.run_forever()

JavaScript — Browser / Node.js

const ws = new WebSocket("wss://tickatlas.com/ws/v1/quotes");

ws.onopen = () => {
  ws.send(JSON.stringify({ action: "auth", key: "YOUR_API_KEY" }));
};

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data);
  if (msg.type === "authenticated") {
    ws.send(JSON.stringify({
      action: "subscribe",
      symbols: ["EURUSD", "XAUUSD"],
    }));
  } else if (msg.type === "quote") {
    console.log(msg.symbol, "bid=" + msg.bid, "ask=" + msg.ask);
  }
};

WebSocket Access by Plan

Plan Price WebSocket Max Symbols Credits / Push Connections
Pay-As-You-Go $0 + from $0.005/call REST only — — —
Starter $29/mo ✓ Included 5 0 2
Pro $79/mo ✓ Included 20 0 2
Enterprise $349/mo ✓ Included unlimited 0 2

Free / Pay-As-You-Go accounts can use the REST /v1/quotes endpoint for polling. WebSocket requires Starter or higher.

Get Started with WebSocket Streaming

WebSocket access is included with all subscription plans. Choose the one that fits your symbol count and volume.

Best for Getting Started
Starter
$29 /month

WebSocket streaming for up to 5 symbols; live price streaming spends no credits. Perfect for monitoring a focused watchlist.

Get Started
Pro
$79 /month

Up to 20 symbols; live price streaming spends no credits. Better economics for multi-pair strategies and dashboards.

Get Started
Enterprise
$349 /month

Unlimited symbols; live price streaming spends no credits. Dedicated support. Built for production trading systems.

Get Started

Plug into any stack

  • ChatGPT Custom GPTs
  • Claude Tools
  • Python / pandas
  • Node.js
  • Discord bots
  • Slack webhooks
  • n8n
  • Zapier
  • Google Sheets
Pricing

Start on pay-as-you-go, upgrade when the traffic justifies it.

Every new account starts with $2.50 of pay-as-you-go credit and no card. Monthly plans add a flat monthly price, WebSocket streaming and support.

Pay as you go
$2.50 credit No card required to start
  • $2.50 of credit included
  • Every REST endpoint except raw ticks
  • No card required, no overage
  • 10 API keys
See plan details
Starter
$29 per month · 10,000 requests/day · 120/min
  • Every REST endpoint except raw ticks
  • WebSocket streaming, 5 symbols
  • Released calendar actuals
  • Email support
  • 3 API keys
See plan details
Frequently asked questions

What developers ask first.

Straight answers on limits, coverage and how the endpoint behaves in production.

Why M1 data only — not tick-by-tick?

M1 (1-minute) candle closes give you reliable OHLCV snapshots without the noise and bandwidth cost of raw ticks. For most algorithmic strategies, M1 is the fastest actionable timeframe. If you need tick-level data between candles, the REST /v1/ticks endpoint is available on the Pro and Enterprise plans.

What happens if I disconnect?

You stop receiving data. When you reconnect, authenticate again and resubscribe. There is no message replay — you pick up from the next available quote.

What if my daily quota runs out?

Pushes never count against your quota. But if your REST usage for the day goes over your plan's daily quota with overage off, the server sends a quota_exceeded error and closes the connection with code 4029. It closes again on reconnect until the quota resets at midnight UTC, or you upgrade for a higher daily quota.

Can I open multiple connections?

Yes, up to 2 concurrent WebSocket connections per account. If you try to open a third, the server rejects it with a connection_limit error.

How does billing work exactly?

Streaming is unmetered: pushed quotes cost no credits and do not count against your daily quota on any plan. What the plan sets is the symbol cap — 5 on Starter, 20 on Pro, unlimited on Enterprise. You pay only for REST calls.

Can I use REST as a fallback?

Yes. The /v1/quotes REST endpoint returns the same data. If your WebSocket connection is unavailable, poll the REST endpoint at your desired interval. Many users keep a REST fallback in their reconnection logic.

Start building

Start Building in 5 Minutes

Sign up, grab your API key, make your first request.

Every new account starts with $2.50 of pay-as-you-go credit. No card required.