Live Signals Bot: Find Matches That Fit Your Strategy Automatically and Get Telegram Alerts
How to build a live match scanner that finds games matching your rules — such as "0–0 after the 60th minute with over odds of 2+" — and sends a signal to Telegram.

A live signals bot saves you from watching in-play markets for hours. Every 30 seconds it takes all matches in progress from SportAPI, checks your rules — score, minute, statistics, odds — and as soon as a match fits your strategy, it sends a signal to Telegram. For example: “0–0 after the 60th minute, over odds of 2 or more”. The SportAPI Sports Odds API provides the data for such a scanner: live score, match clock, short statistics, and odds — from $30 a month per sport. And if you have no time to write the bot, SportAPI can build the strategy with signals as a turnkey project.
One thing up front: a signal is a match that fits your rules, not a guaranteed win. The value of a bot is saved time and discipline: it never misses a matching game and never acts on emotion.
How a live match scanner works
SportAPI (all live matches) → strategy rule check → Telegram signal
At every step the scanner has this data:
| Data | SportAPI field | Example rule |
|---|---|---|
| Score | score_full | Score 0:0 |
| Match clock | timer (seconds) | After the 60th minute |
| Period | period_name | Second half |
| Live statistics | stat_list: attacks, dangerous attacks, shots on target, corners, cards, xG | At least 6 shots on target |
| Markets and odds | game_oc_list | Over odds of 2.0 or more |
| Closed selection | oc_block | No signal if the selection is closed |
One request to the live match list returns every match of the sport with score, statistics, and main markets, so the scanner stays fast even across hundreds of matches.
How to turn a strategy into rules
You cannot tell a bot “find promising matches” — it needs exact conditions. Take the strategy from the player’s request:
| Condition | How to check it |
|---|---|
| Score 0:0 | score_full == "0:0" |
| 60th minute or later | timer // 60 >= 60 |
| Over odds of 2 or more | an “Over” selection in the “Total” group, oc_rate >= 2.0 |
| The selection is open for betting | oc_block == false |
| One signal per match | the match ID is remembered after sending |
Other popular in-play strategies are written the same way: “the favourite has twice as many dangerous attacks but is losing”, “more than 8 corners by the 70th minute”, “a red card for the favourite in the first half”. Stats and their IDs are listed in the live statistics documentation.
A ready-to-run Python bot
The bot finds football matches at 0:0 after the 60th minute where over odds are 2 or more, and sends a Telegram signal with the number of shots on target:
import time
import requests
API = "https://YOUR_API_DOMAIN/v1"
HEADERS = {"Package": "YOUR_SPORTAPI_KEY"}
BOT_TOKEN = "YOUR_BOT_TOKEN"
CHAT_ID = "YOUR_CHAT_ID"
# Strategy rules
SCORE = "0:0"
MIN_MINUTE = 60
MIN_ODDS = 2.0
sent = set() # matches that already got a signal
def over_odds(match):
"""Open "over" selections from the main totals market."""
for group in match.get("game_oc_list", []):
if group["group_name"] == "Total":
return [(o["oc_name"], o["oc_rate"]) for o in group["oc_list"]
if o["oc_name"].startswith("Over") and not o["oc_block"]]
return []
def stat_total(match, stat_id):
"""Sum of a live stat for both teams, or None."""
for item in match.get("stat_list", []):
if item["id"] == stat_id:
return int(float(item["opp1"]) + float(item["opp2"]))
return None
def scan():
url = f"{API}/events/1/0/sub/50/live/en"
response = requests.get(url, headers=HEADERS, timeout=10)
response.raise_for_status()
for tournament in response.json()["body"]:
for match in tournament["events_list"]:
minute = match["timer"] // 60
if match["game_id"] in sent or match["score_full"] != SCORE or minute < MIN_MINUTE:
continue
for name, rate in over_odds(match):
if rate < MIN_ODDS:
continue
shots = stat_total(match, 59) # 59 — shots on target
text = (
f"⚡ {match['opp_1_name']} vs {match['opp_2_name']}\n"
f"{tournament['tournament_name']}\n"
f"{minute}' · score {SCORE} · total {name} at {rate}"
)
if shots is not None:
text += f"\nShots on target: {shots}"
requests.post(
f"https://api.telegram.org/bot{BOT_TOKEN}/sendMessage",
json={"chat_id": CHAT_ID, "text": text},
timeout=10,
)
sent.add(match["game_id"])
break
while True:
try:
scan()
except requests.RequestException as error:
print("Request error:", error)
time.sleep(30)
What you need to run it:
- Create a bot with BotFather and find the ID of the chat for signals — a private chat or a channel.
- Get a SportAPI trial key and put it in place of
YOUR_SPORTAPI_KEY. - Run the script on a server or computer that is always on.
The strategy rules sit at the top: to change the conditions, edit SCORE, MIN_MINUTE, and MIN_ODDS. One request every 30 seconds stays within the documented guidance — the live match list may be refreshed no more often than every 7 seconds.
How to avoid junk signals
- One signal per match. Without remembering sent matches, the bot repeats the same signal every 30 seconds.
- Open selections only. If
oc_blockistrue, the selection cannot be bet on right now, so the signal is useless. - Statistics are not always there. In the saved documentation example, live statistics were filled for 16 of 39 matches. If a rule depends on statistics, skip matches without them instead of treating them as zero.
- Filter competitions. Youth and amateur leagues produce many signals but less information. Limit the competition list if you only want top matches.
- Keep the rule count low. More conditions mean fewer signals. Start with three or four rules and refine them on results.
Test the strategy before you trust it
Save every signal — match, minute, odds — and mark the result after the match. Final scores come in automatically from the Sports Results API. After a few hundred signals you will see whether the strategy works over the long run or only looked good on a couple of examples. Without that record, any bot is just pretty notifications.
A turnkey strategy if you have no time to code
SportAPI develops turnkey sports strategies: it formalizes your rules, connects the data, builds match monitoring with protection against repeat signals, stores trigger history, and sends alerts to Telegram, email, or a webhook. Thresholds, sports, and competitions can be changed in settings without rewriting code.
What it costs
| What you need | Cost |
|---|---|
| Live data for one sport: score, clock, short statistics, markets, and odds | from $30 a month |
| Final scores for testing the strategy | from $25 a month per sport, +$10 for each extra language |
| Turnkey strategy with signals | Terms from the manager |
| Testing before you pay | 2-day trial key, all sports |
FAQ
Can I build a signals bot without coding?
You can run the script from this article changing only the keys and the three rules at the top. For complex conditions, history, and settings without code, order a turnkey strategy.
How often does the bot check matches?
Every 30 seconds. More often is not needed: minute-and-score signals are not lost in half a minute, and the documentation allows refreshing the live match list no more often than every 7 seconds.
What data can I use in the rules?
Score, match clock and period, short live statistics — attacks, dangerous attacks, shots, corners, cards, xG — plus markets and odds. The full list of stats is in the live statistics documentation.
Does the bot work for other sports?
Yes. Replace the sport ID in the request — ice hockey or basketball, for example — and adapt the rules: use periods, quarters, and points instead of minutes and goals.
Does the bot guarantee winnings?
No. The bot finds matches that fit your rules but does not make the strategy profitable. Test it on your signal history before making decisions.
What to do today
- Write your strategy as 3–4 exact conditions.
- Get a SportAPI trial key and create a Telegram bot.
- Run the script from this article with your rules.
- Save signals and match results.
- After a couple of weeks, evaluate the strategy on the numbers and decide what to improve.
Message the SportAPI manager on Telegram with the strategy you want to automate — you will get a trial key for the Sports Odds API or can discuss a turnkey strategy.