Telegram Bot API for Crypto: Build Your First Trading Bot
A practical guide to using the Telegram Bot API for crypto trading alerts — covers authentication, Binance API integration, and building real-time price monitors with Python.
A practical guide to using the Telegram Bot API for crypto trading alerts — covers authentication, Binance API integration, and building real-time price monitors with Python.
Every serious crypto trader has missed a move because they weren't watching the screen. Markets don't wait — BTC can rip 5% while you're in a meeting, and by the time you check your phone, the entry is long gone. The Telegram Bot API solves this. It gives you a programmable pipeline straight to your pocket: a bot that watches markets 24/7 on your behalf and fires an alert the instant something worth trading happens.
This guide walks through the complete setup — creating a bot, authenticating with the Telegram API, pulling live prices from exchange APIs, and building a monitoring loop with proper error handling. By the end you'll have working Python code you can deploy and run today. No third-party bots, no paid services, no subscriptions — just the raw API and a few lines of code.
Telegram isn't just a messaging app — its Bot API is one of the most reliable and free delivery mechanisms for real-time notifications in crypto. Unlike email, which can delay by minutes, or SMS, which costs money and strips formatting, Telegram messages arrive in under a second, work globally without carrier restrictions, and support rich formatting including bold text, links, and inline keyboards. For algo traders and signal followers alike, it has become the default notification layer.
Creating a Telegram bot takes about two minutes. Open Telegram and search for @BotFather — Telegram's official bot manager. Send it /newbot, choose a display name and a username ending in 'bot', and BotFather returns a token that looks like 123456789:ABCdefGHIjklMNOpqrsTUVwxyz. Treat this token like a private key — anyone who has it controls your bot completely. Once you have the token, verify the connection with a simple API call and send your first test message.
import requests
BOT_TOKEN = 'YOUR_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'
# Step 1: Verify bot is alive
def get_bot_info():
url = f'https://api.telegram.org/bot{BOT_TOKEN}/getMe'
response = requests.get(url, timeout=5)
response.raise_for_status()
return response.json()['result']
info = get_bot_info()
print(f"Bot ready: @{info['username']}")
# Step 2: Send a formatted message
def send_message(text, parse_mode='Markdown'):
url = f'https://api.telegram.org/bot{BOT_TOKEN}/sendMessage'
payload = {
'chat_id': CHAT_ID,
'text': text,
'parse_mode': parse_mode
}
response = requests.post(url, json=payload, timeout=10)
response.raise_for_status()
return response.json()
send_message('*Bot is live!* Monitoring crypto markets 24/7.')
To find your CHAT_ID: send any message to your bot in Telegram, then open https://api.telegram.org/bot{YOUR_TOKEN}/getUpdates in your browser. Look for result[0].message.chat.id — that number is the value you pass as CHAT_ID.
Binance has one of the most accessible public APIs in crypto — no API key or account required for market data. The /api/v3/ticker/price endpoint returns the current price for any trading pair in milliseconds. The /api/v3/ticker/24hr endpoint goes further, adding 24-hour high, low, volume, and percentage change — everything you need to build a meaningful alert message. These endpoints handle thousands of requests per minute from a single IP, making them ideal for a personal alert bot.
import requests
BINANCE_BASE = 'https://api.binance.com/api/v3'
def get_price(symbol='BTCUSDT'):
# No API key needed for public market data
r = requests.get(
f'{BINANCE_BASE}/ticker/price',
params={'symbol': symbol},
timeout=5
)
r.raise_for_status()
return float(r.json()['price'])
def get_24h_stats(symbol='BTCUSDT'):
r = requests.get(
f'{BINANCE_BASE}/ticker/24hr',
params={'symbol': symbol},
timeout=5
)
r.raise_for_status()
data = r.json()
return {
'price': float(data['lastPrice']),
'change_pct': float(data['priceChangePercent']),
'high': float(data['highPrice']),
'low': float(data['lowPrice']),
'volume_usd': float(data['quoteVolume'])
}
# Test with multiple pairs
for sym in ['BTCUSDT', 'ETHUSDT', 'SOLUSDT']:
stats = get_24h_stats(sym)
price = stats['price']
chg = stats['change_pct']
print(f'{sym}: ${price:>12,.2f} 24h: {chg:+.2f}%')
The same pattern applies to other major venues. Bybit's public ticker endpoint is at https://api.bybit.com/v5/market/tickers?category=spot, OKX serves market data at https://www.okx.com/api/v5/market/ticker, and Coinbase Advanced Trade has a ticker endpoint under /api/v3/brokerage/market/products. Each exchange wraps the price data slightly differently, but the HTTP GET and JSON parse pattern is identical across all of them. For most alert bots, Binance is the safest starting point — it has the highest API uptime and deepest liquidity, which means prices are the most accurate reference for the broader market.
The bot below runs a continuous monitoring loop, handles API errors without crashing, and resets its price baseline after each alert — so you get incremental move alerts rather than one alert that never fires again. It also logs every check locally so you can audit what triggered and when. Drop in your token and chat ID, set the threshold, and run it.
import requests
import time
from datetime import datetime
BOT_TOKEN = 'YOUR_BOT_TOKEN'
CHAT_ID = 'YOUR_CHAT_ID'
SYMBOL = 'BTCUSDT'
THRESHOLD = 2.0 # alert on 2% move
INTERVAL = 60 # seconds between price checks
def get_price(symbol):
try:
r = requests.get(
'https://api.binance.com/api/v3/ticker/price',
params={'symbol': symbol},
timeout=5
)
r.raise_for_status()
return float(r.json()['price'])
except requests.RequestException as e:
print(f'[{datetime.now():%H:%M}] Price error: {e}')
return None
def send_alert(text):
try:
r = requests.post(
f'https://api.telegram.org/bot{BOT_TOKEN}/sendMessage',
json={'chat_id': CHAT_ID, 'text': text, 'parse_mode': 'Markdown'},
timeout=10
)
r.raise_for_status()
return True
except requests.RequestException as e:
print(f'Telegram error: {e}')
return False
def format_alert(symbol, direction, price, change):
now = datetime.now().strftime('%H:%M:%S')
return '\n'.join([
f'*{symbol} {direction}*',
f'Price: ${price:,.2f}',
f'Change: {change:+.2f}%',
f'Time: {now}'
])
def main():
baseline = get_price(SYMBOL)
print(f'Monitor started | {SYMBOL} baseline: ${baseline:,.2f}')
send_alert(f'*Monitor started*\n{SYMBOL}: ${baseline:,.2f}')
while True:
time.sleep(INTERVAL)
current = get_price(SYMBOL)
if current is None or baseline is None:
continue
pct_change = (current - baseline) / baseline * 100
if abs(pct_change) >= THRESHOLD:
direction = 'PUMP' if pct_change > 0 else 'DUMP'
msg = format_alert(SYMBOL, direction, current, pct_change)
if send_alert(msg):
print(f'Alert fired: {pct_change:+.2f}%')
baseline = current # reset so next alert tracks from here
if __name__ == '__main__':
main()
Run this in a tmux session or register it as a systemd service so it survives terminal closes and reboots. A $4/month VPS handles this easily and keeps alerts firing even when your laptop is off.
A price alert is reactive — it tells you something already happened. The real edge comes from getting ahead of the move by tracking order flow signals: large buy and sell imbalances, volume spikes relative to historical baseline, and whale accumulation patterns that appear before price follows. Platforms like VoiceOfChain aggregate these signals in real time across multiple markets, detecting smart money positioning before the move is visible on the chart. Wiring your Telegram bot to a signal feed like this turns it from a price tracker into a genuine information edge.
For traders covering multiple venues — BTC spot on Binance, ETH perpetuals on Bybit, high-cap altcoins on OKX, and lower-cap gems on KuCoin or Gate.io — a bot that consolidates signals across all exchanges into one Telegram channel is dramatically more useful than watching five separate charts. You can build routing logic so each exchange posts to its own thread, or aggregate everything into one feed with exchange tags in each message. The telegram crypto bot api also supports inline keyboards, letting you tap a button directly in an alert to open the chart or log whether you acted on the signal.
| Feature | Manual Monitoring | Telegram Bot |
|---|---|---|
| Response time to a move | Minutes (if you're watching) | Under 1 minute (configurable interval) |
| Market coverage | 1–2 charts at a time | Unlimited pairs simultaneously |
| Nights and weekends | Missed moves | 24/7 continuous monitoring |
| Alert content | Whatever you notice | Price, change %, volume, exchange source |
| Infrastructure cost | Your full attention | $4/mo VPS or free on local machine |
The Telegram Bot API paired with a free exchange price feed is one of the highest-leverage setups a crypto trader can put together. The infrastructure is free, the code runs to a few hundred lines, and once deployed you stop missing moves because you stepped away from the screen. Start with the price monitor above, verify it is alerting correctly with conservative thresholds, then layer in order flow data from platforms like VoiceOfChain to give your alerts genuine predictive value rather than just reaction speed.