Embed overview
Put Scanner's interactive token map on your website.
The Embed API lets you show Solana and Robinhood Chain bubble maps on your own site via iframe. Both use the same embed key and allowed-domain settings. See Plans and access to get set up.
For token, wallet, transaction, and block detail pages, see Explorer views.
Quick start
<iframe
src="https://www.scanner.net/sol/scanner/TOKEN_MINT/map?embed=1&key=YOUR_API_KEY"
width="100%"
height="600"
sandbox="allow-scripts allow-same-origin allow-popups allow-popups-to-escape-sandbox"
allow="clipboard-write"
style="border: none; border-radius: 12px;"
></iframe>Replace TOKEN_MINT with any Solana token mint or wallet address, and YOUR_API_KEY with your emb_ key.
URL format
| Chain | Iframe URL |
|---|---|
| Solana | https://www.scanner.net/sol/scanner/{ADDRESS}/map?embed=1&key={API_KEY} |
| Robinhood Chain | https://www.scanner.net/rh/scanner/{ADDRESS}/map?embed=1&key={API_KEY} |
For Robinhood Chain, use a 0x token contract or wallet address. Existing Solana URLs under /scanner/{ADDRESS}/map still redirect to /sol/scanner/{ADDRESS}/map.
| Parameter | Where | Required | What it does |
|---|---|---|---|
ADDRESS | path | Yes | Solana mint/wallet or Robinhood Chain contract/wallet address |
embed | query | Yes | Turns on embed mode. ?embed=1 is canonical; the bare flag ?embed also works. |
key | query | Yes | Your emb_ API key |
The canonical host is https://www.scanner.net. The apex scanner.net redirects to www, so use www directly to avoid an extra hop inside the iframe.
Scan modes
Scan mode is optional. If omitted, the address is auto-detected (token → holders, wallet → quick).
Token modes (use with a mint or token contract):
| Parameter | What you get |
|---|---|
holders | Top holders with bundle detection, on both chains |
traders | Top traders by realized PnL, Solana only |
Robinhood Chain does not support trader maps. Requesting traders shows an explanation and a View holders link; it does not run a different scan silently. Modes can also be passed as mode=holders, mode=quick, and so on.
Wallet modes (use with a wallet address):
| Parameter | Speed | What you get |
|---|---|---|
quick | Fast | Basic connections |
deep | Medium | Full graph |
max | Slow | Maximum depth |
/sol/scanner/{MINT}/map?embed=1&key={KEY}&tradersWhat users see
Both maps render without Scanner navigation or login prompts, with zoom, pan, filters, and node details. In a Robinhood embed, Scan this wallet opens the selected wallet's map inside the iframe, retaining the embed key and wallet scan depth. Personal wallet-saving controls are hidden.
The Solana map also includes a "Powered by Scanner" link, cluster sidebar, and rescan controls. A rescan of the same address inside 20 seconds is refused by the server cooldown. These controls are not yet shared with the Robinhood map.
Error rendering
Scan failures render a visible error inside the iframe. A missing, invalid, or disabled key shows an error page inside the iframe instead of the map. The Robinhood map also explains unsupported trader mode rather than showing an empty graph. A successful scan with no connections shows an empty-state message.
Because frame-ancestors and cross-origin boundaries prevent the host page from reading the iframe's DOM or JSON responses, surface these states by watching for empty/stalled embed renders on your side (e.g. request timeout on /embeds/validate before mounting the iframe). See Authentication for the validate endpoint.
Usage
Results under 1 hour old are served from cache, so they run no new scan. Every embed request still counts one unit against your org's daily and monthly limits, cached or not. Once you are over the limit, requests that need a fresh scan return 429.
Limits are set per org. Raise them in your Telegram channel or email payments@scanner.net.
Troubleshooting
If you see a blank frame or error:
- Check your domain is in the allowed list (see Authentication)
- A missing or invalid key shows an error page inside the iframe. Verify the key is present in the iframe URL and correct (pre-flight with validate)
- Confirm you haven't exceeded your usage limits