빗썸 웹소켓 — 시세 데이터 vs 상장 공지

빗썸 웹소켓(WebSocket)을 검색하는 이유는 대개 둘 중 하나입니다. 이미 거래 중인 종목의 실시간 시세 데이터(현재가, 체결, 호가)가 필요하거나, 빗썸이 신규 상장이나 투자유의종목 공지를 올리는 순간을 알고 싶은 경우입니다. 빗썸의 공개 웹소켓은 첫 번째만 제공합니다. 두 번째는 제공하지 않습니다. 이 가이드는 두 가지를 모두, 실행 가능한 코드와 함께 다룹니다.

두 개의 소켓, 두 가지 역할

피드스트리밍 내용용도
빗썸 공개 웹소켓이미 상장된 원화(KRW) 마켓의 실시간 현재가·체결·호가차트, 주문 집행, 마켓 메이킹
공지 웹소켓신규 상장, 유의종목 지정 해제, 거래지원 종료(상장폐지)가 공지되는 순간의 이벤트다수가 공지를 읽기 전에 대응

빗썸 공개 시세 웹소켓

빗썸은 현재 API 2.x 웹소켓을 wss://ws-api.bithumb.com/websocket/v1로 문서화하고 있습니다. 업비트와 같은 방식으로 JSON 배열을 보내 구독합니다. 티켓 객체와 타입 객체(ticker, trade, orderbook)에 KRW-BTC 같은 codes를 지정합니다. 레거시 1.x 소켓 wss://pubwss.bithumb.com/pub/ws는 현재 문서에서는 빠졌지만 여전히 동작합니다. type(ticker, transaction, orderbookdepth)과 원하는 symbols를 담은 JSON 메시지를 보내며, 레거시 심볼은 BTC_KRW 형태이고 ticker의 경우 하나 이상의 tickTypes(24H 같은 구간)도 함께 보냅니다.

# pip install "websockets>=14"  (레거시 1.x 소켓 — 여전히 동작)
import asyncio, json, websockets

async def main():
    url = "wss://pubwss.bithumb.com/pub/ws"
    sub = {"type": "ticker",
           "symbols": ["BTC_KRW", "ETH_KRW"],
           "tickTypes": ["24H"]}
    async with websockets.connect(url) as ws:
        await ws.send(json.dumps(sub))
        async for raw in ws:
            print(json.loads(raw))

asyncio.run(main())

이미 거래 중인 코인에는 딱 맞는 도구입니다. 하지만 심볼을 미리 지정해야 합니다. 아직 상장되지 않은 코인에는 바로 그 점이 문제입니다.

공개 피드로 신규 상장을 알 수 없는 이유

빗썸의 신규 마켓은 거래가 시작되기 전까지 심볼이 없으므로 미리 구독할 대상이 없습니다. 빗썸의 상장 결정과 여러 단계로 이루어진 투자유의종목 절차(지정, 연장, 해제, 거래지원 종료)는 공지사항으로 게시되며, 이는 시세 소켓과 완전히 별개의 채널입니다. XYZ_KRW가 체결 스트림에 나타날 때쯤이면 초기 반응은 대개 이미 진행 중입니다. 공개 웹소켓은 상장을 반영할 뿐, 미리 알려 주지 않습니다.

공지 웹소켓: 공지가 게시되는 순간 포착

CryptoListing.ws는 전용 공지 웹소켓을 운영합니다. 빗썸이 신규 상장, 유의종목 지정 해제, 거래지원 종료(상장폐지)를 공지하는 즉시 구조화된 JSON 이벤트를 실시간으로 전송합니다. 공지를 대신 감지하므로 직접 확인할 필요가 없습니다. 빗썸은 도쿄와 서울 엔드포인트 모두에서 제공되므로, 한국에 있는 봇은 서울 엔드포인트를 사용해 서울→도쿄 구간을 줄일 수 있습니다.

항목값
엔드포인트 — 도쿄 (바이낸스 + 업비트 + 빗썸)wss://jp.cryptolisting.ws — AWS 도쿄(ap-northeast-1a)
엔드포인트 — 서울 (업비트 + 빗썸)wss://kr.cryptolisting.ws — AWS 서울(ap-northeast-2c). 한국에서 빗썸·업비트를 거래하는 봇에 엔드투엔드로 가장 빠릅니다.
빗썸만 필터wss://jp.cryptolisting.ws?cex=bithumb 또는 wss://kr.cryptolisting.ws?cex=bithumb
인증업그레이드 요청의 X-API-Key 헤더
포맷바이너리 프레임, UTF-8 JSON, 마이크로초 정밀도 타임스탬프
빗썸 이벤트spot_listing, caution_released, spot_delisting
# pip install "websockets>=14"  — 헤더 파라미터는 additional_headers
# (extra_headers는 websockets v14부터 제거됨)
import asyncio, json, websockets

API_KEY = "dsk_your_key_here"
WS_URL  = "wss://jp.cryptolisting.ws?cex=bithumb"  # 도쿄 — 한국에서는 wss://kr.cryptolisting.ws?cex=bithumb

async def run():
    headers = {"X-API-Key": API_KEY}
    async with websockets.connect(WS_URL, additional_headers=headers) as ws:
        async for raw in ws:
            msg = json.loads(raw)
            if msg["type"] == "announcement":
                for ticker in msg["ticker"].split(","):
                    print(msg["listingType"], ticker, msg["title"])

asyncio.run(run())

메시지 포맷

모든 공지는 하나의 JSON 객체입니다. 여러 티커를 다루는 복합 공지는 개별 이벤트로 나뉘어 도착하며, 그래도 ticker가 쉼표로 구분될 수 있으므로 항상 분리해서 처리하세요.

{
  "type": "announcement",
  "title": "[Market Addition] TOKEN (TOKEN) KRW Market",
  "ticker": "TOKEN",
  "publisher": "bithumb",
  "listingType": "spot_listing",
  "detectedTimestampUs": 1710345000005000,
  "dispatchTimestampUs": 1710345000006000
}

유의종목 절차 중 가격을 움직이는 단계만

빗썸은 이미 거래 중인 토큰에 대해 여러 단계의 투자유의종목 절차를 운영합니다. 피드는 모든 중간 단계를 쏟아내는 대신 매매에 활용할 수 있는 두 가지만 전송합니다. caution_released(지정 해제)와 spot_delisting(최종 거래지원 종료)입니다. 덕분에 스트림에는 노이즈가 아닌 신호만 남습니다.

두 피드를 함께 사용하기

두 소켓은 서로 보완합니다. 공지 웹소켓을 구독해 원화 마켓 추가 사실을 먼저 알고, 이벤트가 도착하는 즉시 새 심볼로 빗썸 공개 ticker 또는 transaction 스트림을 열어 가격을 따라가면 됩니다.

클라이언트를 직접 만드시나요? 파이썬으로 업비트·빗썸 상장 봇 만들기 튜토리얼이 유의종목 지정 해제, 상장폐지, 드라이런까지 전체 과정을 다룹니다. 전체 API 레퍼런스(영문): WebSocket API 레퍼런스, 메시지 스키마, Python / Node.js 코드 예제.

자주 묻는 질문 (FAQ)

빗썸 웹소켓 엔드포인트는 무엇인가요?

현재 API 2.x 소켓은 wss://ws-api.bithumb.com/websocket/v1입니다(티켓 + 타입 객체, KRW-BTC 같은 코드). 레거시 1.x 소켓 wss://pubwss.bithumb.com/pub/ws도 여전히 동작합니다. JSON 메시지(type + symbols + tickTypes)를 보내면 이미 거래 중인 심볼에 대한 JSON 응답을 받습니다.

빗썸 공개 웹소켓으로 신규 상장 알림을 받을 수 있나요?

아니요. 이미 존재하는 심볼만 구독할 수 있고, 상장과 유의종목 결정은 시세 소켓이 아니라 공지사항으로 게시됩니다. 이를 위해서는 상장 공지 API가 필요합니다.

공지 피드를 빗썸만 받도록 필터링하려면?

도쿄 또는 서울 엔드포인트에 ?cex=bithumb를 붙이세요: wss://jp.cryptolisting.ws?cex=bithumb(도쿄) 또는 wss://kr.cryptolisting.ws?cex=bithumb(서울). ?cex=bithumb,upbit처럼 거래소를 조합할 수도 있습니다.

업비트와 바이낸스는요?

같은 피드가 업비트와 바이낸스도 다룹니다. 한국에서 빗썸이나 업비트를 거래하는 봇은 두 한국 거래소를 모두 전송하는 서울 엔드포인트도 사용할 수 있습니다. 바이낸스는 도쿄에서만 제공됩니다. 로빈후드(영문 페이지)도 전용 미국 엔드포인트(wss://us.cryptolisting.ws)로 제공합니다.

API 키 받기

텔레그램으로 문의해 빗썸 상장·유의종목 공지 스트리밍을 시작하세요. 요금제 및 등급, 전체 문서(영문), 빗썸 상장 알림 개요도 확인해 보세요.

텔레그램에서 API 키 받기