One API. Eight chains.
Every pool. Free.
Honeypot simulation - LP burn & lock verification - deployer rug-history - Solana Token-2022 controls - P-Token-aware indexing - ownership / proxy / verified source · dangerous-function scan · deterministic rug-risk & blue-chip scores · full deployer trail · launch-bundle detection · live holder map with roles (pump.fun curve, LP, burn, deployer, retail). Every pool across every chain a token ever touched. Built in-house. No auth. No wallet connect. CORS-open. Integrates in under sixty seconds.
🆕 What's new
Recent changes · click any entry to expand. Expand all · Collapse all
2026-05-22 · Imposter detection · chain-hop abandonment · canonical-chain compare
- Canonical-chain compare (new) — when a token is verified as canonical on a secondary chain (e.g. the real PEPE deployment on BSC while ETH holds 98% of the project's liquidity), the report now resolves the canonical-chain contract address and surfaces a one-tap "scan the primary deployment" link. Lets users instantly compare two real deployments of the same brand that may have materially different security properties — for example, the ETH PEPE is fully renounced and immutable while the BSC PEPE has an active multisig that can mint. Same name, different controls. Now obvious at a glance instead of buried in the contract details.
- Chain-hop abandonment detection (new) — when a project's main liquidity has migrated to a newer deployment on a different chain (the original-chain pool is shrinking while a fresh contract on another chain holds the majority of total cross-chain liquidity), the report flags the original chain as "holders may be stranded" and pushes the verdict to
LIKELY_RUG. Catches the pattern of a team launching a new contract on a new chain and walking away from the original — the BSC → ETH chain-hop is the most common variant, but Base → Solana and the reverse all trigger. - Cross-chain liquidity share (new) — for canonical multi-chain tokens, the report now identifies which chain holds the dominant share of total cross-chain liquidity and surfaces the scanned chain's own share. If most liquidity lives on a different chain, the scanned instance is shown as a secondary deployment — informational, no penalty — and the single-chain structural mismatch detectors are softened accordingly.
- Imposter / brand-squat detection (new · Tier-1 signal) — when a scanned token's name and symbol match an established real project but the contract address is not in that project's verified deployments across any chain, the report now flags it as an imposter and pushes the verdict to
LIKELY_RUG. Catches the pump.fun PEPE / BSC SHIB / Base UNI epidemic where permissionless launchpads spawn brand-squats that drain users on name recognition. Severity tiers:confirmed_imposter(real project has a verified address on this same chain at a different address),likely_imposter(real project exists, scanned contract not in its deployments),suspected_imposter(symbol collision on a smaller-cap project). Acanonicalblock surfaces the real project's name, market cap, official chains, and homepage so users can find the real contract. - Verified-canonical positive signal (new) — when the scanned address matches the canonical project's verified contract on this chain, a small blue-chip bump fires and the report shows a "verified canonical" chip. Distinguishes the real PEPE from copycat PEPEs.
- Bridge-aware structural scoring (new) — cross-chain bridged tokens (LayerZero OFT, xERC20, Chainlink CCIP, OP Stack mintable, Arbitrum L2 gateway, ERC-4626 vaults) now have the new mcap-to-DEX-liquidity and CEX-volume-detached signals softened or skipped. Bridged tokens have liquidity primarily on their canonical chain; the scanned chain is a node in a multi-chain mesh, so single-chain liquidity is structurally a fraction of total market cap. Upgradeable proxies on bridge tokens with multisig governance get a softer penalty as well — being upgradeable is a protocol requirement for bridge mechanics, not a private-key rug vector.
- Fairer scoring for multisig-governed tokens — when a token's mint or admin powers are held by a properly configured multisig (e.g. a Gnosis Safe with several signers and a meaningful threshold) or by a DAO governor / timelock contract, the report now treats those powers as multi-party governance levers rather than as a single-key rug vector. Visible-source findings like a
mintfunction no longer stack on top of the same fact a second time. The control still shows on the report — it just no longer pushes a CEX-listed protocol token into a rug verdict on its own. - Multi-chain market cap and FDV accuracy — for tokens whose canonical supply lives on a different chain than the contract being scanned (e.g. a token native to Ethereum but also deployed on Base or BSC), the scanner now reconciles the displayed market cap and fully-diluted valuation with the canonical token's reported circulating and total supply. Previously these figures could appear out of order on cross-chain deployments; that's fixed.
- Centralized-exchange listings contribute to the confidence score — broad listings across active centralized exchanges now register as a positive trust signal, with an extra bump when at least one tier-1 exchange is in the mix. Mirrors the listing scrutiny those venues already perform.
- Concentrated-liquidity pools no longer penalized for being unmeasurable — Uniswap V3 (and forks like PancakeSwap V3 / Aerodrome Slipstream) hold liquidity as individually-owned NFT positions, so an aggregate "% locked" simply doesn't apply the same way it does for V2 pools. When no per-position locker data is available, the report now discloses that as informational instead of scoring it as unlocked liquidity. The position-holder advisory chip stays visible.
- Anti-bot defenses better distinguished from honeypots — many legitimate ERC-20s ship anti-MEV / anti-sniper logic that can trip an automated sell test on bot-signature wallets. When independent cross-checks agree real users can sell — clean static analysis, broad holder base, active markets, or active centralized-exchange listings with real daily volume — the chip is shown as informational instead of contributing to rug risk. A real honeypot still scores as a hard fail.
- Structural exit-liquidity mismatch detection — when a token's reported market cap is wildly larger than its actual on-chain DEX liquidity, the report surfaces that mismatch as a primary risk factor. Real exit at the displayed price is constrained or impossible regardless of what the static contract scan returns. (Auto-softened on confirmed bridged tokens and canonical multi-chain secondary deployments — see above.)
- Detached CEX-volume detection — when centralized-exchange daily volume far exceeds the DEX exit liquidity that would have to settle it, the volume is flagged as likely synthetic or off-chain market-making rather than real trading.
- Thin holder count on mature tokens — a token that has been live for months at a meaningful reported valuation but still shows only a handful of holders is no longer treated as "established" just because of its age. Distribution that doesn't support the reported market cap now penalizes the score directly.
- Scope — these changes apply across Solana + all 7 EVM chains (Ethereum, Base, BSC, Arbitrum, Optimism, Polygon, Avalanche). Imposter detection and chain-hop abandonment are cross-chain by design.
2026-05-15 · News desk redesign · richer case pages · stable image loading
- News desk redesigned — /news now uses the same visual language as the rest of the site (typography, panels, accent system) with a clean lead story, side rail, category filter pills with live counts, and a search box. Each story keeps its source-trail and legal-posture pills visible.
- Case pages rebuilt —
/news/<story>opens with a compact case header (status, category, case number, judge, venue) followed by reader-friendly panels: short version, why it matters, attack-vector summary, court tracker, verified facts, public record trail, named people and entities, business filings in the trail, named public social handles, on-chain leads, timeline, money / scale, case status, media pack, and citation chain. - More desk metrics — the news index now surfaces published stories, source-link total, agencies + courts cited, and an aggregate alleged-loss figure across the live queue.
- Live breaking strip — a compact breaking ticker rolls the latest case numbers and headlines directly under the masthead.
- Stable, hot-link-safe image loading — every news image (lead, evidence, gallery) now loads through Analyzer69000's own domain so it survives third-party hot-link protection, never leaks the reader's IP, and shows a loading shimmer instead of a broken-image icon while it's in flight.
- More frequent desk refresh — the published news queue now refreshes several times per day instead of once.
- Tighter responsive — both /news and the case pages now hold their layout cleanly down to very narrow viewports (~280-300px wide) for older / split-screen mobile.
- Editorial constraint — every published item still uses charged / alleged / sued / seized / sanctioned / convicted exactly as the underlying public record supports it. Investigator claims (e.g. independent on-chain analysts) are labeled as such and are kept separate from agency or court findings.
2026-05-14 - Solana P-Token + Token-2022 scanner update
- P-Token-aware Solana indexing - Solana optimized Token program keeps the classic
Tokenkeg...program ID, so existing SPL tokens continue to scan normally. Analyzer treats this as a network-level performance upgrade, not as a token migration or new risk flag. - Instruction-log assumptions removed - Solana token parsing is documented around transaction metadata, parsed instructions, and token balance deltas instead of relying on instruction-name log lines that P-Token can omit.
- Token-2022 controls surfaced - scans now expose extension-level controls such as transfer fees, transfer hooks, permanent delegates, default-frozen accounts, non-transferable mints, confidential transfer, pausable mints, mint close authority, and scaled UI amounts when present.
- Fair scoring for issuer and bridge tokens - verified wrapped assets, stablecoins, and other canonical issuer-controlled tokens show their controls plainly without scoring standard custody mechanics like unknown memecoin admin keys.
2026-05-13 · Launch-guide share card · verified wrapped-token index
- Launch-guide OG card refreshed — /launch-guide now has a purpose-built 1200x630 share card that matches the scanner's premium report-card style, with accurate title/description metadata and cache-busted unfurls for X, Discord, Telegram, and Slack.
- Verified wrapped-token registry expanded — canonical wrapped assets are now indexed in-house across Solana, Ethereum, Base, and BSC. Coverage includes WSOL, WETH, WBTC, cbBTC, Wormhole WETH on Solana, Coinbase wrapped assets on Base, and major Binance-Peg assets on BSC. Issuer-controlled mint/burn mechanics are shown as custody controls instead of memecoin rug vectors.
- Fair scoring for canonical wrapped assets — verified wrapped assets now return
VERIFIED_WRAPPED, a blue-chip floor, and a zero headline rug score unless a true hard-fail condition is present. Custody controls stay visible, but launch-bundle, LP-lock, thin-DEX, and holder-concentration heuristics no longer mislabel a real wrapped asset as a rug. - Canonical supply market caps — when market registries report a pool-local cap for a verified wrapped asset, the scanner derives the displayed market cap from live price times on-chain float so assets like Solana WBTC do not show misleadingly tiny caps.
2026-05-10 · Wallet and payment UX polish
- Mobile wallet connection improved — mobile users now get clearer wallet-open actions, better reconnect behavior, and cleaner failure messages across public payment surfaces.
- Payment previews are clearer — checkout flows now present plain-language wallet prompts and block invalid transactions before users are asked to sign.
- Share cards refreshed — public service pages now render cleaner 1200x630 cards for X, Discord, Telegram, and Slack.
2026-05-12 · Fair scoring for established markets
- CEX-aware liquidity scoring — established tokens with meaningful centralized-exchange activity no longer get over-penalized for intentionally thin DEX pools.
- Holder labels improved — market-maker, exchange, bridge, vesting, and governance-style holders are classified more fairly so concentration warnings better match real holder risk.
2026-05-11 · Bridged-token and governance fairness
- Bridge-controlled tokens score more fairly — mint/burn controls held by standard bridge or issuer contracts are treated differently from private-wallet control.
- Governance-aware ownership labels — multisig, timelock, DAO, vesting, and lock-style ownership patterns now render as their actual role rather than generic owner risk.
- Solana metadata fallback improved — established Solana tokens recover cleaner names and symbols during temporary metadata-provider issues.
Previous changes
- Cross-chain trending feed —
GET /api/trendingreturns live trending tokens across all 8 chains. Shareable/trending+ per-chain/trending/<chain>, OG cards at/api/og/trending. - Wash-trade detection — every scan reports a NET sniped supply % with a wash-trade flag when intra-wallet rotation dominates the launch window.
- Fair-launch signal — top-level
fair_launchstruct combining 5 independent on-chain checks. - Deployer verification — multi-signal authenticity check on every deployer wallet.
- Uniswap V4 support — V2, V3, and V4 swap events all decoded for EVM scans.
- Team-wallet tracking (EVM) — pre-launch airdrop recipients + their post-launch trade activity surfaced on
deployer.team_wallets/team_trades. - Official brand logos — 113 CEX + DEX brand marks served locally so the scan page never blocks on a third-party image fetch.
- Cache-bust OG cards — append
&v=<ts>to any OG URL for immutable cache. - Compact sub-penny prices —
$0.0₅616notation everywhere.
⚡ Quickstart
Copy, paste, done. No API key required.
Get a token report
curl https://analyzer69000.com/api/v1/token/JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN
Embed a live scan card on any site
<div data-a69="<token_address>"></div>
<script src="https://analyzer69000.com/embed/scanner.js" async></script>
Per-token social preview card
<meta property="og:image"
content="https://analyzer69000.com/api/og/token?address=<addr>">
🧪 Interactive playground
Hit a live endpoint from this page. Response format, timing, and cached-or-fresh state shown below. Counts against your IP rate limit.
💠 Drop-in widgets
Shadow-DOM isolated — zero CSS conflict in either direction. Auto-mounts every [data-a69] on page load and on DOM mutation, so widgets injected by React / Vue / htmx / Astro "just work" without extra wiring.
[data-a69] element on the page mounts itself the moment it appears in the DOM. Zero dependencies on your end.
🧬 Installation
<script src="https://analyzer69000.com/embed/scanner.js" async></script>
📦 Variant 1 · Full card (default)
Logo · name · symbol · chain · verdict · animated Safety Score ring · stats · critical-alert banner (honeypot, LP pullable, serial rugger) · copy-address · live indicator. Sizes: sm / md / lg.
<div data-a69="<addr>"></div>⚡ Variant 2 · Mini card
Compact horizontal row. Perfect for dashboards, watchlists, reply threads.
<div data-a69="<addr>" data-variant="mini"></div>🎖 Variant 3 · Badge pill
Inline verdict pill — at data-size="md" it shows the token logo + symbol; at sm it shrinks to a dot + verdict for tight inline slots. Ideal for chat, comments, articles, tweets.
<div data-a69="<addr>" data-variant="badge"></div>📊 Variant 4 · Stats strip
Full-width strip with token logo + verdict + any stats you choose. Pair above a trading widget, inside a token page, or at the top of a research post. Add data-show="safety,honeypot,lplock,dev,liq" for a scanner-grade safety strip.
<div data-a69="<addr>" data-variant="stats"></div>🎚 Variant 5 · Animated gauge upgraded
270° Safety Score dial with gradient fill, count-up animation, token logo header, verdict pill, Tier-1 security chips (honeypot sim · LP locked % · dev rug history · renounced), and live price + 24h change. Drop into a hero, a token page, or a Discord-style bot reply card.
<div data-a69="<addr>" data-variant="gauge"></div>📺 Variant 6 · Live ticker new
One-line price · 24h change · verdict pill · live pulse. Combine data-refresh="30" for auto-updating tickers. Site footer, news strip, sidebar widget — anywhere you want a living signal.
<div data-a69="<addr>" data-variant="ticker" data-refresh="30"></div>🫧 Variant 7 · Live holder bubble map
Interactive D3 force-layout of the top 20 holders with token logo in the header. Drag bubbles; pump.fun curves / LPs / burn / dev / retail color-coded. Best single-glance view of supply concentration.
<div data-a69="<addr>" data-variant="bubbles" data-size="lg"></div>🗂 Variant feature matrix
| Variant | Logo | Verdict | Score | Stats | Security chips | Live price | Best for |
|---|---|---|---|---|---|---|---|
card | ✓ | ✓ | ring | custom | alert banner | via data-show | landing pages, reports |
mini | ✓ | ✓ | numeric | liq | — | — | watchlists, sidebars |
badge | md/lg only | ✓ | rug/100 | — | — | — | inline prose, chat |
stats | ✓ | ✓ | — | full | via data-show | via data-show | research pages, token pages |
gauge | ✓ | ✓ | dial + count-up | price/change | honeypot · LP · dev · renounce | ✓ | hero, Discord bot reply |
ticker | ✓ | ✓ | — | price + 24h | — | ✓ | footers, live strips |
bubbles | ✓ | ✓ | — | holders · top1 · top10 · LP · burn | — | — | holder analysis |
🎨 Theme gallery
Pick one of nine hand-tuned palettes or override any accent with your brand color. Every variant respects the theme.
<div data-a69="<addr>" data-theme="holo"></div>🎛 Customize to your brand
Override the accent color, choose border style, pick exactly which stats to show, and enable live refresh.
Custom accent color
<div data-a69="<addr>" data-accent="#00ff9d"></div>Gradient border + glow
<div data-a69="<addr>" data-border="gradient" data-theme="holo"></div>Pick your stats
Use data-show with a comma-separated list. Options: rug, blue, safety, price, liq, vol, mc, age, holders, top10, honeypot, tax, lplock, dev.
<div data-a69="<addr>" data-variant="stats" data-show="price,liq,mc,holders"></div>Safety-first stats strip
For scanner-style usage — surfaces the new Tier-1 security signals (honeypot sim, LP burn/lock %, deployer rug history) alongside price.
<div data-a69="<addr>" data-chain="eth" data-variant="stats" data-show="safety,honeypot,lplock,dev,liq"></div>Live refresh
Re-pulls the report every N seconds (min 20s). Great for tickers, live dashboards, stream overlays.
<div data-a69="<addr>" data-variant="ticker" data-refresh="30"></div>🧪 Live embed builder
Tweak options, preview instantly, copy-paste the snippet.
🎛 All attributes
| Attribute | Values | Default | Description |
|---|---|---|---|
data-a69 | token address | — | required |
data-variant | card · mini · badge · stats · gauge · ticker · bubbles | card | widget style |
data-theme | dark · light · midnight · cyber · terminal · ice · sunset · matrix · holo | dark | color palette |
data-accent | hex like #00ff9d | — | override theme accent with your brand color |
data-size | sm · md · lg | md | container max-width |
data-border | solid · gradient · glow · none | solid | border/glow style |
data-radius | sm · md · lg · full | md | corner radius |
data-refresh | integer seconds (≥ 20) | 0 | auto re-fetch interval; 0 = once |
data-animate | true · false | true | entrance + count-up animations |
data-show | rug,blue,safety,price,liq,vol,mc,age,holders,top10,honeypot,tax,lplock,dev | auto | pick which stats to render (card / stats). New: honeypot, tax (buy/sell), lplock (LP secured %), dev (rug history). |
data-link | true · false | true | disable click-through to full report |
⚙️ Multiple on one page
Drop as many as you want — the script is idempotent and scans on DOM mutations, so widgets injected via React/Vue/htmx all mount automatically.
🛡 CSP note
The bubbles variant lazy-imports D3 from cdn.jsdelivr.net. If you run a strict CSP, add it to script-src. Every other variant runs standalone with no external deps.
🛰 GET /api/v1/token
| Param | Type | Required | Description |
|---|---|---|---|
address | string | yes | Solana base58 mint or EVM 0x… contract |
chain | enum | no | auto · solana · eth · base · bsc · arb · op · poly · avax (default auto) |
Returns a full report (see schema). Response is cached server-side for 12 hours — re-requesting the same address during that window is a cache hit with a _cached: true field.
📈 GET /api/scan/candles
OHLCV candle backfill for the token's best-liquidity pool. Data structured for direct use with charting libraries.
| Param | Type | Default | Description |
|---|---|---|---|
address | string | — | Token address (or pass pair instead) |
pair | string | — | Pool / pair address (skips auto-selection) |
chain | enum | solana | Chain slug |
interval | enum | 1h | 1m · 5m · 15m · 1h · 4h · 1d |
limit | int | 250 | Candles to return (20–1000) |
Fallback chain: requests resolve through three stages so freshly-launched or micro-cap pairs still chart:
- Shared cache — per-pool bar store, refreshed nightly for the top-40 tokens by access count.
- Indexer — fresh bars appended to cache. Auto-retries with the top-liquidity pool when your pair address isn't indexed (covers Uniswap-V3 32-byte pool IDs, Aerodrome aggregated pools, Base/Arb micro-caps).
- On-chain replay — direct Swap-event pagination on Solana + EVM. Serves pump.fun launches and brand-new EVM pairs that no aggregator has indexed yet.
Per-pair soft rate limit: 30 req/min per IP. Cache is trimmed to the newest limit buckets on return, but deeper history can be retrieved by raising limit (max 1000).
🍯 GET /api/scan/honeypot
EVM-only buy/sell tax + honeypot detection. All 7 EVM chains supported (ETH, BSC, Base, Arbitrum, Optimism, Polygon, Avalanche). Read-only — no wallet, no signing, no on-chain state change. Returns the actual buy/sell tax %, transfer-tax %, owner address (renounced or not), proxy / open-source flags, and a severity band: clean · mild · moderate · heavy · extreme · honeypot · unknown.
| Param | Type | Required | Description |
|---|---|---|---|
address | string | yes | EVM token contract 0x… |
chain | enum | yes | eth · bsc · base · arb · op · poly · avax |
Response highlights:
severity,is_honeypot,can_buy,can_sellbuy_tax_pct,sell_tax_pct,transfer_tax_pct,round_trip_tax_pctmax_tx_amount,max_wallet— per-tx / per-wallet caps when enforced by the contractowner,owner_renounced,is_proxy,open_sourcerisk_level,risk_flags[]— ranked warning listholders,holders_top_10_pct,token_symbol,native_symbolsimulation_amount_native,router,pair_address— for the user-facing footer ("Simulation: 0.1 BNB round-trip via 0x10ED…")source— opaque verification-path identifier (treated as a string by callers; severity bands are normalized so UI labels match regardless of value).
Cross-check: when independent verification paths disagree, the disagreement surfaces as a flag in risk_flags[] instead of silently overriding either signal — so the caller can decide based on full evidence.
Rate limit: 20 req/min per IP. Cache: 2 min response cache + SWR. Pair this with /api/scan/impact for the post-tax slippage view at concrete trade sizes.
📡 GET /api/scan/recent
Last-N tokens scanned across all users, plus 30-day roll-up: unique tokens, total scans, rugs caught, clean scans.
🖼 GET /api/og/token
Returns a 1200×630 PNG social card (SVG available at ?format=svg) with the token's name, Safety Score dial, verdict banner, live market stats, and security flags (honeypot sim, LP lock, renounce, dev rug history).
Pass v=<unix_timestamp> (typically the scan's fetched_at) to get cache-immutable previews — the URL itself changes on every refresh, so CDN + Twitter/Discord unfurls stay in sync with the latest stats. Legacy unversioned URLs are cached only 60s.
Mirror endpoints:
/api/og/bundle — bundle-intel card. Severity · sniped % · wallet count · held/sold split. Auto-detects "BUNDLE RESOLVED" when ≥80% of the launch bag has dumped./api/og/boost-token — premium 1200×630 share card for any boosted token. Pulls live price, organic-score progress bar, forensic verdict pill, sparkline, tier badge. Bind it to a parent page by appending ?card=boost to the share URL: /check/<addr>?card=boost swaps the page's og:image to this endpoint so X / Discord / Telegram unfurl as the boost card instead of the standard scan card./api/og/trending — top-6 cross-chain trending grid with prices + 24h moves. Per-chain filter via ?chain=./api/og/boost — generic boost-page social card (3 tiers + refund policy line)./api/og/page?p=<preset> — branded social cards for non-token pages (home, docs, comments).
🔥 GET /api/trending
Live trending tokens across 8 chains (Solana + Ethereum + BSC + Base + Arbitrum + Optimism + Polygon + Avalanche). Refreshed server-side every 5 minutes, CDN-cached so your traffic doesn't hit upstream. Stables + gas + wrapped blue-chips auto-filtered (USDC / USDT / USDe / cbBTC / WBTC / stETH / wstETH / WSOL / jitoSOL / WBNB / WAVAX / WPOL / etc.) so the feed shows actual movers.
Query params:
chain— optional; one ofsolanaethbscbasearboppoly. Invalid values are ignored and the full feed returns.
Response:
{
"generated_at": "2026-04-22T19:53:00.000Z",
"ttl_seconds": 300,
"source": "live_market_registry",
"chain_filter": null, // or e.g. "solana"
"per_chain_counts": { "solana": 12, "eth": 12, "bsc": 12, ... },
"tokens": [
{
"chain": "solana",
"address": "Hon2rHAi…pump",
"symbol": "MAGA",
"price_usd": 0.02058,
"volume_24h_usd": 9934521,
"liquidity_usd": 632917,
"change_24h_pct": 71.96,
"age_hours": 1488,
"pool_address": "…",
"logo_url": "https://cdn…/token-logo.png",
"trade_url": "https://jup.ag/swap?sell=So111…&buy=Hon2r…",
"scan_url": "/check/Hon2rHAi…pump"
}
// …up to 12 per chain
],
"disclaimer": "Trending is a signal, not safety. Scan every token before trading. Not financial advice."
}Related: /trending + /trending/<chain> = shareable pages (OG-unfurl ready) · /api/og/trending = PNG social card.
📦 GET /api/v1/bundle
Compact bundle-intel payload — same data the scanner UI renders, without the full token report. Includes: severity · pct_60s · pct_10m · pct_5s_max · launch provenance (launch_block, launch_ts, source) · unique_buyers_60s/10m · swap_count · walker_error / walker_failed / predates_scan flags · sample wallets · full hold_analysis (retail vs pool/authority, still-holding / sold_all / partial / reaccumulated counts + USD values) · per-wallet rows (capped at 20) with status labels · mev_bots_detected · wash_ratio_60s/10m · redemption flags (bundle_resolved, adoption_organic).
Three no-bundle states: walker_failed: true (RPC issue on a fresh token — re-scan in ~10 min), predates_scan: true (token genuinely too old — current-state metrics still apply), or neither (organic launch with no bundle pattern). Each gets a distinct human-readable note. Cap: 10 sample wallets + 20 hold-analysis rows per response. Full per-wallet lists live on /api/v1/token.
curl -s 'https://analyzer69000.com/api/v1/bundle/<addr>' | jq '.hold_analysis'🪪 GET /api/v1/token?summary=1
1 KB agent-friendly response - verdict, rug_score, blue_chip_score, organic_score + organic_label, top risks, top positives, market snapshot, liquidity_lock, holder summary, deployer summary, bundle, redemption flags, website + socials_verified, launchpad, and Solana token-program / Token-2022 extension summary. Stable keys across schema bumps. Ideal for Claude/OpenAI/MCP tool-use. See Agents & LLMs for the full tool snippet.
Solana token programs
Analyzer separates Solana token-program mechanics from project risk. P-Token is a network-level replacement of the classic SPL Token implementation at the same Tokenkeg... program ID; it does not mean the mint migrated, relaunched, or became safer/riskier by itself. Token-2022 remains the separate extension-capable program at Tokenz..., and those extensions can materially change what holders can do.
batch, unwrap_lamports, and withdraw_excess_lamports. Use parsed instructions, account owners, token balance deltas, and current IDLs where available.
| Surface | What the API exposes | How to interpret it |
|---|---|---|
| Classic SPL / P-Token | token.token_program, token.token_program_id, token.standard | Same classic program address. Treat P-Token as performance/indexing context, not a token-level red flag. |
| Token-2022 | token.token_extensions, token.token_extension_summary, security.solana_token_extensions | Extension controls are shown and scored when they affect sellability, transferability, fees, freezing, delegate power, or public holder visibility. |
| Verified issuers / bridges | VERIFIED_STABLECOIN, VERIFIED_WRAPPED, canonical registry metadata | Custody controls remain visible, but normal issuer or bridge mechanics are not scored like unknown private-wallet memecoin controls. |
Common Token-2022 controls include transfer fees, transfer hooks, permanent delegates, default frozen account state, non-transferable mints, confidential transfer, confidential transfer fees, pausable mints, mint close authority, metadata pointers, group pointers, and scaled UI amounts. Some are normal for regulated or issuer-controlled assets; on unknown tradable tokens, they can be material risk signals.
🛡 Verified Boosts
Paid trending slots that pass our forensic scan before they go live. Three tiers, two currencies, agent-friendly via x402. If your token's organic score drops during the boost window, we refund 50% on-chain.
| Tier | Placement | Duration | SOL | USDC | Gate |
|---|---|---|---|---|---|
| Featured | Top of cross-chain trending | 24h | 0.5 SOL | $79 | organic_score ≥ 60 |
| Trending | Pinned in per-chain trending | 12h | 0.2 SOL | $35 | organic_score ≥ 50 |
| Spotlight | Dedicated card on /check/<addr> | 6h | 0.1 SOL | $15 | LP secured |
Endpoints
X-PAYMENT header (x402). Returns 402 with manifest if no payment info presenttoken_reports)Flow
- Call
/api/boost/eligibilityto confirm your token passes the tier gate. Returns live organic score + LP verdict. - POST
/api/boost/intentwith token + tier + currency + buyer wallet. Server returnsintent_id,reference(single-use 32-byte pubkey),receiver_wallet, and theexpected_amount. - POST
/api/boost/build-txwith theintent_id. Server returns a base64-encoded unsigned Solana tx (SystemProgram transfer or USDC SPL transfer + reference key attached). Client signs + broadcasts. - POST
/api/boost/buywith{intent_id, tx_signature}(or viaX-PAYMENTheader for x402). Server verifies signer, mint (USDC), recipient, amount, age, AND re-runs the eligibility gate. - Pass → slot is live instantly. Fail after paying → full refund queued. Mid-boost quality drop → 50% on-chain refund.
Stacking + extension
Buying any tier on a token that already has an active slot of the same tier extends the existing slot cumulatively. Buying a higher tier adds a new active slot alongside (a token can hold all 3 tiers concurrently). Only the original buyer can update tagline/link/accent; community-funded extensions add time without re-branding.
Recovery flow
If a buyer's verification fails (network blip, RPC catch-up), /boost remembers their open payment for 24 hours. On next visit, a banner offers one-click re-verify — no double-pay.
Custom fields (all optional, free during launch)
tagline— up to 60 chars. Server-sanitized (zero-width + control chars stripped).link_url— https only, host must bex.com,t.me,discord.gg,discord.com, or subdomain thereof.accent_color— strict#RRGGBBregex.buyer_label— up to 40 chars display-only.
Agent quickstart (x402)
// 1. Discover pricing
curl -s https://analyzer69000.com/api/boost/x402 | jq '.accepts'
// 2. Pay on Solana, get tx signature
// 3. Retry with X-PAYMENT header
PAYLOAD=$(echo '{"address":"<mint>","chain":"solana","tier":"featured","currency":"sol","buyer_wallet":"<your-wallet>","signature":"<tx-sig>"}' | base64 -w0)
curl -X POST https://analyzer69000.com/api/boost/buy \
-H "X-PAYMENT: $PAYLOAD"🚀 Launchpad detection
Every scan runs a multi-stage launchpad classifier. The token.launchpad field (null if none detected) reports the source platform and confidence so agents and UIs can frame the token in the right context (fair-launch meme vs tokenized venture round vs deterministic burn).
| Key | Type | Description |
|---|---|---|
id | string | Canonical platform slug — pump_fun · letsbonk · moonshot · believe · virtuals · jupiter_studio · daos_fun · raydium_launchpad · streamflow · meteora_m3m3 · four_meme · clanker · flaunch. |
name | string | Human-readable display name. |
url | string | Official launchpad homepage. |
confidence | enum | primary (deterministic on-chain proof — mint suffix, program id, known creator) · inferred (pool listed on migration-burn DEX with matching base token) · hint (website / metadata / description match). |
source | enum | Where the match came from: mint_suffix · onchain · dex · website · metadata. |
evidence | string | The specific signal that matched (program id, DEX name, matched phrase). |
logo_svg | string | Inline SVG mark shipped directly in the payload so UIs render instantly with no remote image fetch. |
confidence: 'primary' means the scan proved the launchpad deterministically (e.g. Solana mints ending in pump, bonk). inferred means a pair hosted on a migration-burn DEX where the factory deterministically burns LP (pumpswap, bonkswap, moonshot-swap). hint is website/metadata keyword matching — treat it as a weak signal, never a verdict.
🤖 For agents & LLMs
This API is built to be called from agents. The full token report is big (∼70 KB JSON) which is too much for a single tool-call round trip in a constrained context window. We ship two dedicated affordances so your agent can reason about a token in <1 KB per call, with every number still traceable back to on-chain facts.
🪪 Compact agent response — ?summary=1
Every /api/v1/token call accepts ?summary=1, which returns a distilled payload shaped for LLM tool use: verdict, numeric scores, top risks, top positives, market snapshot, launchpad, LP-lock verdict, deployer headline, and Solana token-program / Token-2022 extension summary when present. Stable keys across schema bumps - so a tool definition you ship once keeps working when we improve the engine.
curl -s 'https://analyzer69000.com/api/v1/token/JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN?summary=1' | jqSample shape (representative summary response — schema_version: 100):
{
"address": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
"chain": "solana",
"token": {
"name": "Jupiter", "symbol": "JUP",
"age_hours": 19890.93, "launchpad": null,
"mint_renounced": true, "freeze_renounced": true,
"token_program": "spl_token", "token_extensions": null
},
"verdict": "BLUE_CHIP",
"rug_score": 0,
"blue_chip_score": 100,
"organic_score": 81,
"organic_label": "organic",
"top_risks": [],
"top_positives": [
{"text": "Mint authority renounced ✓", "weight": 10},
{"text": "Freeze authority renounced ✓", "weight": 10},
{"text": "Token > 180 days old", "weight": 30},
{"text": "Liquidity > $1M", "weight": 20},
{"text": "Market cap > $10M", "weight": 20},
{"text": "Listed on 3 DEXes", "weight": 5}
],
"redemption": { "bundle_resolved": false, "adoption_organic": true },
"market": {
"price_usd": 0.2026,
"market_cap_usd": 647915635,
"fdv_usd": 1390329375,
"liquidity_usd": 2439527.58,
"volume_24h_usd": 4745625.73,
"change_24h_pct": -0.82,
"buys_24h": 32980, "sells_24h": 40591,
"dex_count": 3, "chain_count": 1,
"cex_exchange_count": 61,
"cex_market_count": 84,
"cex_volume_24h_usd": 60412023.77,
"cex_exchanges": [
{ "name": "Binance", "markets": 4, "volume_24h_usd": 9990466 },
{ "name": "KuCoin", "markets": 2, "volume_24h_usd": 5515486 },
... 59 more exchanges
]
},
"liquidity_lock": { "verdict": null, "secured_pct": null, "burned_pct": null, "locked_pct": null },
"holders": {
"top_10_pct": 68.32, "adjusted_top10_pct": 68.32,
"holder_count": 833460,
"burn_pct": 0, "lp_pct": 0, "cex_pct": 2.19
},
"deployer": { "address": null, "dev_snipe_pct": 0, "serial_rugger": null },
"bundle": null,
"socials_verified": 5,
"website": { "url": "https://jup.ag", "team_count": 0 },
"schema_version": 100,
"fetched_at": "2026-05-07T03:18:35.195Z",
"_summary": true,
"_cached": true
}🔧 Tool-use snippet (Claude / OpenAI)
Drop this tool definition straight into Anthropic or OpenAI tool-calling. The agent can now scan any Solana or EVM token on demand, and the response fits in a single message body.
{
"name": "scan_token",
"description": "Return a safety + market summary for a token contract. Works on Solana, Ethereum, Base, BSC, Arbitrum, Optimism, Polygon, and Avalanche. Verdict is one of: VERIFIED_STABLECOIN, VERIFIED_WRAPPED, VERIFIED_LST, BLUE_CHIP, ESTABLISHED, CLEAN_ON_SURFACE, CAUTION, SUSPICIOUS, HIGH_RISK, LIKELY_RUG.",
"input_schema": {
"type": "object",
"properties": {
"address": {"type": "string", "description": "Solana mint or EVM 0x contract"},
"chain": {"type": "string", "enum": ["auto","solana","eth","base","bsc","arb","op","poly","avax"]}
},
"required": ["address"]
}
}Tool handler (Node.js, any runtime with fetch):
async function scan_token({ address, chain = 'auto' }) {
// Validate upfront — the API does too, but early rejection keeps
// malformed tool-call traffic off the rate-limit window.
if (!/^[1-9A-HJ-NP-Za-km-z]{32,44}$|^0x[a-fA-F0-9]{40}$/.test(address)) {
return { error: 'invalid_address' };
}
const url = `https://analyzer69000.com/api/v1/token/${encodeURIComponent(address)}?chain=${encodeURIComponent(chain)}&summary=1`;
const r = await fetch(url, { headers: { Accept: 'application/json' } });
if (!r.ok) return { error: `http_${r.status}` };
return await r.json();
}🔌 MCP server (self-hosted)
For MCP-based agent workflows, run a local stdio wrapper that calls the public summary endpoint:
// a69-mcp.mjs — MCP stdio server exposing Analyzer69000 as a tool.
// Run: node a69-mcp.mjs (stdio transport, drop into any MCP host)
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
const server = new Server(
{ name: 'analyzer69000', version: '1.0.0' },
{ capabilities: { tools: {} } },
);
server.setRequestHandler('tools/list', async () => ({
tools: [{
name: 'scan_token',
description: 'Safety + market summary for a token contract (Solana / EVM).',
inputSchema: {
type: 'object', required: ['address'],
properties: {
address: { type: 'string' },
chain: { type: 'string', enum: ['auto','solana','eth','base','bsc','arb','op','poly','avax'] },
},
},
}],
}));
server.setRequestHandler('tools/call', async (req) => {
const { address, chain = 'auto' } = req.params.arguments || {};
if (!/^[1-9A-HJ-NP-Za-km-z]{32,44}$|^0x[a-fA-F0-9]{40}$/.test(address)) {
return { content: [{ type: 'text', text: 'invalid_address' }], isError: true };
}
const r = await fetch(
`https://analyzer69000.com/api/v1/token/${address}?chain=${chain}&summary=1`,
{ headers: { Accept: 'application/json' } },
);
const json = await r.json();
return { content: [{ type: 'text', text: JSON.stringify(json, null, 2) }] };
});
await server.connect(new StdioServerTransport());🧬 Response schema
Every report is the same shape across chains. Click to expand fields:
top-level root— identifiers, scores, version
solana · eth · base · bsc · arb · op · poly · avaxBLUE_CHIP · ESTABLISHED · CLEAN_ON_SURFACE · CAUTION · SUSPICIOUS · HIGH_RISK · LIKELY_RUGorganic · mostly_organic · mixed · coordinated · manipulated?summary=1 was passed — identifies the compact agent responsetoken object— metadata, authorities, age, launchpad
spl_token - token_2022 for Solana mintsage_source)deep_walk_verified · earliest_pair_creation · evm_creation_walk · pair_created_at_fallback — provenance of launch_ts. deep_walk_verified means the walker traversed back to the actual launch tx; evm_creation_walk means the EVM walker reached pair-creation block; pair_created_at_fallback means the walker errored and we used DexScreener's pair-created timestamp as a best-effort estimatemarket object— price, liquidity, volume, per-DEX + CEX listings + per-chain breakdowns
trade_url is present on a market row, we've verified it resolves to the exchange's canonical domain. null means no verified URL for that pair.dex_verified - estimated - coingecko - canonical_supply - provenance of the market cap figuredeployer object— dev address + trade/movement trail
security object— contract safety (EVM)
liquidity_lock object— LP burn + lock verification (both chains)
price_action object— "is this a rug right now?" derived from price + LP + bundle state
bundle object— launch bundle cluster + hold analysis + wash detection
bonding_curve · pair · mint · evm_swap_logs — which on-chain primitive the walker scannedno_logs (RPC returned nothing in window) · pair_created_block_unknown (block-resolver failed) · no_swaps_decoded (logs found but undecodable, eg custom V4 hook) · v4_pool_manager_unknown_chainpredates_scan — caller should retry in ~10 min{walked_to_oldest, pump_api_used, pages_walked, total_sigs, source, launch_block} — lets callers verify the walker actually reached launchprice_basis)holding · sold_partial · sold_all · reaccumulatedpool_or_authority when the wallet looks like an AMM vault / treasury (not a retail bundler)holders object— top-20 distribution (Solana + EVM)
organic_score object— 0–100 composite: launch cleanliness + hold/sold + distribution
organic · mostly_organic · mixed · coordinated · manipulated{kind, weight, ok, detail} — positive weights add to the score, negatives subtractsafety object— scores + reasons + redemption flags
mint_authority_active · mint_authority_lst_program (LST tokens — programmatic PDA, +5 not +15) · freeze_authority_active · dev_snipe · extreme_bundle · heavy_bundle · moderate_bundle · lp_unsecured · lp_partial · lp_concentrated_unsecured (V3/V4 NFT positions) · mintable · transfer_pausable · upgradeable_proxy · ownership_active · serial_rug · price_divergence (multi-pool arbitrage broken)organic_adoption, bundle_resolvedsocial object— verified + discovered socials
fair_launch object— derived fair-launch detection (both chains)
deployer_verification object— multi-signal deployer authenticity check
team_wallets array— pre-launch airdrop recipients (EVM only)
team_trades array— post-launch activity of team wallets (EVM only)
links object— external explorers
_cached boolean— served from response cache or freshly computed
fetched_at iso8601— scan timestamp; append to OG URLs as &v=<unix> for cache-bust
schema_version int— increments when the response shape changes; clients can use it to invalidate their own caches
🎯 Verdicts & scores
safety.verdict is a one-word label derived from the two scores plus age + market gates. Order of evaluation: critical contract flags → score ladder → age-gated upgrade → canonical override.
| Verdict | Trigger | Meaning |
|---|---|---|
| LIKELY_RUG | rug_score ≥ 60 — OR confirmed honeypot (sell reverts) — OR critical contract flag (blacklist, hidden mint authority, paused) | Strong evidence: cannot sell, dead market, deployer drain pattern, or active rug |
| HIGH_RISK | rug_score ≥ 40 | Multiple negative signals stacked |
| SUSPICIOUS | rug_score ≥ 25 | Concerning concentration, authority, or bundle signals |
| CAUTION | rug_score ≥ 12 | Minor flags — new token, single signal |
| CLEAN_ON_SURFACE | rug < 12, bc < 50 (or no age track record) | No negative signals, but not established either |
| ESTABLISHED | strict gate ($10M+ mcap, $500K+ liq, 30d+ age, active vol) OR (age > 30d AND bc ≥ 50) | Liquidity, holders, markets, age look solid |
| BLUE_CHIP | blue-chip qualified ($50M+ mcap, $2M+ liq, 90d+ age, active vol) AND bc ≥ 70 | Proven market, deep liquidity, distributed holders |
| Canonical-token overrides — pre-registered tokens skip the launch-window heuristics: | ||
| VERIFIED_STABLECOIN | USDC, USDT, DAI, FDUSD, … | Mint-controlled by issuer (Circle, Tether, MakerDAO). Bc floor 95. |
| VERIFIED_WRAPPED | WETH, WBTC, cbBTC, WSOL, cbDOGE, cbXRP, BTCB, WBNB, … | 1:1 wrapped representation. Issuer custody controls stay visible but do not count as memecoin rug vectors. Bc floor 95. |
| VERIFIED_LST | stETH, jitoSOL, mSOL, weETH, … | Liquid-staking receipt token. Bc floor 95. |
| BLUE_CHIP (canon) | PEPE, SHIB, FLOKI, BONK, JUP, PYTH, … | Established meme/token registry — launch-window scoring rules don't apply. Bc floor 85. |
Hard cap: blue_chip_score is forced to 0 when rug_score ≥ 40 — a rug cannot be rewarded for being "old" or "renounced." Confirmed honeypots and critical contract flags always land on LIKELY_RUG regardless of any cap.
Active-rug labels (price_action.label)
Independent of safety.verdict — surfaces what's happening on-chain right now. A token can show CAUTION verdict (contract is clean) while ALSO showing lp_drained (the launch is actively unwinding). Share cards + tweets lead with these when they fire.
| Label | Trigger | Surfaces as |
|---|---|---|
rug_pulled | liquidity < $5K AND 24h price < −80% | 💀 RUG PULLED chip + tweet "RUG PULLED. Liquidity gone, price collapsed" |
lp_drained | LP unsecured AND 24h price < −50% AND bundle > 60% sold | 🚨 LP DRAINING · RUG IN PROGRESS chip + tweet "RUG IN PROGRESS. LP unlocked, X% of bundle dumped" |
bundle_dump | bundle > 50% sold AND 24h price < −20% | 📉 BUNDLE DUMPING NOW chip + tweet "Bundle is dumping. X% of launch bag exited" |
mint_inflation | mint NOT renounced AND 24h price < −25% AND liquidity < $20K | In-page advisory; not yet on share card |
notable_drawdown | 24h price < −25% AND LP secured AND bundle quiet | In-page only — distribution / market sell-off, not rug |
pumping | 24h price > +50% | In-page only — buy-share + watch-for-distribution context |
normal_volatility | |24h price| < 25% | In-page only — within typical range |
🔮 PRECOG — predictive rug score
precog is an additional forward-looking field on every scan response, served by an in-house ML model. It is not derived from safety — it's a parallel prediction trained on labeled outcomes from prior scans. Treat the absence of the field as "score not available", never as "no risk."
"precog": {
"rug_probability": 0.83, // 0..1
"risk_band": "HIGH", // CLEAN | LOW | CAUTION | HIGH | EXTREME
"days_estimate": 6, // estimated days until rug (or null)
"days_low": 4, "days_high": 9, // 87% confidence interval
"model_version": "v0-rules",
"schema_version": 1
}
| Band | Probability range | Frontend chip |
|---|---|---|
| CLEAN | < 20% | Card omitted from the safety strip |
| LOW | 20%–<40% | Green ring |
| CAUTION | 40%–<65% | Amber ring |
| HIGH | 65%–<85% | Coral ring + countdown |
| EXTREME | ≥ 85% | Red ring + receipt countdown |
Latency: typical inference 1.5–3 s when the predictive verdict is included; clients should treat absence as graceful fallback (the model is offline, the scan still works).
Bundle hold-vs-sold chips on the share card
Independent of verdict — the OG card shows the launch-bundle exit pattern so X / Discord / Telegram unfurls tell the truth even when the safety verdict is mild.
| Chip | Trigger |
|---|---|
| BUNDLE DUMPED ≥70% | bundle.hold_analysis.pct_sold ≥ 0.70 AND ≥3 wallets sampled |
| BUNDLE EXITING ≥30% | pct_sold ≥ 0.30 AND ≥3 wallets sampled |
| V4 POOL · NFT LP | liquidity_lock.verdict === 'v4_pool' — informational, replaces misleading "LP UNLOCKED" on V4 launches |
🧱 Rate limits
All limits are per-IP, hashed server-side (sha256, no raw IPs stored). Exceeding a limit returns 429 Too Many Requests.
| Endpoint | Per minute | Per hour |
|---|---|---|
/api/v1/token · /api/scan/token | 30 | 300 |
/api/v1/bundle | 30 | 300 |
/api/scan/candles | 60 global + 30 per-pool | — |
/api/scan/tape | 30 | — |
/api/scan/honeypot | 20 | — |
/api/scan/impact | 120 | — |
/api/scan/wallet-detail | 30 | — |
/api/scan/funder-chain | 20 | — |
/api/scan/deep-bundle | 6 | 30 |
/api/trending | 60 | — |
/api/social/feed | 30 | — |
/api/comments/search | 15 | 200 |
/api/comments/list | 60 | 600 |
/api/comments/wallet-lookup | 10 | 120 |
/api/launch/book | — | 5 |
/api/check/[addr] (page renderer) | 30 | 300 |
/api/og/* | — | edge-cached 1h (60s + SWR on unversioned URLs) |
Reports cache server-side for 12 hours — re-scanning the same address is effectively free. OG cards with a ?v=<unix> version tag are CDN-immutable (max-age=86400, immutable).
Need higher limits? DM @cryptoflan.
💻 Code examples
curl -s 'https://analyzer69000.com/api/v1/token/<addr>' | jq '.safety'const res = await fetch(`https://analyzer69000.com/api/v1/token/${addr}`);
const { token, safety, market } = await res.json();
console.log(`${token.name} — ${safety.verdict} (${safety.rug_score}/100)`);import requests
r = requests.get(f'https://analyzer69000.com/api/v1/token/{addr}', timeout=10)
data = r.json()
print(data['safety']['verdict'], data['safety']['rug_score'])// Node 20+ — native fetch
const res = await fetch(`https://analyzer69000.com/api/v1/token/${addr}`, {
headers: { Accept: 'application/json' },
});
const report = await res.json();resp, err := http.Get("https://analyzer69000.com/api/v1/token/" + addr)
if err != nil { return err }
defer resp.Body.Close()
var report map[string]any
json.NewDecoder(resp.Body).Decode(&report)let url = format!("https://analyzer69000.com/api/v1/token/{addr}");
let report: serde_json::Value = reqwest::get(url).await?.json().await?;❓ Frequently asked questions
Short answers. If something's still unclear, ping @cryptoflan on X.
Do I need an API key?
No. All public endpoints are free and rate-limited per IP — drop them into production without creating an account. A keyed higher-rate tier may launch later; the free tier stays free.
Which chains are supported?
Eight, with one unified scoring model:
- Solana — base58 mint addresses
- Ethereum, Base, BSC, Arbitrum, Optimism, Polygon, Avalanche —
0x…contracts
Chain is auto-detected from address format. Pass chain=auto or be explicit with chain=base, chain=avax, etc. Hyperliquid is treated as a perps venue, not a public token-scan chain.
Can I scan a contract that just launched seconds ago?
Yes. Cache is bypassed for any address we haven't seen before — first request triggers a fresh on-chain analysis (~1–3 seconds). After that, results are cached for 12 hours. Force a refresh with ?refresh=1.
How accurate is the rug score?
The score is deterministic — same on-chain state always produces the same number. Every signal is returned in safety.rug_reasons with a weight, so you can audit the math end-to-end.
Blue-chip recognition has an "established" override: mcap > $10M + liquidity > $500K + age > 30d pulls the score down automatically, so JUP / BONK / USDC don't trip the concentration detectors.
Two read-path reconciliations live in front of the cron jobs so the dashboard never disagrees with itself: (1) bundle-dump and holder-concentration are computed from adjusted_top10_pct on every read instead of trusting whatever a refresh job last wrote; (2) Uniswap V4 pools (no pair contract to burn) get a neutral v4_pool verdict instead of being misread as 0% secured.
What's in a token report?
Everything you'd otherwise stitch together from 4–5 different tools:
- Mint + freeze authority status (revoked? renounced?)
- Deployer trail, first-buyer bundle, dev-snipe %
- Every liquidity pool across every DEX + cross-chain breakdown
- Holder map — top 20 with pump.fun curve / LP / burn / deployer / retail classification
- Socials (X, Telegram, Discord, site) with verified vs. found separation
- Price, volume, market cap, FDV, 24h change, age
- Rug score + blue-chip score + verdict (BLUE_CHIP / ESTABLISHED / SUSPICIOUS / LIKELY_RUG)
What are the rate limits?
30 req/min and 300 req/hour per IP on the free tier. Burst-friendly. If you hit the ceiling we return HTTP 429 with a Retry-After header — respect it and you're back online in under a minute.
Can I use it in a commercial product?
Yes — fair use applies (don't resell the raw JSON as "your" API). Link back with "Scan by Analyzer69000" or leave the built-in Powered by branding in the embeds. Custom accent colors, custom themes, all allowed — we want the widgets in your UI.
Is the embed safe to drop into my production site?
Yes. Specifically designed to be boring security-wise:
- Shadow-DOM isolated — zero CSS leakage in either direction
- All user-derived strings HTML-escaped before render
- Logo images gated through
URL()protocol check (onlyhttps://) and loaded withreferrerpolicy=no-referrer - No inline event handlers constructed from API data
- No third-party network calls from any variant except
bubbles, which lazy-imports D3 fromcdn.jsdelivr.net(add toscript-srcif you run strict CSP) - Optional auto-refresh is capped at min 20s so it can't amplify a reload loop
What happens if Analyzer69000 is down?
The widget renders a graceful error state in your chosen theme — no broken layout, no console spam, no uncaught promises. Your page keeps working. Once the API comes back, the next data-refresh tick recovers automatically.
Do you store any user data?
No wallet connect, no cookies, no accounts, no PII. Rate limiting uses a SHA-256 hash of the requester IP — the raw IP is never written to disk. Token reports are cached for 12h keyed on address + chain only.
How do I report a bug or suggest a feature?
DMs open on X @cryptoflan. Include the token address, the response you got, and what you expected — fixes usually ship same day.