SportAPI
API integration

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 radar scans live matches and sends a Telegram signal when the strategy rules match

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:

DataSportAPI fieldExample rule
Scorescore_fullScore 0:0
Match clocktimer (seconds)After the 60th minute
Periodperiod_nameSecond half
Live statisticsstat_list: attacks, dangerous attacks, shots on target, corners, cards, xGAt least 6 shots on target
Markets and oddsgame_oc_listOver odds of 2.0 or more
Closed selectionoc_blockNo 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:

ConditionHow to check it
Score 0:0score_full == "0:0"
60th minute or latertimer // 60 >= 60
Over odds of 2 or morean “Over” selection in the “Total” group, oc_rate >= 2.0
The selection is open for bettingoc_block == false
One signal per matchthe 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:

  1. Create a bot with BotFather and find the ID of the chat for signals — a private chat or a channel.
  2. Get a SportAPI trial key and put it in place of YOUR_SPORTAPI_KEY.
  3. 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_block is true, 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 needCost
Live data for one sport: score, clock, short statistics, markets, and oddsfrom $30 a month
Final scores for testing the strategyfrom $25 a month per sport, +$10 for each extra language
Turnkey strategy with signalsTerms from the manager
Testing before you pay2-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

  1. Write your strategy as 3–4 exact conditions.
  2. Get a SportAPI trial key and create a Telegram bot.
  3. Run the script from this article with your rules.
  4. Save signals and match results.
  5. 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.

← All articles