Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Quick Start

Connect, authenticate, and receive announcements in five minutes.

1. Get an API key

Request a key on Telegram: @CLWfeed — or see Pricing for the free SpeedTrial and FreeDelayed keys (no payment required).

Format: dsk_ + 64 hex characters.

dsk_a1b2c3d4e5f67890abcdef1234567890abcdef1234567890abcdef1234567890ab

The key is shown once at creation. Store it securely.

2. Connect

EndpointRegionCoverage
wss://cryptolisting.wsAWS TokyoBinance + Upbit + Bithumb
wss://kr.cryptolisting.wsAWS SeoulUpbit only

Pick one endpoint per bot — the closest to your trading region. Same key works on both.

Pass the key as the X-API-Key header:

pip install websocket-client
import json, websocket

URL    = "wss://cryptolisting.ws"
HEADER = ["X-API-Key: dsk_your_key_here"]

def on_message(ws, message):
    data = json.loads(message)
    if data["type"] == "announcement":
        tickers = data["ticker"].split(",")   # one alert can carry several tokens
        print(f"{data['listingType']} | {','.join(tickers)} | {data['publisher']}")
        print(f"  {data['title']}")

websocket.WebSocketApp(URL, header=HEADER, on_message=on_message).run_forever()

3. Receive messages

On connect, the server sends a welcome message with your tier and limits. It may then write two service messages straight away, before anything else: a renewal_notice if your key has less than 24 h left, and any valid changelog entry you have not been given yet. After that comes the stream of announcement and heartbeat (every 30 s) messages, plus a changelog whenever one is published.

Always switch on type and ignore values you don’t know, as the example above does: new types may ship without notice, and an unrecognised message must never reach your trading logic.

{
  "type": "announcement",
  "title": "Binance Will List TOKEN (TOKEN)",
  "ticker": "TOKEN",
  "publisher": "binance",
  "listingType": "spot_listing",
  "detectedTimestampUs": 1710345000005000,
  "dispatchTimestampUs": 1710345000006000,
  "abnormalDetectionLatency": false
}

An Upbit spot listing covering three tokens at once. Note the comma-separated ticker — this is one alert, not three — and the extra markets field, which Binance and Bithumb events never carry:

{
  "type": "announcement",
  "title": "[거래] 비코(BICO), 비트마트(BMT), 닐(NIL) KRW, USDT 마켓 디지털 자산 추가",
  "ticker": "BICO,BMT,NIL",
  "publisher": "upbit",
  "listingType": "spot_listing",
  "detectedTimestampUs": 1710345000005000,
  "dispatchTimestampUs": 1710345000006000,
  "abnormalDetectionLatency": false,
  "markets": "KRW,USDT"
}

markets is optional and appears on Upbit spot listings only. A missing field means we could not identify the markets — never that the listing has none. See markets.

On the SpeedTrial tier, ticker is "" and title carries an upgrade notice for every event except not_listing. All other fields are unchanged, markets included — it names a quote market, not a token, so it is never redacted. Announcements also carry a +1 ms courtesy delay on SpeedTrial so paying subscribers are served first (heartbeats are never delayed). The FreeDelayed tier is also free but delivers the full title and ticker with a +240 ms delay. See Tier behavior.

Check abnormalDetectionLatency. true means the event was detected under unusual conditions — possibly slower, possibly not. Take precautions before acting on it. See abnormalDetectionLatency.

4. Filter by exchange (optional)

Add the cex query parameter to scope the stream:

wss://cryptolisting.ws?cex=binance
wss://cryptolisting.ws?cex=binance,upbit

Omit it to receive every supported exchange.

Next


CryptoListing.ws is a technical data feed, not financial advice. See Legal.