Skip to content

The complete guide to embeddable sportsbooks (2026)

An embeddable sportsbook adds odds, a betslip and settlement to your site via iframe and SDK. How it works, costs, and a play-for-fun, no-real-money option.

Updated 17 min readBy The Sportsbook team

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

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.

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:

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.

Steps 2 and 3 are the whole integration on the page side. The server call looks like this:

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"}'

It returns:

JSON
{  "launch_token": "eyJhbGciOi...",  "launch_url": "https://play.thesportsbook.app/embed?token=eyJhbGciOi...",  "expires_in": 60}

And the page needs two lines:

HTML
<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 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.

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:

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.

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):

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.

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.

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:

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 .

See it on a real page. Open the playground, no sign-up.

The playground is the real embed on a sample site, with free demo tokens. Place a bet, watch it settle, then start your own on Free.

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