An embeddable sportsbook is a complete betting product (sports, markets, a betslip, live odds, settlement and bet history) that you add to your own website or app with an iframe, a small JavaScript SDK and a server-side API key. Your server opens a session for a logged-in user, your page mounts the sportsbook, and the platform handles odds, results and settlement. The worked example throughout is The Sportsbook, a play-for-fun sportsbook: players bet free tokens, never real money.
Key takeaways
- An embeddable sportsbook is a hosted betting interface plus a session and balance API. It is different from an odds widget (display only) and an odds API (raw prices, you build the rest).
- The integration is three steps: your server opens a session, your page mounts the embed, your server manages token balances in managed or seamless mode.
- Launch tokens are single use and live 60 seconds. Player sessions last 12 hours and can be renewed without reloading the page.
- The Sportsbook covers 11 sports, singles and accumulators, six odds formats, English and Spanish, pre-match and live, with automatic settlement and re-settlement.
- Real-money white labels start in the tens of thousands of euros according to industry sources. A play-for-fun sportsbook starts at $0 on a Free plan (September 2026).
- You can try the real embed with no sign-up in the sportsbook demo (opens in a new tab).
On this page14 sections
- What an embeddable sportsbook is (and what it isn't)
- Who embeds a sportsbook
- How an embeddable sportsbook works
- What you get out of the box
- Sports and leagues
- Markets and bet types
- Live betting
- Settlement
- Odds formats and languages
- Token balances: managed vs seamless
- Branding and layout
- Security model
- Running it: the console
- The play-for-fun rules
- Costs: embeddable vs white label vs building
- How to choose an embeddable sportsbook provider
- Getting started in about 15 minutes
- Where to go next
- Frequently asked questions
What an embeddable sportsbook is (and what it isn't)
The phrase "sportsbook embed" gets used for at least four different products. They solve different problems, and mixing them up is the most common reason teams pick the wrong vendor.
| Product | What you get | What you still build | Typical buyer |
|---|---|---|---|
| Odds widget | A box of prices, often with bookmaker links | Everything else; usually there is no betting at all | Affiliate and content sites |
| Odds API | A feed of raw prices and fixtures | The betslip, accounts, balances, settlement, results, history, back office | Developers building data tools or their own book |
| Real-money white label | A branded betting site under a provider's license and payments | Marketing, player acquisition, often licensing | Licensed or licensing operators |
| Embeddable play-for-fun sportsbook | The full betting interface inside your page, plus a session and balance API | Your login and how players get free tokens | Sites and apps with their own users |
An embeddable sportsbook is the last row. The player never leaves your site. They sign in with your account system, open a page, and see a full sportsbook in the layout and colors you picked. Behind it, the platform keeps the fixtures and prices current, accepts bets, settles them when results come in, and keeps a history per player.
It is not an odds widget. A widget shows prices and usually sends the click to a bookmaker. In a play-for-fun embed the bet happens inside the frame, and our Acceptable Use Policy forbids bookmaker links, affiliate links and promo codes in or around it. If you are weighing data feeds against a hosted product, the sportsbook API vs odds API comparison goes through the trade-offs in detail.
It is not a real-money white label either. Nothing a player stakes has value, so there are no payment methods, no payment-related identity checks and no player funds to hold. That is a different product with different buyers, and we say so plainly throughout this guide.
Who embeds a sportsbook
Anyone whose site or app already has signed-in users, and often a points or token habit, is a candidate. The groups we see most often:
- Creators and streamers. The sportsbook runs on the creator's own website where viewers sign in, and the creator links to it from the stream, chat or Discord. There is no Twitch, Kick or Discord integration; the link is the integration. More in a play-for-fun sportsbook for streamers.
- Communities. Forums, Discord servers with a companion site, club supporter sites. The sportsbook gives members something to do during matches that ties back to the community.
- Sports media and fan sites. A match report becomes a match page with odds and a betslip, plus a leaderboard the site builds from its players' bets. See the sportsbook for sports media and fan sites.
- Game studios and apps. The embed is a web page, so an app can show it in a web view if the studio chooses to. We don't ship a native SDK.
- Companies and clubs. A season-long league on an intranet or members' site instead of a one-off office pool. The Sportsbook is for businesses and professional creators, 18+.
What these have in common is that the operator already owns the relationship with the user. The sportsbook adds a reason to come back during every match. It doesn't bring its own audience.
How an embeddable sportsbook works
The integration has three moving parts: your server, your page, and the token balance. Here is the sequence for one player, end to end.
- The player signs in on your site. This is your existing login. The sportsbook never sees passwords or emails.
- Your server opens a session. With your API key, it calls
POST /b2b/v1/sessionsand passes your own pseudonymous id for the player asuser_ref. It gets back alaunch_url. - Your page mounts the embed. The SDK creates an iframe from the
launch_url. The embed exchanges the single-use launch token for a 12-hour player session and removes the token from the URL. - The player bets tokens. The betslip checks the balance, your stake limits and the current price, then accepts the bet.
- Balances move. In managed mode the platform updates its record of the player's balance. In seamless mode it calls your wallet endpoint to debit the stake.
- Results settle bets. When the match ends, the bet settles and the return goes back to the balance. If a result is corrected later, the bet is re-settled.
- Your page hears about it. The embed posts events such as
bet-placedandtokens-requestedto your page, so you can refresh a balance widget or open your free refill.
Steps 2 and 3 are the whole integration on the page side. The server call looks like this:
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"}'It returns:
{ "launch_token": "eyJhbGciOi...", "launch_url": "https://play.thesportsbook.app/embed?token=eyJhbGciOi...", "expires_in": 60}And the page needs two lines:
<div data-thesportsbook data-launch-url="LAUNCH_URL_FROM_YOUR_SERVER"></div><script src="https://play.thesportsbook.app/sdk.js"></script>That is the no-code variant: the SDK finds the element and mounts the sportsbook on page load. If you want callbacks (refresh a balance after a bet, renew an expired session), use TheSportsbook.init() instead. The step-by-step embed guide walks through both, and the sportsbook iframe integration guide covers events, auto height and the raw iframe for teams that don't want the SDK. Framework-specific versions live in embedding a sportsbook in React or Next.js and adding a sportsbook to WordPress.
What you get out of the box
The point of embedding is that the hard parts come with the platform. Odds, results and settlement come with the platform, so you don't need your own odds feed, results source, trading staff or settlement code. Here is what The Sportsbook includes today.
Sports and leagues
Eleven sports: football, basketball, tennis, ice hockey, baseball, volleyball, American football, esports, UFC, martial arts (MMA) and boxing. Esports titles appear as leagues.
Leagues come from a catalog of more than a thousand. You pick them one by one in the console, which keeps the sportsbook focused on what your audience actually follows. There is no "select all" switch on any plan. A newly picked league starts showing its matches within about two minutes.
Markets and bet types
Each match page shows the full list of markets we carry for that match. If some markets don't suit your audience, you can hide them per sport in the console, on every plan.
Players can place singles and accumulators. Asian lines settle as half won or half lost where the line requires it. Cash-out, bet builders and live video streams are not part of the product.
Live betting
Pre-match betting is on every plan. Live betting is an add-on on Custom and included in Full. Live bets wait a short acceptance window and are re-checked against the current price before they are accepted, which is how every serious sportsbook handles in-play prices that move while the player is clicking. On sports that support it, a 2D match viewer shows the state of play next to the live markets (an add-on that needs live, or included in Full).
Settlement
Settlement is automatic. Most bets settle minutes after the final whistle; a few wait for official results or a check by our team. If a result is corrected later, the bet is re-settled and your wallet is told. You never write grading logic.
Odds formats and languages
Each player picks their odds format: decimal, fractional, American, Hong Kong, Indonesian or Malay. The interface runs in English and Spanish, with a default per sportsbook and an override per session through the locale field.
Token balances: managed vs seamless
Every bet moves tokens, so somebody has to keep the balance. You choose where it lives.
| Managed (Hosted Token Balance) | Seamless (Operator-Held Token Balance) | |
|---|---|---|
| Where the balance lives | The platform keeps each player's token balance as a record | Your system keeps it |
| How you add tokens | Credit and debit calls to our API | Your own code, in your own database |
| What the platform calls | Nothing on your side | Your debit, credit and rollback endpoints, HMAC-SHA256 signed |
| Plans | Every plan | Custom add-on or included in Full |
| Best for | Most sites, and anyone starting out | Operators who already run a token or points balance and want one source of truth |
Managed is the default and the right choice for most teams. You give a player a starting balance with a credit call, add a daily refill the same way, and read the balance whenever you want to show it on your own pages. Every token-moving call takes an idempotency_key, so a retry never moves tokens twice. The managed balance section of the docs (opens in a new tab) has the calls.
Seamless is for operators with an existing balance service. We send a debit when a bet is placed, a credit when it settles and a rollback when it is voided. Placement debits are synchronous, with up to 3 attempts within 6 seconds; credits and rollbacks go through a durable queue with up to 20 attempts. Your endpoint should answer within 5 seconds over HTTPS. If your wallet is down, the bet isn't placed. Your wallet URL and signing secret are configured on our side, so seamless mode starts with a message to us through the contact page. The seamless wallet integration guide covers signatures, idempotency and reconciliation.
One rule applies to both: the balance must be a separate balance of free tokens. If you run a loyalty scheme, the sportsbook uses a separate free token balance that can't be converted to or from your loyalty points.
Branding and layout
A white label sportsbook, in the sense most people mean it, is one that looks like yours. The Sportsbook does that through a Studio in the console rather than custom CSS.
Layout (every plan). Navigation as a sidebar or a top bar. Match cards as a list or a grid. The betslip floating in the bottom right (the default) or docked in a right-hand column. The layout follows the width of the iframe, not the browser window, so the same embed works in a full-width page or a narrow column. On a phone the sidebar becomes a drawer and the betslip becomes a bottom sheet.
Look (every plan). Six presets (Light neutral, Dark neutral, Midnight blue, Forest, Crimson, Mono), every color, your logo and favicon, and a corner radius from 0 to 20 px. The Studio checks text and odds colors against WCAG AA before you save.
Type and density (paid plans). 18 Google Fonts or up to four of your own font files, a separate heading font, a base size from 13 to 16 px, comfortable or compact density, and pill or block odds buttons.
Every value is validated, which is why there is no custom CSS: nothing you save can break the betslip on a phone. Saved changes reach open sportsbooks within seconds, and you can preview at desktop, tablet and phone widths before publishing. The Free plan shows a small "Powered by" badge; paid plans have it off by default. There is no custom domain today: the sportsbook loads from play.thesportsbook.app inside your page. The white-label sportsbook branding walkthrough goes screen by screen.
Security model
An embeddable sportsbook sits at the boundary between your site and someone else's service, so it's worth knowing exactly what protects it.
API keys. A key looks like sbk_<prefix>_<secret>. It is shown once and stored as a hash. It belongs on your server only, never in a browser or an app. You can hold several keys for rotation, and a revoked key stops working on the next request.
Launch tokens. The launch_url your server gets is single use and expires after 60 seconds. Create it right before you render the page and never cache it. A page cache that stores the HTML with a launch URL inside will serve every visitor a dead link, or worse, the same player's link.
Player sessions. The embed exchanges the launch token for a 12-hour session. When it ends, the SDK tells your page, your server opens a fresh session, and updateToken() swaps it without reloading the iframe.
Player identity. user_ref is your own pseudonymous id for the player, 1 to 128 characters. Never an email or a real name, and never a value taken from the browser. The server decides who the player is.
Allowed origins. In Settings you list the exact origins of the sites that embed your sportsbook; they govern browser access to the API. They don't stop another site from framing the embed. What protects a sportsbook is that only your server, with your API key, can open player sessions for it.
postMessage. If you use the raw iframe, check event.origin and event.source on every message, and always pass the embed origin when posting to the iframe, never "*". Never move tokens because of a browser event; the API or your wallet calls are the source of truth.
Rate limits. 600 requests a minute per API key on the server API. Inside the embed, 100 requests a minute per player per endpoint, counted per player rather than per IP, so a watch party on one connection isn't throttled.
Seamless wallet signatures. HMAC-SHA256 over the timestamp and raw body, compared in constant time, with timestamps outside a 5-minute window rejected.
The full list is the security checklist in the docs (opens in a new tab).
Running it: the console
Once players arrive, the work moves from code to the operator console at console.thesportsbook.app.
- Overview: tokens staked, net token result, token hold, tokens on open bets and active players, with breakdowns by sport, league and market.
- Players: bet history per player, balance adjustments with a reason, and blocking. A block ends the player's open sessions within about a second.
- Bets: filters and a timeline per bet. Paid plans add a CSV export of up to 50,000 rows.
- Limits: a minimum stake, maximum pre-match and live stakes, and a maximum return.
- Maintenance mode: pause betting on your sportsbook with your own message, for example during a moderation issue.
- Sports, leagues and markets: add leagues one by one, hide markets per sport.
- Wallet and reconciliation: in seamless mode, operations that couldn't be delivered show up here.
- Team: owner, admin and viewer roles, with an audit log on paid plans.
If a player asks to stop playing, you block them. That is a rule in our policy, not a suggestion, and the console makes it one click.
The play-for-fun rules
The whole product depends on one rule: tokens are worthless in both directions. In practice that means:
- Tokens in are free. Players get free tokens your players earn on your site: a starting balance, a daily refill, points for taking part. Tokens can come from free engagement such as watch time, follows or chat activity, at the same rate for everyone. Never for subscriptions, bits, donations or tips, and never sold.
- Nothing of value comes out. No cash, gift cards, merchandise, game items or subscriptions for balances or rankings. Leaderboard positions, badges, titles and community roles are fine; prizes of value are not.
- The "Get more tokens" button opens a free refill. The embed shows it when a player runs low and fires the
tokens-requestedevent; what your page shows must be free, with no price and no purchase. - Token labels are words.
TOKENS,COINS,POINTSor your community's own name. Currency symbols and codes like$orUSDare not allowed. - 18+ and not aimed at minors. You use age-assurance measures that fit your audience.
- Disclosures before the first bet. Players are told the sportsbook is for entertainment, tokens have no value, no real money can be staked or won, players must be 18+, and you run the sportsbook and its tokens. The player notice template meets these requirements.
- No bookmaker links. No affiliate links, promo codes or bookmaker branding in or around the embed.
Play-for-fun by design means no money in and no money out. It doesn't mean every question about your community is settled: you are responsible for running your community and its tokens lawfully wherever your players are, so check with a lawyer in your jurisdiction. For the category itself, and how it differs from social and sweepstakes models, read what a play-for-fun sportsbook is.
Costs: embeddable vs white label vs building
Sportsbook pricing is famously opaque. Of the real-money vendors we checked, only BetConstruct publishes prices on its sportsbook page. Here is the spread from published sources, next to ours.
| Option | Published cost | Source |
|---|---|---|
| Build your own sportsbook | €1.5m+ plus staffing; 6 to 18 months to launch | According to Altenar (opens in a new tab) (cost) and Bettoblock (opens in a new tab) (time) |
| Real-money turnkey | €100k–€500k+ | According to Altenar (opens in a new tab) |
| Real-money white label | €25k–€50k setup | According to Altenar (opens in a new tab) |
| Real-money white label, first year | $30,000–$200,000+, including 15–40% of GGR as revenue share | According to TRUEiGTECH (opens in a new tab) |
| BetConstruct's own price list | €19.9K setup; white label revenue share 60% to BetConstruct ("prices may change per market") | BetConstruct (opens in a new tab) |
| Embeddable play-for-fun (The Sportsbook) | $0 Free; Custom from $49/month; Full $490/month | Our pricing, September 2026 |
These are not like-for-like. A real-money budget also carries licenses, payment processing, reserves and compliance staff that a play-for-fun sportsbook doesn't use. The comparison is useful for one decision: if your goal is engagement rather than a betting business, you don't need to spend like a betting business.
Our plans at the time of writing (September 2026):
| Free | Custom | Full | |
|---|---|---|---|
| Price, monthly | $0 | from $49 / month | $490 / month |
| Price, billed yearly | $0 | from $39 / month | $399 / month |
| Sports | 1 | 1 in the base, + $25 / month each | all 11 |
| Leagues | up to 3 | 5 per sport, more in packs of 5 | unlimited, picked one by one |
| Live betting | no | add-on, $79 / month | included |
| Seamless wallet | no | add-on, $49 / month | included |
| Monthly active players | up to 250 | up to 5,000 | no cap (fair use) |
Billed yearly saves up to 20%. Prices exclude VAT, payment is in crypto from the console, and nothing renews automatically. Paid plans are a flat price per month or per year; we don't take a share of tokens or of what players stake. Current numbers are always on the pricing page. For the full breakdown of real-money white label pricing, read white label sportsbook cost in 2026, and for the engineering view, build or embed a sportsbook.
How to choose an embeddable sportsbook provider
We're built by people with seven years of experience building sportsbook software, and these are the questions we'd ask any provider, including us.
- Is it a real-money product or play-for-fun? This decides everything else. If you need real-money betting, talk to licensed real-money vendors; a play-for-fun product is built for something else. We found no vendor offering a full play-for-fun sportsbook (odds, betslip, live markets) for sites that aren't betting operators, with public self-serve pricing.
- Can you see the code before you sign? Ask for the session call and the embed snippet. If a vendor can't show you how a player session is created, you can't judge its security.
- How are sessions secured? Short-lived, single-use launch tokens and server-only keys are the baseline. Ask how long a launch token lives and whether it can be replayed.
- Where does the balance live, and what happens on retries? Look for idempotency keys on every balance movement and a clear answer to "what if my wallet times out mid-bet?"
- Who settles bets, and what happens when a result changes? Automatic settlement is table stakes. Re-settlement, and how your wallet is told about it, is where products differ.
- Does it follow your layout? Ask how it behaves in a narrow column, on a phone, and whether the iframe resizes to its content.
- What can you brand without custom code? Colors, fonts, logo, layout and token name should be settings, not a services project.
- Can you pick leagues and hide markets? A fan site for one league shouldn't show a thousand others.
- What does the back office give you? Blocking, stake limits, maintenance mode, exports and an audit trail.
- Is the price public? If you have to book a call to learn whether it costs $50 or €50,000, budget time for that.
- Can you try it without a sales call? A public demo or a free tier tells you more than a deck.
Getting started in about 15 minutes
If you already have a site with logged-in users and a server that can make an HTTPS call, the path to a first test bet is short.
- Create your sportsbook. Sign up at the console with email and password or Google, confirm your email with the 6-digit code, name your sportsbook and pick its primary sport. It starts on Free and nobody has to approve it.
- Copy your API key. The confirmation screen shows it once. Put it in an environment variable on your server.
- Pick your leagues. Add up to three on Free, one by one.
- Open a session. Add a server route that calls
POST /b2b/v1/sessionsfor the signed-in user and returns thelaunch_url. - Mount the embed. Paste the two lines of HTML into the page, with the
launch_urlfrom step 4. - Give tokens. Credit a starting balance through the managed balance API, and decide how the "Get more tokens" button refills players for free.
- Brand it. Pick a preset in the Studio, set your colors and logo, choose sidebar or top bar.
- Add your disclosures. Put the player notice in front of the first bet and link your player terms.
- Place a test bet. Check it in the console under Bets, then try the page on a phone.
The quick start in the docs (opens in a new tab) has the same steps with every field explained.
Where to go next
This guide is the hub for everything about embedding a sportsbook. The detailed guides:
- How to embed a sportsbook on your website, step by step
- Sportsbook iframe integration: sessions, events, height and security
- Adding a play-for-fun sportsbook to WordPress
- Embedding a sportsbook in React or Next.js
- Seamless wallet integration: debit, credit, rollback
- Sportsbook API vs odds API vs betting widget
- Build a sportsbook or embed one
- Branding a white-label sportsbook
- A play-for-fun sportsbook for sports media and fan sites
And the three other hubs: what a play-for-fun sportsbook is, white label sportsbook cost and a sportsbook for streamers and their communities.
The fastest way to judge any of this is to use it. The public sportsbook demo (opens in a new tab) runs the real embed with free demo tokens and no sign-up: switch between sidebar and top bar, list and grid, change the colors, and place a few bets.
Frequently asked questions
Can I embed a sportsbook on my website for free?
Yes, as a play-for-fun sportsbook. The Sportsbook's Free plan covers one sport, up to three leagues, pre-match betting and up to 250 monthly active players, with a 'Powered by' badge and no time limit today. You need a site where players sign in and a server that can make one API call.
What is the difference between a sportsbook iframe and a sportsbook API?
An iframe shows a finished sportsbook inside your page: markets, betslip, bet history. An API gives you data or operations and leaves the interface to you. Most embeddable sportsbooks use both: a small server API to open player sessions and move balances, and an iframe for everything the player sees.
Do I need a license to embed a play-for-fun sportsbook?
We can't answer that for your jurisdiction. The Sportsbook is built so nothing of value goes in or comes out: free tokens only, no purchases, no prizes of value, players 18+. The rules where your players live still apply, so check with a lawyer in your jurisdiction before you launch.
How long does it take to integrate an embeddable sportsbook?
The integration itself is one server call and two lines of HTML, so for a developer with an existing login system the path to a first test bet is short. Real-money integrations take longer because they also connect payments, identity checks and a licensed wallet, none of which a play-for-fun sportsbook uses.
Is an embeddable sportsbook the same as a white label sportsbook?
Not quite. A real-money white label is usually a full branded site running under the provider's license and payments. An embeddable sportsbook lives inside a page you already own and uses your users and login. The Sportsbook is white-label in the branding sense: your logo, colors, fonts and token name.
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 .