Robinhood WebSocket — account API vs listing announcements
If you searched for the Robinhood WebSocket or Robinhood crypto API listings, you are most likely trying to do one thing: know the instant a new coin appears on Robinhood — ideally before it becomes tradable. Robinhood's official crypto API is built around your own account. It does not push new listings, and there is no public Robinhood WebSocket for announcements. This guide explains what the official API does, why it cannot signal a listing, and shows an announcement WebSocket that broadcasts both Robinhood events — wallet_listing and cex_listing — as JSON, with code that runs.
Two things "Robinhood WebSocket" can mean
| Feed | What it gives you | Good for |
|---|---|---|
| Robinhood's official crypto API | Your own account — orders, holdings and prices for assets that already trade on Robinhood. Request/response over HTTPS, not a public streaming socket | Placing and managing your own Robinhood orders |
| Announcement WebSocket | An event the moment a new asset is added to Robinhood assets (wallet_listing) or becomes tradable (cex_listing) | Reacting to a Robinhood listing before the crowd |
Robinhood's official crypto API
Robinhood offers a crypto trading API aimed at account holders. It is account-oriented: you authenticate as yourself and work with your own orders, your holdings and the pairs you can already trade. Robinhood does not publish a WebSocket for listing announcements, and — the point that matters here — the account API has no call that announces a new listing. An asset that is not yet on Robinhood is simply absent from it.
| Question | Official Robinhood API | What a listing bot needs |
|---|---|---|
| Scope | Your account and the assets already tradable on Robinhood | Every asset, including ones not yet on Robinhood |
| Trigger | You ask, it answers | It tells you, the instant something changes |
| New listings | Not announced | Announced as a typed event with a ticker and timestamps |
| Pre-trading signal | None | wallet_listing, days to weeks before trading opens |
That is the right tool for trading a coin that is already on Robinhood. It is the wrong tool for learning that a coin is about to be.
Why there is nothing to subscribe to before the listing
A Robinhood listing is not a symbol you can watch in advance. The asset is absent, then it is added to Robinhood assets, then — later — it becomes tradable. Nothing in an account-oriented API fires at either step. By the time the pair is tradable and quoted inside the app, the news has already reached Robinhood's retail user base and the first part of the move is usually gone. Like every exchange's market data, Robinhood's trading interface is a consequence of a listing, not a signal of one.
The announcement WebSocket: two Robinhood events, one JSON envelope
CryptoListing.ws runs a dedicated announcement WebSocket that broadcasts a structured JSON event in real time when an asset is added to Robinhood assets, and again when it becomes tradable on Robinhood. Robinhood is served from a dedicated US endpoint hosted in AWS N. Virginia — the same envelope, the same API key and the same client code as the Binance, Upbit and Bithumb feeds.
| Property | Value |
|---|---|
| Endpoint — US (Robinhood) | wss://us.cryptolisting.ws — AWS N. Virginia (us-east-1). The only endpoint that carries Robinhood. |
| Endpoint — Tokyo (Binance + Upbit + Bithumb) | wss://cryptolisting.ws — AWS Tokyo. Does not carry Robinhood. |
| Endpoint — Seoul (Upbit + Bithumb) | wss://kr.cryptolisting.ws — AWS Seoul. Does not carry Robinhood. |
| Filter | ?cex=robinhood is accepted, but optional on the US endpoint — it carries Robinhood only |
| Auth | X-API-Key header on the upgrade request (same key on every endpoint) |
| Format | Binary frames, UTF-8 JSON, microsecond-precision timestamps |
| Robinhood events | wallet_listing, cex_listing |
# pip install "websockets>=14" — the header param is additional_headers # (extra_headers was removed in websockets v14+) import asyncio, json, websockets API_KEY = "dsk_your_key_here" WS_URL = "wss://us.cryptolisting.ws" # N. Virginia, Robinhood only 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" and msg["publisher"] == "robinhood": for ticker in msg["ticker"].split(","): print(msg["listingType"], ticker, msg["title"]) asyncio.run(run())
For the other publishers, see the Binance, Upbit and Bithumb listing alert pages — one key covers them all.
The two Robinhood events
| listingType | What happened | Typical timing | Title ends with |
|---|---|---|---|
wallet_listing | The asset was added to Robinhood assets — visible to Robinhood Wallet users and shown in the app, but not yet tradable | Often days, sometimes weeks before trading opens | — added to Robinhood assets |
cex_listing | The asset became tradable on Robinhood — the effective, live listing | When trading opens | — tradable on Robinhood |
The Robinhood wallet listing is the early signal. Most sources only mention a Robinhood listing once the asset is already tradable — by which point the news has spread to Robinhood's retail audience. Because the wallet listing precedes trading, a wallet_listing subscriber sees the name before the market does. What you do with that window is your strategy — the feed delivers the information, it does not promise an outcome.
Message format
Every announcement is a single JSON object. For Robinhood each event carries one ticker; splitting on a comma costs nothing and keeps one handler for every publisher.
{
"type": "announcement",
"publisher": "robinhood",
"listingType": "wallet_listing",
"ticker": "PONS",
"title": "Robinhood: PONS (Pons to US Dollar) — added to Robinhood assets",
"detectedTimestampUs": 1757570000123456,
"dispatchTimestampUs": 1757570000123999,
"abnormalDetectionLatency": false
}
detectedTimestampUs is when the feed detected the event and dispatchTimestampUs when it was sent to you, both in microseconds since the Unix epoch. abnormalDetectionLatency is true when the feed judged its own detection of that event unusually late, so a latency-sensitive bot can choose to skip it. A cex_listing uses the same envelope; its title ends with — tradable on Robinhood.
Route by listing type
Branch on listingType. Treat wallet_listing as the early-warning path — the asset is on Robinhood's radar, but nobody can buy it there yet — and cex_listing as the live path, the moment Robinhood's users can actually trade it. A Robinhood listing bot usually wants both: the first to prepare, the second to act. See the documentation for the complete schema.
Use both feeds together
The announcement WebSocket is the trigger; your execution venue's market data is the telemetry. Because a wallet_listing arrives before the asset trades on Robinhood, the price you follow at that moment lives on whichever exchange already lists the token. Once cex_listing fires, Robinhood's own account API becomes the relevant tool for placing orders there. One feed tells you that, the other tells you how much.
Access & pricing
Robinhood is priced like Upbit: Basic 400 USDT / month, Premium 750 USDT / month. Two free tiers let you benchmark the feed first — SpeedTrial (redacted payload, near real time) and FreeDelayed (full payload, fixed added delay). Bundling exchanges saves −50 USDT (Basic) or −100 USDT (Premium) per month on any two, −100 / −150 on three, and all four exchanges on Premium come to 1900 USDT / month. Duration discounts of −15 % (3 months), −22.5 % (6 months) and −30 % (12 months) are available; bundle and duration discounts do not stack. Full details on the pricing page.
FAQ
Does Robinhood have a WebSocket for new crypto listings?
No public one. Robinhood's crypto trading API is account-oriented — your own account, orders and holdings — and it does not announce new listings; Robinhood does not advertise a public WebSocket for listing events. To receive a Robinhood listing the moment it appears, you need a dedicated announcement API.
What is the difference between wallet_listing and cex_listing on Robinhood?
wallet_listing: the asset was added to Robinhood assets — visible to Robinhood Wallet users and shown in the app — before it can be traded, often days and sometimes weeks earlier. cex_listing: the asset became tradable on Robinhood, the effective listing. The first is the early signal; the second is the listing itself.
Which endpoint carries Robinhood listing announcements?
Only wss://us.cryptolisting.ws, hosted in AWS N. Virginia (us-east-1). The Tokyo endpoint wss://cryptolisting.ws (Binance + Upbit + Bithumb) and the Seoul endpoint wss://kr.cryptolisting.ws (Upbit + Bithumb) do not carry Robinhood. The same API key works on every endpoint, passed in the X-API-Key header; ?cex=robinhood is accepted but optional on the US endpoint because it carries Robinhood only.
What does a Robinhood announcement message look like?
A single JSON object with type "announcement", publisher "robinhood", listingType "wallet_listing" or "cex_listing", the ticker, the announcement title, detectedTimestampUs and dispatchTimestampUs in microseconds, and an abnormalDetectionLatency boolean. A wallet listing title ends with — added to Robinhood assets; a tradable listing title ends with — tradable on Robinhood.
How much does the Robinhood listing feed cost?
Robinhood is priced like Upbit: Basic 400 USDT per month, Premium 750 USDT per month. Two free tiers exist — SpeedTrial (redacted payload) and FreeDelayed (full payload with a fixed added delay). Bundle discounts apply when you combine exchanges, and all four exchanges on Premium cost 1900 USDT per month; duration discounts of −15 % (3 months), −22.5 % (6 months) and −30 % (12 months) do not stack with bundles. Full details are on the pricing page.
Get your API key
Contact us on Telegram to start streaming Robinhood listing announcements. See pricing & tiers, the full documentation, or the crypto listing API overview.
Get API key on Telegram