> ## Documentation Index
> Fetch the complete documentation index at: https://docs.limitless.exchange/llms.txt
> Use this file to discover all available pages before exploring further.

# Embed Limitless Markets

> Add live Limitless odds to your own site and earn from the traders you bring

Add live Limitless odds to your own site and earn from the traders you bring. Paste a link, configure the look, copy the code. The widget stays live on its own. To collect referral rewards, put the referral code from your Limitless account into the snippet (one field in the builder).

## What you get

A live prediction-market widget in an iframe on your page: the market question, real-time odds, a price chart, and buy buttons that take readers straight to the market on Limitless. Odds refresh every few seconds. You set it up once and never touch it again. Data stays live, resolved markets are replaced automatically when you embed a category, and rendering improvements ship without any change to your page.

Embedding is free. No account is needed to embed; a Limitless account is needed only to collect referral rewards.

## Quick start

<Steps>
  <Step title="Paste a link">
    Open the builder at [embed.limitless.exchange](https://embed.limitless.exchange) and paste a Limitless market or category link, for example `https://limitless.exchange/markets/…` or `https://limitless.exchange/finance`.
  </Step>

  <Step title="Configure">
    Configure layout, theme, and size. The preview is exactly what your readers will see.
  </Step>

  <Step title="Add your referral code">
    To earn referral rewards, paste your referral code into the **Affiliate code** field (see [Referral attribution](#referral-attribution) below).
  </Step>

  <Step title="Copy the snippet">
    Copy the snippet and paste it into your page's HTML.
  </Step>
</Steps>

The builder protects you from the common mistakes. It won't let you copy a snippet until a real market has loaded, and it warns you if the category you chose currently has no live markets.

<Info>
  Always copy the snippet from the builder rather than writing it by hand. The script URL and its integrity hash are unique to each release, and editing them breaks the widget.
</Info>

## Choose a format

The builder offers three snippet formats. All three show the same widget; they differ in how they fit into your platform.

| Format      | Best for                                          | How it works                                                                                                                                                      |
| ----------- | ------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Default** | Your own site, WordPress, Ghost                   | Styled iframe with SEO markup, so search engines see the market question and odds too. Fixed size.                                                                |
| **Script**  | Sites where you control the HTML                  | Loads via a small script that auto-sizes the widget's height and keeps it matched to your page. If scripts are blocked, a plain link to the market shows instead. |
| **Minimal** | Platforms that accept plain iframes (e.g. Notion) | A bare iframe, nothing extra. Fixed size. Some platforms (Medium, Substack) don't accept raw iframes at all; link to the market there instead.                    |

Not sure which to pick? Use **Default**. Choose **Script** only if you want auto-height and your platform allows script tags.

A Default snippet looks like this:

```html theme={null}
<figure class="limitless-embed-figure" style="position:relative;display:inline-block;margin:0">
  <script type="application/ld+json">…market metadata for search engines…</script>
  <iframe
    title="Will Spain win the 2026 FIFA World Cup?"
    src="https://embed.limitless.exchange/e/v1/market/spain-wc-1780498510060?theme=dark&layout=card"
    width="400" height="220" frameborder="0"
    sandbox="allow-scripts allow-popups"
    style="border:0;border-radius:12px;color-scheme:dark"></iframe>
</figure>
```

And a Script snippet:

```html theme={null}
<div style="color-scheme:dark">
  <blockquote class="limitless-embed" data-market="spain-wc-1780498510060" data-theme="dark" data-layout="card" data-w="400">
    <a href="https://limitless.exchange/markets/spain-wc-1780498510060">Will Spain win the 2026 FIFA World Cup? — live odds on Limitless</a>
  </blockquote>
</div>
<script async src="https://embed.limitless.exchange/loader.v1.<hash>.js"
  integrity="sha384-…" crossorigin="anonymous"></script>
```

The builder fills in the real script filename and integrity value for you. Both examples are illustrations: always copy your real snippet from the builder.

## Make it yours

Everything below is a toggle in the builder. You never need to edit the code.

* **Layout** — Card (with chart) or Banner (compact strip, no chart).
* **Theme** — Light, Dark, or Auto (follows each reader's system preference).
* **Size** — Fit container, or a fixed width between 260 and 800 px. The Script format also adjusts its own height as content changes.
* **Chart** — show or hide the odds chart, grid lines, and Y axis. The chart opens on a 1-day view; readers switch the range (5M to ALL) right in the chart.
* **Buttons** — show or hide buy buttons, share prices, and (for crypto Up/Down markets) the target price.
* **Details** — show or hide volume and choose the attribution style: text, mark, or logo.

Crypto price markets also show a live asset-price line from Pyth, with an Odds ↔ Price toggle right in the widget. Sports fixtures render as a scoreboard with the live score.

## Embed a category

Paste a category link (for example `limitless.exchange/finance`) instead of a single market and the widget rotates through that category's top live markets. You control:

* **Rotation** — on or off, and seconds per market (4–60).
* **Pool size** — how many top markets to rotate through (1–10).
* **Sort** — Volume, Trending, or Newest.

When a market resolves, the widget walks to a live replacement on its own. If your category temporarily has no live markets, it shows top markets from all categories until yours come back.

## Referral attribution

Every snippet from the builder carries a referral code (the `via` parameter in the code). Clicks land on Limitless tagged with it, and your embed's stats are tracked under it.

To earn referral rewards, use the referral code from your Limitless account. Open [limitless.exchange/referrals](https://limitless.exchange/referrals), copy your code, and paste it into the **Affiliate code** field in the builder before copying the snippet. That field is where your referral code goes. You earn a share of the trading fees your referred users generate: 10% to 40% depending on your tier, in USDC, paid out daily. Your earnings and referred users are shown on the same Referrals page. See the [Referral Program](/user-guide/referral-program) for tiers and details.

<Warning>
  The builder fills the field with a random code automatically. That code keeps your embed's stats working, but it is **not tied to your account, so it earns nothing**. Replace it with yours. If you clear the field, the snippet ships without a referral code. The widget works as usual, but clicks are not linked to you, so you get no stats and no rewards.
</Warning>

## What to expect on your page

* Odds refresh every few seconds; the live price line on crypto markets moves every few seconds too.
* About five crypto widgets open at once stay fully live for a given reader. Beyond that, our price provider may briefly throttle some of them; they recover on their own.
* With the Script format the widget sizes itself to its container and adjusts its own height. Default and Minimal snippets keep the size you chose in the builder (or full width, with Fit container).
* If our data source is briefly unreachable, the widget keeps showing the last good data rather than going blank, and recovers on its own.
* Polling pauses in hidden tabs, so the widget never drains a reader's battery in the background.
* The embed is monitored around the clock; we are typically alerted to production problems within the hour.

<Note>
  If you don't know what a Content-Security-Policy is, skip this note; most sites need no changes. If your site enforces one, allow `https://embed.limitless.exchange` in `frame-src` (and in `script-src` if you use the Script format). Every request the widget makes happens inside its own frame, so your page's policy never has to allow anything else. A strict policy may log the Default snippet's inline SEO-metadata block as blocked; that is harmless and needs no change.
</Note>

Single-page apps swap pages without a full reload (most blogs and CMSs do not). On a single-page app, have your developer call `window.limitless.load()` after client-side navigation to scan for newly added widgets. Script format only.

## Privacy

We count widgets, not your readers. A widget load is one impression. Each impression is tagged with: your site's hostname, the market or category shown, the referral code, the layout, the widget version, a timestamp, and a bot/prefetch flag derived from the request. That is the full list. The widget sets no cookies and uses no browser storage or fingerprinting. Reader IP addresses and user agents are never stored; the user agent is only inspected in-flight to flag bots, then discarded. What we retain is per-site counts, kept as raw rows for 30 days and as daily totals thereafter. Per-site numbers are internal; we never publish or share your traffic figures.

Two details worth knowing. Crypto price markets fetch live prices from Pyth inside the widget frame, so Pyth receives what any web request carries (including the reader's IP address) and nothing more. Your site's hostname comes from the standard `Referer` header. If your referrer policy hides it, impressions show up as unattributed, while clicks tagged with your referral code still count.

## Troubleshooting

| Symptom                                                          | Likely cause                                                                                                                                                                                             | What to do                                                                                                                  |
| ---------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| Widget area is completely blank                                  | The snippet was modified (Script format: the script's `integrity` attribute must stay exactly as copied), a content blocker removed the iframe, or your site's Content-Security-Policy blocks the widget | Re-copy the snippet from the builder, unmodified. Check the page without ad blockers, and see the policy note above.        |
| Widget shows markets outside my chosen category                  | Your category currently has no live markets, or the category page was removed on Limitless                                                                                                               | Nothing to fix on your side; it switches back automatically when the category has live markets. If it persists, contact us. |
| Price chart stops moving but odds still update                   | Temporary price-feed throttling. The widget backs off and recovers automatically.                                                                                                                        | Wait a minute; if it persists across reloads, contact us.                                                                   |
| Widget looks broken after I edited the snippet                   | The snippet is a sealed unit                                                                                                                                                                             | Paste a fresh copy from the builder instead of editing.                                                                     |
| A solid dark (or white) rectangle shows below or around the card | The iframe is taller than the card and the snippet was copied before 2026-07-27, so the browser paints the gap opaque                                                                                    | Paste a fresh copy from the builder; current snippets pin `color-scheme` on the iframe.                                     |

## Support

Questions or something looks wrong? Join the [Limitless Discord](https://discord.com/invite/yb4SscD8RZ) and message the team. That's the fastest way to reach us.
