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
| Endpoint | Region | Coverage |
|---|---|---|
wss://cryptolisting.ws | AWS Tokyo | Binance + Upbit + Bithumb |
wss://kr.cryptolisting.ws | AWS Seoul | Upbit 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
- Message Reference — every field, every event type
- Error Handling — close codes and reconnection
- Code Examples — production-ready clients
CryptoListing.ws is a technical data feed, not financial advice. See Legal.