Quick overview
This workflow runs every 30 minutes, checks UK bookmaker odds via the OddsRelay API within a token budget, compares the latest prices to the previous run, and sends a Telegram message when any tracked price moves beyond a configured percentage threshold.
How it works
- Runs every 30 minutes on a schedule trigger.
- Loads filter and alert settings (sports, markets, bookmakers, move threshold, token cap, and Telegram chat ID).
- Calls the OddsRelay
/v2/odds/raw endpoint in quote mode to estimate the token cost and stops with an error if it exceeds maxTokensPerRun.
- If the cost is within the cap, fetches current bookmaker prices from OddsRelay for events starting from now.
- Compares each fetched price to the last stored value in workflow static data, removes stored prices for events that have already started, and prepares an alert text listing the biggest moves that meet the threshold.
- Sends the prepared alert text to the configured Telegram chat, sending an initial “watching” message on the first scheduled run and sending nothing when there are no qualifying moves.
Setup
- Create an OddsRelay account and generate an API key.
- In n8n, add an HTTP Header Auth credential with header name
x-api-key and your OddsRelay API key, and select it in both OddsRelay HTTP Request steps.
- Create a Telegram bot with @BotFather, add its token as a Telegram credential in n8n, and send the bot a message to enable chat delivery.
- Replace
YOUR_TELEGRAM_CHAT_ID in the workflow settings with your chat ID and adjust sports/markets/bookmakers, moveThresholdPercent, and maxTokensPerRun as needed.
- Run the workflow once to confirm the “watching” message, then activate it so scheduled executions persist static data for comparisons.
Requirements
- An OddsRelay API key (sign up at app.oddsrelay.io)
- A Telegram bot token from @BotFather, and the ID of the chat to post to
- No community nodes: only n8n's own nodes
Customization
sports, markets and bookmakers: comma-separated keys from the API's /v2/sports and /v2/bookmakers. An exchange key here is watched on its back price.
moveThresholdPercent: the smallest move, as a percentage of the earlier price, that is sent.
maxTokensPerRun caps what one run may spend. Each run spends the call's price, so pick a schedule that suits your plan. Paid plans are for your own use; a tool that serves other people runs on Enterprise.
- To post to Slack, Discord or email instead, swap the last node.
Additional info
- n8n saves static data only on runs the schedule starts after the workflow is published. So the first scheduled run, like every manual run, only stores prices and sends the "Watching" message; moves come from the scheduled runs after it.
- Prices are kept per bookmaker, market and outcome, and dropped once their event starts, so the stored data stays small.
- Telegram gets three tries per message. A message that still fails is not sent again, because its prices are already stored, and the run shows as failed in Executions.
- API docs: https://oddsrelay.io/docs