Skip to content

How to run a sports betting game for your Discord community (no real money)

Run a Discord sports betting game with no real money: a play-for-fun sportsbook on your community site, Discord sign-in, free tokens and roles as recognition.

Updated 7 min readBy The Sportsbook team

To run a Discord sports betting game for your community with no real money, put a play-for-fun sportsbook on a small website where members sign in with Discord, and link to it from your server. Members get free tokens, bet on real odds before and during matches, and bets settle automatically; you hand out roles as recognition.

Key takeaways

Discord betting bot vs a full sportsbook

Most Discord sports games are bots. A bot posts fixtures, members react or type a command to pick, and someone (or an integration) marks the result. For a weekly pick'em that works well, and there are plenty to choose from on bot listing sites.

A bot runs into limits when the game gets closer to a real sportsbook:

The two work together. Keep your bot for announcements and banter, and put the betting where there's room for it.

The setup: a community site with Discord sign-in

The architecture is small:

The server call (from your backend, never from the browser):

Shell
curl -X POST https://api.thesportsbook.app/b2b/v1/sessions \  -H "Authorization: Bearer $SPORTSBOOK_API_KEY" \  -H "Content-Type: application/json" \  -d '{"user_ref": "viewer-42", "display_name": "Viewer 42", "locale": "en"}'

And the page:

HTML
<div data-thesportsbook data-launch-url="LAUNCH_URL_FROM_YOUR_SERVER"></div><script src="https://play.thesportsbook.app/sdk.js"></script>

Don't cache the page or the launch URL: each one works once and expires in a minute. The player session it opens lasts 12 hours. Step-by-step instructions are in how to embed a sportsbook on your website.

Identity: should the Discord user id be the user_ref?

Our policy requires players to be identified only with pseudonymous identifiers: no email addresses, phone numbers, legal names or other direct identifiers, in any field.

A Discord user id is a stable number that anyone can look up on Discord. It isn't an email, but it points straight at a public account. The cleaner choice is your own id:

For display_name, use the nickname the member shows in your community. Display names may contain only a nickname or username the player chose, never a legal name from your records, and Discord's OAuth scopes can include an email address you must not forward. Ask for the smallest scope you need.

Tokens for server activity, at one rate for everyone

Every member starts with the same balance, credited by your server the first time they sign in. After that, a free refill (daily or weekly) keeps everyone playing. When a member presses "Get more tokens" in the sportsbook, your page gets the tokens-requested event and can show the refill.

Discord gives you plenty of free activity to reward:

The rule is that the number of tokens never depends on whether anyone paid. That rules out the Discord-specific paid things: Nitro boosts, paid roles, server subscriptions, and any role you sell elsewhere. "Boosters get double tokens" breaks the rule the same way "subscribers get double tokens" does on a stream. Keep activity rewards modest, too; a chat-spam leaderboard helps nobody. More in how to design a free token economy.

Roles as recognition

Discord roles are close to ideal recognition: visible, free, non-transferable, and meaningful inside the community. "Leaderboard positions, badges, titles and community roles are fine; prizes of value are not."

A few formats that work:

Two limits. A role must not give access to anything of value: no paid-channel access, no giveaway entries, no discount codes. And a giveaway you run for the whole server must stay separate from the sportsbook, not limited to people who played it.

Announcing results: SDK events plus your own bot

This is the part where a bot earns its place. We don't provide one, but you can wire your own with two sources.

On the page, the SDK fires bet-placed (bet id, stake, potential return) in the member's browser. Your page can tell your server "member X placed a bet", which your bot can turn into a message in #bets. Treat it as a signal only; never move tokens because of a browser event.

On your server, our API is the source of truth: a player's rounds (open or settled), all open rounds for your sportsbook, a single round, and summary reports. A scheduled job can read settled rounds after the day's matches, update your leaderboard table, and have your bot post the standings. The fields you get per round include the status, stake, odds, return, and each selection with its match and market.

Your bot's code, its token and its permissions are yours. Keep our API key on the server where the job runs; never put it in the bot's client or a public repo.

A match week on your server

A rhythm that works for most sports servers, whatever the sport:

The sportsbook does the betting and settlement. Your server does what Discord is good at: the talk around it.

Moderation: blocking a player, maintenance mode

Communities need moderation, and the console gives you the tools:

Before launch, set your server's rules: 18+ only, the sportsbook is for entertainment, tokens have no value and can't be traded, no real money is staked or won, and you, not us, run it. Our player notice template covers the required points. Discord's own terms and your server's rules apply on top; read them yourself, and check with a lawyer in your jurisdiction if you're unsure how the rules apply where your members are.

Which plan fits a Discord sports betting game

At the time of writing (September 2026), the Free plan covers one sport, up to three leagues, pre-match betting and up to 250 monthly active players, which is plenty for a server trying it out. Live betting during matches is a Custom add-on ($79 a month) or included in Full; Custom covers up to 5,000 monthly active players. See pricing for the current numbers.

If your server runs around a streamer, read the sportsbook for streamers guide. If it's an esports community, a play-for-fun esports betting game covers how esports titles appear. The integration docs (opens in a new tab) have every endpoint, and you can start free (opens in a new tab) with no approval step.

Frequently asked questions

Is there a Discord bot for The Sportsbook?

No. The Sportsbook doesn't ship a Discord bot or Discord Activity. The sportsbook runs on a web page you control, and you link to it from your server. If you want results posted in a channel, your own bot can read them from our API and post them.

How do I add a betting bot to Discord?

Bots are added from a listing site or a developer's invite link with the permissions they ask for. They're good for simple picks. For odds that move during the match, accumulators and automatic settlement, a full sportsbook on your community site, linked from Discord, does more than a bot can.

Can I give tokens to members who boost the server?

No. Nitro boosts, paid roles and server subscriptions are paid, so they can't grant tokens or extra tokens. Tokens can come from free activity such as chat participation or event attendance, at the same rate for every member.

Can the winner get a special Discord role?

Yes. A role, a color or a title is recognition, which is allowed as long as it's free, can't be transferred or bought, and doesn't give access to anything of value. A role that gives access to paid content or giveaways with prizes isn't allowed.

Written by

The Sportsbook team

The people who build The Sportsbook. We have spent seven years building sportsbook software, and we write these guides from that work.

Last updated .

Put a sportsbook on your website. Start on Free today.

One sport, pre-match, your brand, played with free tokens your players earn. Two lines of HTML and one API call.

Free plan · nothing to pay, no approval. For businesses and creators, 18+.