{"id":4002,"date":"2026-10-14T08:27:02","date_gmt":"2026-10-14T08:27:02","guid":{"rendered":"https:\/\/nownodes.io\/blog\/?p=4002"},"modified":"2026-10-14T08:27:04","modified_gmt":"2026-10-14T08:27:04","slug":"how-to-build-a-real-time-hyperliquid-whale-alert-bot","status":"publish","type":"post","link":"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/","title":{"rendered":"How to Build a Real-Time Hyperliquid Whale Alert Bot"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A real-time Hyperliquid whale alert bot is a small program that listens to the exchange&#8217;s live trade feed, keeps only the trades large enough to matter, and sends you a notification the moment one happens. You can build a working version in an afternoon with Node.js, a free public WebSocket, and about a hundred lines of code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This guide walks through the whole thing: what a whale alert actually watches, why Hyperliquid is a good chain to watch it on, who uses these bots, and then the build itself \u2014 streaming trades, setting a sensible size threshold, and pushing alerts to Telegram. No paid data product is required to get it running.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"what-is-a-hyperliquid-whale-alert-bot\">What Is a Hyperliquid Whale Alert Bot?<\/h2>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-101-1024x683.png\" alt=\"\" class=\"wp-image-4003\" srcset=\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-101-1024x683.png 1024w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-101-300x200.png 300w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-101-768x512.png 768w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-101.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">It is a bot that watches Hyperliquid&#8217;s trade stream and flags any single trade above a size you choose. &#8220;Whale&#8221; is just shorthand for a trader moving enough size to move a market, and the bot&#8217;s only job is to catch those trades as they settle and tell you.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hyperliquid is a decentralized exchange for perpetual futures that runs on its own layer-1 blockchain. A perpetual future, or &#8220;perp,&#8221; is a derivative that tracks an asset&#8217;s price with no expiry date. The chain splits into two parts: <a href=\"https:\/\/hyperliquid.gitbook.io\/hyperliquid-docs\" rel=\"nofollow noopener noreferrer\">HyperCore<\/a>, the on-chain order book and matching engine where trades actually execute, and HyperEVM, an Ethereum-compatible layer where smart contracts run. Trades happen on HyperCore, and that is where a whale tracker points.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The bot doesn&#8217;t guess or scrape a dashboard. It opens a WebSocket to Hyperliquid, subscribes to the <code>trades<\/code> feed for the coins you care about, and receives every fill as it clears. Each message carries a price and a size, so the bot multiplies them into a dollar value and compares that against a threshold. Anything over the line becomes an alert.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"why-stream-trades-instead-of-checking-a-website\">Why Stream Trades Instead of Checking a Website?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Because the data you care about is gone from the top of a page in seconds, and an API that pushes events to you never misses one. A whale alert is only useful if it arrives while the trade still matters.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There are two ways an application can get on-chain data. It can poll \u2014 ask an HTTP endpoint &#8220;anything new?&#8221; over and over \u2014 or it can subscribe to a WebSocket and have the server push each event the instant it happens. Polling a busy exchange means you are always a little behind and you waste most requests on empty answers. A WebSocket subscription delivers the trade the moment it fills, with nothing wasted in between.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For a whale tracker, that gap is the whole point. A trader opening a nine-figure position is a signal that decays fast. If your bot learns about it thirty seconds late because it was waiting on the next poll, the move it was warning you about may already be over. Hyperliquid exposes its trade feed over a public WebSocket, which makes the live approach both the better one and the free one.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"who-uses-whale-alerts-on-hyperliquid\">Who Uses Whale Alerts on Hyperliquid?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">Mostly traders, analysts, and builders who treat large order flow as information. None of them need the bot to trade for them; they need it to point attention at the right moment.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Active perp traders<\/strong> watch for size entering or leaving a market they&#8217;re in, since a large print often precedes a move.<\/li>\n\n\n\n<li><strong>On-chain analysts and researchers<\/strong> log big trades over time to study how concentrated flow behaves around news or liquidations.<\/li>\n\n\n\n<li><strong>Community and alpha channels<\/strong> run public feeds that post notable trades automatically, the way the broader &#8220;whale alert&#8221; accounts do for token transfers.<\/li>\n\n\n\n<li><strong>Quant and bot developers<\/strong> fold the same live stream into larger systems, using a whale print as one input among many rather than a standalone alert.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The common thread is reaction speed. Each of these users wants to know about unusual size before the market finishes digesting it, which is exactly what a streaming bot delivers and a manual check cannot.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"what-counts-as-a-whale-trade\">What Counts as a &#8220;Whale&#8221; Trade?<\/h2>\n\n\n<p class=\"wp-block-paragraph\">There&#8217;s no official cutoff. A whale is whatever size is large enough to be worth your attention, and you set that number yourself based on the coin and the market.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The cleaner way to measure it is by dollar value, not token count. Ten thousand of a cheap token and ten thousand of an expensive one are wildly different trades, so a threshold in raw units breaks the moment you watch more than one market. Because Hyperliquid&#8217;s trade feed gives you both the fill price and the fill size, you can compute the notional value \u2014 price times size \u2014 and set one consistent USD threshold across every coin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A reasonable starting point is to tier the alerts rather than use a single line:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><thead><tr><th>Tier<\/th><th>Example USD threshold<\/th><th>What it tells you<\/th><\/tr><\/thead><tbody><tr><td>Notable<\/td><td>$100,000+<\/td><td>Larger-than-average flow worth a glance<\/td><\/tr><tr><td>Whale<\/td><td>$500,000+<\/td><td>Size that can move a thinner market<\/td><\/tr><tr><td>Mega<\/td><td>$1,000,000+<\/td><td>Flow that usually shows up in the price<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">These numbers are illustrations, not rules. A deep market like BTC perps needs a far higher bar than a small-cap to produce the same signal, so expect to tune the thresholds per coin once you see real traffic. Start high, watch for a day, and lower the line until the alerts feel useful rather than constant.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"how-to-build-a-realtime-hyperliquid-whale-alert-bot\">How to Build a Real-Time Hyperliquid Whale Alert Bot<\/h2>\n\n\n<p class=\"wp-block-paragraph\">The build has four parts: connect to Hyperliquid&#8217;s WebSocket, subscribe to the trade feed, filter by USD value, and push the survivors to a notification channel. Here is the full flow before the code.<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Open a WebSocket to Hyperliquid mainnet.<\/li>\n\n\n\n<li>Subscribe to the <code>trades<\/code> feed for each coin you want to watch.<\/li>\n\n\n\n<li>For every trade, compute price \u00d7 size and compare it to your threshold.<\/li>\n\n\n\n<li>Format the ones that pass and send them to Telegram.<\/li>\n\n\n\n<li>Keep the connection alive with a periodic ping and reconnect if it drops.<\/li>\n<\/ol>\n\n\n<h3 class=\"wp-block-heading\" id=\"step-1-what-you-need-before-starting\">Step 1: What You Need Before Starting<\/h3>\n\n\n<p class=\"wp-block-paragraph\">You need Node.js and a Telegram bot token, and nothing else to begin. The trade feed itself is public and requires no account or API key.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Node.js 20 or newer<\/strong>, since the code uses the built-in <code>WebSocket<\/code> client and ES module syntax.<\/li>\n\n\n\n<li><strong>A Telegram bot token<\/strong>, created in about a minute by messaging @BotFather, sending <code>\/newbot<\/code>, and copying the token it returns.<\/li>\n\n\n\n<li><strong>A chat ID<\/strong> to send alerts to. Add your new bot to a channel or group, then read the <code>chat.id<\/code> from a call to the bot&#8217;s <code>getUpdates<\/code> endpoint.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Create a project folder, run <code>npm init -y<\/code>, and install the two dependencies the bot uses:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>npm install ws node-telegram-bot-api<\/code><\/pre>\n\n\n<h3 class=\"wp-block-heading\" id=\"step-2-connect-and-subscribe-to-the-trade-feed\">Step 2: Connect and Subscribe to the Trade Feed<\/h3>\n\n\n<p class=\"wp-block-paragraph\">The connection is a single WebSocket to Hyperliquid&#8217;s mainnet endpoint, and subscribing is one JSON message per coin.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Hyperliquid&#8217;s mainnet WebSocket lives at <code>wss:\/\/api.hyperliquid.xyz\/ws<\/code>. Once the socket opens, you send a subscribe message naming the feed type and the coin. This is the exact shape Hyperliquid&#8217;s own <a href=\"https:\/\/hyperliquid.gitbook.io\/hyperliquid-docs\/for-developers\/api\/websocket\" rel=\"nofollow noopener noreferrer\">WebSocket documentation<\/a> specifies:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">js<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import WebSocket from \"ws\";\n\nconst COINS = &#91;\"BTC\", \"ETH\", \"SOL\"];\nconst ws = new WebSocket(\"wss:\/\/api.hyperliquid.xyz\/ws\");\n\nws.on(\"open\", () =&gt; {\n  for (const coin of COINS) {\n    ws.send(JSON.stringify({\n      method: \"subscribe\",\n      subscription: { type: \"trades\", coin }\n    }));\n  }\n  console.log(\"Subscribed to trades:\", COINS.join(\", \"));\n});<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The server replies with a <code>subscriptionResponse<\/code> to confirm each feed, and from then on it pushes trade messages whenever a fill clears on any of those coins.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"step-3-read-each-trade-and-filter-by-size\">Step 3: Read Each Trade and Filter by Size<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Every trade message is an array of fills, and each fill tells you the side, price, size, and who traded. You turn price and size into a dollar value and keep only what clears your threshold.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A trade object from the <code>trades<\/code> feed contains these fields, per Hyperliquid&#8217;s <a href=\"https:\/\/hyperliquid.gitbook.io\/hyperliquid-docs\/for-developers\/api\/websocket\/subscriptions\">subscriptions reference<\/a>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>coin<\/code> \u2014 the asset, e.g. <code>\"BTC\"<\/code><\/li>\n\n\n\n<li><code>side<\/code> \u2014 <code>\"B\"<\/code> for a buy, <code>\"A\"<\/code> for a sell<\/li>\n\n\n\n<li><code>px<\/code> \u2014 the fill price, as a string<\/li>\n\n\n\n<li><code>sz<\/code> \u2014 the fill size, as a string<\/li>\n\n\n\n<li><code>time<\/code> \u2014 the fill timestamp in milliseconds<\/li>\n\n\n\n<li><code>hash<\/code> \u2014 the on-chain transaction hash<\/li>\n\n\n\n<li><code>tid<\/code> \u2014 a trade ID<\/li>\n\n\n\n<li><code>users<\/code> \u2014 the two counterparties, as <code>[buyer, seller]<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">The filter is small. Parse the numbers, multiply, and act only on fills above the line:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">js<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>const THRESHOLD_USD = 500_000;\n\nws.on(\"message\", (raw) =&gt; {\n  const msg = JSON.parse(raw);\n  if (msg.channel !== \"trades\") return;\n\n  for (const t of msg.data) {\n    const price = parseFloat(t.px);\n    const size = parseFloat(t.sz);\n    const notional = price * size;\n    if (notional &lt; THRESHOLD_USD) continue;\n\n    const direction = t.side === \"B\" ? \"BUY\" : \"SELL\";\n    sendAlert({\n      coin: t.coin,\n      direction,\n      notional,\n      price,\n      size,\n      hash: t.hash\n    });\n  }\n});<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Because the value is in dollars, the same <code>THRESHOLD_USD<\/code> works whether the fill is in BTC or a token worth a fraction of a cent. That is the advantage of filtering on notional rather than raw units.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"step-4-send-the-alert-to-telegram\">Step 4: Send the Alert to Telegram<\/h3>\n\n\n<p class=\"wp-block-paragraph\">The last piece formats a readable message and posts it to your channel. The <code>node-telegram-bot-api<\/code> library turns that into two lines.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">js<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>import TelegramBot from \"node-telegram-bot-api\";\n\nconst bot = new TelegramBot(process.env.TELEGRAM_TOKEN);\nconst CHAT_ID = process.env.TELEGRAM_CHAT_ID;\n\nfunction sendAlert({ coin, direction, notional, price, size, hash }) {\n  const usd = notional.toLocaleString(\"en-US\", { maximumFractionDigits: 0 });\n  const text =\n    `\ud83d\udc0b Whale ${direction} on ${coin}\\n` +\n    `Size: ${size} ${coin} ($${usd})\\n` +\n    `Price: $${price}\\n` +\n    `Tx: ${hash}`;\n  bot.sendMessage(CHAT_ID, text);\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Keep the token and chat ID in environment variables rather than in the file, so you never commit a secret to a repository. Run the bot with <code>TELEGRAM_TOKEN=... TELEGRAM_CHAT_ID=... node bot.js<\/code> and send a large test order on a testnet or watch a live market to confirm the alerts arrive.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"step-5-keep-the-connection-alive\">Step 5: Keep the Connection Alive<\/h3>\n\n\n<p class=\"wp-block-paragraph\">A WebSocket that sits idle gets closed, so the bot has to send a heartbeat and reconnect when the socket drops. Hyperliquid closes connections after 60 seconds of inactivity, and the documented fix is to send a ping every 20 seconds or so.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">js<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>let heartbeat;\nws.on(\"open\", () =&gt; {\n  heartbeat = setInterval(() =&gt; {\n    ws.send(JSON.stringify({ method: \"ping\" }));\n  }, 20_000);\n});\n\nws.on(\"close\", () =&gt; {\n  clearInterval(heartbeat);\n  console.log(\"Socket closed \u2014 reconnecting in 3s\");\n  setTimeout(startBot, 3_000);\n});<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Treat reconnection as a certainty, not an edge case. Sockets drop from timeouts, deploys, and network blips, and a bot that assumes the connection lasts forever will go quiet the first time it closes. Wrapping the setup in a <code>startBot()<\/code> function that the <code>close<\/code> handler can call again is the simplest way to recover.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"adding-onchain-context-with-hyperevm\">Adding On-Chain Context With HyperEVM<\/h2>\n\n\n<p class=\"wp-block-paragraph\">The native trade feed tells you what traded, but not who \u2014 and that is where an RPC connection to HyperEVM comes in. A whale alert gets more useful when you can resolve an address, check a wallet&#8217;s HyperEVM balance, or tie a trade to other on-chain activity.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>users<\/code> field on each trade gives you two addresses. To do anything with them beyond printing the hash \u2014 read token balances on HyperEVM, look up contract interactions, or enrich an alert with wallet history \u2014 the bot needs a standard JSON-RPC connection to the chain. HyperEVM uses chain ID 999 and the public RPC <code>https:\/\/rpc.hyperliquid.xyz\/evm<\/code>, and most read calls are the familiar EVM methods like <code>eth_getBalance<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A single public endpoint is fine while you&#8217;re testing, but it can rate-limit or fall behind when a bot is making steady calls, which is the point at which a dedicated provider earns its place. At NOWNodes, we give API access to Hyperliquid through an RPC endpoint (<code>hype.nownodes.io<\/code>), so a bot can query HyperEVM state and broadcast transactions without running its own node. Hyperliquid is one of the <a href=\"https:\/\/nownodes.io\/nodes\">networks we support<\/a>, and request volume scales across our <a href=\"https:\/\/nownodes.io\/pricing\">plans<\/a> as a bot grows from a hobby project into something that enriches every alert. The trade stream stays on Hyperliquid&#8217;s public WebSocket; the RPC layer is what turns a bare address into context.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"taking-the-bot-to-production\">Taking the Bot to Production<\/h2>\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"683\" src=\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-102-1024x683.png\" alt=\"\" class=\"wp-image-4004\" srcset=\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-102-1024x683.png 1024w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-102-300x200.png 300w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-102-768x512.png 768w, https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/image-102.png 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The afternoon version works, but a bot you leave running needs a few more habits. The gap between a demo and something dependable is mostly in how it handles failure and scale.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Deduplicate trades.<\/strong> The same fill can appear more than once across reconnects. Hyperliquid notes that <code>tid<\/code> is only a 50-bit hash, so combine <code>(time, coin, tid)<\/code> for a reliable unique key and skip anything you&#8217;ve already alerted on.<\/li>\n\n\n\n<li><strong>Rate-limit your own alerts.<\/strong> A volatile market can fire dozens of whale prints a minute. Batch them or raise the threshold during bursts so your channel stays readable.<\/li>\n\n\n\n<li><strong>Watch the heartbeat, not just the socket.<\/strong> A connection can stay technically open while the feed stalls. If no message arrives for a stretch, force a reconnect rather than trusting the socket state.<\/li>\n\n\n\n<li><strong>Separate config from code.<\/strong> Thresholds, coins, and tokens belong in environment variables or a config file so you can tune the bot without editing logic.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">None of these are large changes, but together they&#8217;re the difference between a bot that runs for ten minutes in a terminal and one that runs for weeks on a server and keeps posting accurate alerts.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"the-bottom-line\">The Bottom Line<\/h2>\n\n\n<p class=\"wp-block-paragraph\">A real-time Hyperliquid whale alert bot is one of the friendlier on-chain projects to build, because the hard part \u2014 a fast, public trade feed \u2014 is handed to you for free over a WebSocket. The code that matters is small: connect, subscribe, filter on dollar value, and push. Everything beyond that is tuning the threshold and handling the reconnects every streaming app has to handle.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Watching trades is enough to get alerts flowing. The moment you want to know who is behind a trade, or fold these signals into a larger system, you add an RPC connection to HyperEVM for the on-chain side \u2014 which is the part of the stack we cover at NOWNodes. Start with the free feed, get the alerts working, and reach for the extra infrastructure only when the bot has earned it.<\/p>\n\n\n<h2 class=\"wp-block-heading\" id=\"faq\">FAQ<\/h2>\n\n<h3 class=\"wp-block-heading\" id=\"is-hyperliquids-trade-websocket-free-to-use\">Is Hyperliquid&#8217;s trade WebSocket free to use?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Yes. The <code>trades<\/code> feed on <code>wss:\/\/api.hyperliquid.xyz\/ws<\/code> is public and needs no account or API key. Hyperliquid applies IP-based rate limits to its API, so a single bot watching a handful of coins sits comfortably within normal use.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"can-one-bot-watch-several-coins-at-once\">Can one bot watch several coins at once?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Yes. You send a separate <code>subscribe<\/code> message for each coin over the same connection, and all of their trades arrive on the one socket. The example above watches BTC, ETH, and SOL together, and you can add more by extending the list.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"why-filter-by-usd-value-instead-of-token-amount\">Why filter by USD value instead of token amount?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Because a fixed token count means different things on different markets. Ten thousand units of a dollar token and ten thousand of a cheap one are not comparable trades. Multiplying the fill price by the size gives a dollar value, so a single threshold behaves consistently across every coin you watch.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"does-the-bot-need-hyperevm-or-an-rpc-provider-to-send-alerts\">Does the bot need HyperEVM or an RPC provider to send alerts?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">No. The alerts themselves come entirely from the public trade WebSocket. You only need an RPC connection to HyperEVM, chain ID 999, if you want to enrich alerts with on-chain data such as a wallet&#8217;s balance or contract activity.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"what-happens-when-the-websocket-connection-drops\">What happens when the WebSocket connection drops?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">It will drop eventually, from an idle timeout or a network interruption. The bot should send a ping roughly every 20 seconds to avoid Hyperliquid&#8217;s 60-second idle cutoff, and it should reconnect automatically when the socket closes. Building that recovery in from the start is what keeps the alerts from going silent.<\/p>\n\n\n<h3 class=\"wp-block-heading\" id=\"can-i-send-whale-alerts-somewhere-other-than-telegram\">Can I send whale alerts somewhere other than Telegram?<\/h3>\n\n\n<p class=\"wp-block-paragraph\">Yes. Telegram is convenient, but the notification step is independent from the data step. You can swap <code>sendAlert<\/code> to post to Discord, write to a database, hit a webhook, or trigger any other action \u2014 the filtering logic stays the same.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A real-time Hyperliquid whale alert bot is a small program that listens to the exchange&#8217;s live trade feed, keeps only the trades large enough to matter, and sends you a notification the moment one happens. You can build a working version in an afternoon with Node.js, a free public WebSocket, and about a hundred lines [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":4005,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_eb_attr":"","_lmt_disableupdate":"","_lmt_disable":"","_monsterinsights_skip_tracking":false,"footnotes":""},"categories":[102],"tags":[],"class_list":["post-4002","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev-report"],"blocksy_meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.0 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Hyperliquid Whale Alert Bot: Build One Step by Step (2026)<\/title>\n<meta name=\"description\" content=\"Build a bot that streams Hyperliquid trades over WebSocket, filters large orders by USD value, and pushes instant whale alerts. Code, thresholds, and setup included.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hyperliquid Whale Alert Bot: Build One Step by Step (2026)\" \/>\n<meta property=\"og:description\" content=\"Build a bot that streams Hyperliquid trades over WebSocket, filters large orders by USD value, and pushes instant whale alerts. Code, thresholds, and setup included.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/\" \/>\n<meta property=\"og:site_name\" content=\"NOWNodes Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-14T08:27:02+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-14T08:27:04+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/nodes_1-2026-10-14T112642.165.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1200\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"\u0410nastasia\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nownodes\" \/>\n<meta name=\"twitter:site\" content=\"@nownodes\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"\u0410nastasia\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/\"},\"author\":{\"name\":\"\u0410nastasia\",\"@id\":\"https:\/\/nownodes.io\/blog\/#\/schema\/person\/0890ec68e813adecb93c18ee00e1e7a8\"},\"headline\":\"How to Build a Real-Time Hyperliquid Whale Alert Bot\",\"datePublished\":\"2026-10-14T08:27:02+00:00\",\"dateModified\":\"2026-10-14T08:27:04+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/\"},\"wordCount\":2372,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/nownodes.io\/blog\/#organization\"},\"articleSection\":[\"Dev Report\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/\",\"url\":\"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/\",\"name\":\"Hyperliquid Whale Alert Bot: Build One Step by Step (2026)\",\"isPartOf\":{\"@id\":\"https:\/\/nownodes.io\/blog\/#website\"},\"datePublished\":\"2026-10-14T08:27:02+00:00\",\"dateModified\":\"2026-10-14T08:27:04+00:00\",\"description\":\"Build a bot that streams Hyperliquid trades over WebSocket, filters large orders by USD value, and pushes instant whale alerts. Code, thresholds, and setup included.\",\"breadcrumb\":{\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Blog\",\"item\":\"https:\/\/nownodes.io\/blog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Dev Report\",\"item\":\"https:\/\/nownodes.io\/blog\/category\/dev-report\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Build a Real-Time Hyperliquid Whale Alert Bot\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/nownodes.io\/blog\/#website\",\"url\":\"https:\/\/nownodes.io\/blog\/\",\"name\":\"NOWNodes Blog\",\"description\":\"Your first-to-go source of development guides, web3 analytics and most recent news about NOWNodes\",\"publisher\":{\"@id\":\"https:\/\/nownodes.io\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/nownodes.io\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/nownodes.io\/blog\/#organization\",\"name\":\"NOWNodes Blog\",\"url\":\"https:\/\/nownodes.io\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nownodes.io\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2024\/02\/cropped-New-Logo-NN.png\",\"contentUrl\":\"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2024\/02\/cropped-New-Logo-NN.png\",\"width\":1164,\"height\":1164,\"caption\":\"NOWNodes Blog\"},\"image\":{\"@id\":\"https:\/\/nownodes.io\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/twitter.com\/nownodes\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/nownodes.io\/blog\/#\/schema\/person\/0890ec68e813adecb93c18ee00e1e7a8\",\"name\":\"\u0410nastasia\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nownodes.io\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1de24ab8dcdd7ec30f6adaf78b56bc1eda421f87575b7e103c8fc3fc4420e833?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1de24ab8dcdd7ec30f6adaf78b56bc1eda421f87575b7e103c8fc3fc4420e833?s=96&d=mm&r=g\",\"caption\":\"\u0410nastasia\"},\"url\":\"https:\/\/nownodes.io\/blog\/author\/nasty-nownodes\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Hyperliquid Whale Alert Bot: Build One Step by Step (2026)","description":"Build a bot that streams Hyperliquid trades over WebSocket, filters large orders by USD value, and pushes instant whale alerts. Code, thresholds, and setup included.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/","og_locale":"en_US","og_type":"article","og_title":"Hyperliquid Whale Alert Bot: Build One Step by Step (2026)","og_description":"Build a bot that streams Hyperliquid trades over WebSocket, filters large orders by USD value, and pushes instant whale alerts. Code, thresholds, and setup included.","og_url":"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/","og_site_name":"NOWNodes Blog","article_published_time":"2026-10-14T08:27:02+00:00","article_modified_time":"2026-10-14T08:27:04+00:00","og_image":[{"width":2400,"height":1200,"url":"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2026\/10\/nodes_1-2026-10-14T112642.165.jpg","type":"image\/jpeg"}],"author":"\u0410nastasia","twitter_card":"summary_large_image","twitter_creator":"@nownodes","twitter_site":"@nownodes","twitter_misc":{"Written by":"\u0410nastasia","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/#article","isPartOf":{"@id":"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/"},"author":{"name":"\u0410nastasia","@id":"https:\/\/nownodes.io\/blog\/#\/schema\/person\/0890ec68e813adecb93c18ee00e1e7a8"},"headline":"How to Build a Real-Time Hyperliquid Whale Alert Bot","datePublished":"2026-10-14T08:27:02+00:00","dateModified":"2026-10-14T08:27:04+00:00","mainEntityOfPage":{"@id":"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/"},"wordCount":2372,"commentCount":0,"publisher":{"@id":"https:\/\/nownodes.io\/blog\/#organization"},"articleSection":["Dev Report"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/","url":"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/","name":"Hyperliquid Whale Alert Bot: Build One Step by Step (2026)","isPartOf":{"@id":"https:\/\/nownodes.io\/blog\/#website"},"datePublished":"2026-10-14T08:27:02+00:00","dateModified":"2026-10-14T08:27:04+00:00","description":"Build a bot that streams Hyperliquid trades over WebSocket, filters large orders by USD value, and pushes instant whale alerts. Code, thresholds, and setup included.","breadcrumb":{"@id":"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nownodes.io\/blog\/how-to-build-a-real-time-hyperliquid-whale-alert-bot\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog","item":"https:\/\/nownodes.io\/blog"},{"@type":"ListItem","position":2,"name":"Dev Report","item":"https:\/\/nownodes.io\/blog\/category\/dev-report"},{"@type":"ListItem","position":3,"name":"How to Build a Real-Time Hyperliquid Whale Alert Bot"}]},{"@type":"WebSite","@id":"https:\/\/nownodes.io\/blog\/#website","url":"https:\/\/nownodes.io\/blog\/","name":"NOWNodes Blog","description":"Your first-to-go source of development guides, web3 analytics and most recent news about NOWNodes","publisher":{"@id":"https:\/\/nownodes.io\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nownodes.io\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/nownodes.io\/blog\/#organization","name":"NOWNodes Blog","url":"https:\/\/nownodes.io\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nownodes.io\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2024\/02\/cropped-New-Logo-NN.png","contentUrl":"https:\/\/nownodes.io\/blog\/wp-content\/uploads\/2024\/02\/cropped-New-Logo-NN.png","width":1164,"height":1164,"caption":"NOWNodes Blog"},"image":{"@id":"https:\/\/nownodes.io\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/twitter.com\/nownodes"]},{"@type":"Person","@id":"https:\/\/nownodes.io\/blog\/#\/schema\/person\/0890ec68e813adecb93c18ee00e1e7a8","name":"\u0410nastasia","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nownodes.io\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/1de24ab8dcdd7ec30f6adaf78b56bc1eda421f87575b7e103c8fc3fc4420e833?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1de24ab8dcdd7ec30f6adaf78b56bc1eda421f87575b7e103c8fc3fc4420e833?s=96&d=mm&r=g","caption":"\u0410nastasia"},"url":"https:\/\/nownodes.io\/blog\/author\/nasty-nownodes"}]}},"modified_by":"\u0410nastasia","_links":{"self":[{"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/posts\/4002","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/comments?post=4002"}],"version-history":[{"count":1,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/posts\/4002\/revisions"}],"predecessor-version":[{"id":4006,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/posts\/4002\/revisions\/4006"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/media\/4005"}],"wp:attachment":[{"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/media?parent=4002"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/categories?post=4002"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nownodes.io\/blog\/wp-json\/wp\/v2\/tags?post=4002"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}