⚙ Developer API · v1
Build agents on ScanHood.
The safety + launch layer for Robinhood Chain. Scan any token, check deployer reputation, and read tokenized-stock data — over a simple REST API. Free, no key required for read endpoints (rate-limited).
Safety scan
GET/api/scan?token={address}
Composite on-chain safety verdict for any Robinhood-Chain token: honeypot buy+sell simulation, LP-lock status, contract verification, manipulation guard, RWA recognition, and deployer reputation.
| Param | Description |
|---|
| token | ERC-20 address (0x + 40 hex) |
# request
curl "https://scanhood.xyz/api/scan?token=0x56910D4409F3a0C78C64DD8D0545FF0705389870"
# response (abridged)
{
"verdict": "PASS", // PASS | CAUTION | DANGER
"sellable": true, // honeypot sim: can you sell?
"roundTripLossPct": 2,
"lp": { "status": "locked", "safe": true },
"verified": false,
"launchpad": "scanhood", // scanhood | pons | launchhood | null
"rwa": "official", // official | impostor | unverified | null
"deployer": { "address": "0x..", "launched": 3, "risk": "none", "label": ".." },
"market": { "pool": "0x..", "priceUsd": 0.0169, "liq": 1276679, "vol24": 0, ... },
"flags": [ { "level": "warn", "msg": ".." } ]
}
Search & market data
GET/api/search?q={query}
Find any Robinhood-Chain token by symbol, name, or address. Returns normalized screener rows.
curl "https://scanhood.xyz/api/search?q=robinhood"
GET/api/ohlcv?pool={address}&tf={5m|15m|1h|4h|1d}
On-chain OHLCV candles for a pool, for native charting.
curl "https://scanhood.xyz/api/ohlcv?pool=0x..&tf=1h"
Launch a token v2
This endpoint covers the two
direct launch paths (V3/V4, single payer, atomic). The
bonding curve,
Crowd Launch (pooled bidding), and
NFT launchpad paths aren't wrapped by a REST endpoint yet, call their contracts directly, see
Crowd Launch below and the
whitepaper's contract addresses.
POST/api/launch
Launch a no-rug token programmatically, on either launchpad version. Returns an unsigned launchToken transaction — ScanHood never holds your key or funds, you sign and send it yourself. On success, liquidity is minted straight into a locked position (held by our locker contract, cannot be pulled) and the token is tradeable instantly.
| Field | Description |
| name, symbol | required |
| version | optional — "v3" (default, anti-snipe protection + atomic initial buy) or "v4" (Uniswap V4, no anti-snipe window) |
| logo, description, socials | optional metadata (socials: twitter/telegram/discord/website/farcaster) |
| feeWallet | optional — address that receives your share of trading fees (defaults to you, the sender) |
| initialBuyEth | v3 only — ETH amount to buy in the same tx (default 0). Rejected for v4 — no anti-snipe window to route around, so no advantage over buying normally after launch. |
| initialTick | v4 only — starting price tick (default -204200) |
| from | optional — your wallet address, used only to predict the token's address ahead of time (CREATE2, verified exact-match for both versions) |
# request — add "version": "v4" for a V4 launch instead
curl -X POST https://scanhood.xyz/api/launch -H "Content-Type: application/json" -d '{
"name": "My Token", "symbol": "MTK", "feeWallet": "0xYourAddress"
}'
# response (abridged) — sign & send this yourself, as a LEGACY (type 0) tx
{
"chainId": 4663, "to": "0x75eC...D35A7", "data": "0x...", "value": "1000000000000000",
"predictedToken": "0x...",
"gas": { "type": 0, "gasPrice": "...", "gasLimitSuggested": 9000000 }
}
GET/api/quote?token={address}&side={buy|sell}&amount={n}
Read-only swap quote (no execution) for a token against the ScanHood swap contract — expected output amount for a given ETH-in (buy) or token-in (sell).
curl "https://scanhood.xyz/api/quote?token=0x..&side=buy&amount=0.01"
Bridge relay.link
GET/api/bridge-quote?fromChain={id}&toChain={id}&amount={n}&user={address}
Read-only cross-chain quote (no execution) for bridging native ETH/BNB, via
relay.link — the same route the
Bridge tab on /swap uses. No ScanHood fee. Supported chain ids:
4663 (Robinhood),
1 (Ethereum),
8453 (Base),
42161 (Arbitrum),
56 (BNB Chain). Returns the unsigned deposit tx (
to/
value/
data) for the caller's own wallet to sign on
fromChain — ScanHood never holds funds or keys, same as every other endpoint here.
user is optional and only improves quote accuracy.
curl "https://scanhood.xyz/api/bridge-quote?fromChain=4663&toChain=8453&amount=0.01"
Crowd Launch on-chain
Pooled-bid launches: no REST wrapper yet, call the contract directly. Bidders pool ETH into a timed window; when it closes, anyone can permissionlessly call
conclude(), which graduates the whole raise into one locked Uniswap V3 pool at a single clearing price for every bidder. Full mechanics in the
whitepaper; live UI at
/launch/crowd.
| Contract | Robinhood Chain (4663) |
| ScanHoodCrowdLaunch | 0x9DEa8Da99a4FdbA4F634BBbbc3d92d911Ad072C8 |
| Function | What it does |
| openCrowdLaunch(params, fdvTargetWei, windowSecs) | Opens a new pooled launch for a token spec, payable launch fee included |
| bid(token) payable | Adds ETH to an open launch's pool; min bid enforced on-chain |
| conclude(token) | Permissionless — anyone can call once the window ends. Graduates to a locked V3 pool if the target cleared, opens refunds if it didn't |
| claimTokens(token) / claimRefund(token) | Pull-based — each bidder claims their own pro-rata tokens or exact refund, one bidder's claim can never block another's |
Data feeds static JSON
Refreshed on a cron; fetch directly, no rate limit.
| Endpoint | What |
| /api/robinhood-stocks.json | Tokenized stocks / RWA with official-issuer verification |
| /api/deployer-reputation.json | Deployer reputation — serial-rugger / spam-launcher scores |
| /api/robinhood-scanhood-launches.json | ScanHood launchpad launches (new/trending/graduating/graduated) |
| /api/robinhood-noxa-launches.json | Locked-LP launches from other Robinhood Chain launchpads (Pons, LaunchHood, etc — each tagged with its real platform) |
| /api/stocks-fundamentals.json | Fundamentals for every tokenized US stock (194): price, market cap, P/E, EPS, P/B, dividend yield, 52-week range, and on-chain basisPct — how far the on-chain pool price sits from the real listed price. Refreshed every 15min. Powers /fundamentals |
MCP server agents
POST/mcp
Streamable-HTTP MCP endpoint — point any MCP-compatible agent (Claude, etc.) at https://scanhood.xyz/mcp and it gets 20 native tools, no hand-rolled HTTP calls.
# add as a remote MCP server (client-specific syntax varies)
url: https://scanhood.xyz/mcp
transport: streamable-http
| Tool | What it does |
| scan_token | Composite safety verdict (PASS/CAUTION/DANGER) |
| search_token | Find a token by symbol, name, or address |
| get_ohlcv | On-chain OHLCV candles for a pool |
| get_stock_fundamentals | P/E, market cap, dividend yield, 52-week range and on-chain basis for any of the 194 tokenized stocks |
| get_swap_quote | Read-only buy/sell quote, no execution |
| get_bridge_quote | Read-only cross-chain bridge quote via relay.link, no execution |
| build_launch_tx | Build (unsigned) a V3 or V4 direct-launch tx |
| get_watchlist / save_watchlist | Read or overwrite a wallet's saved watchlist (save requires a signed message) |
| get_streak | A wallet's consecutive-day scan streak |
| get_scan_log | Recent completed scans, optional verdict filter |
| get_scan_rollup | Daily PASS/CAUTION/DANGER counts, up to 60 days |
| apply_partner_key / get_partner_status | Apply for a free backlink-verified key, or check one |
| get_paid_tier_info / upgrade_to_paid_tier | Read the paid-tier payment terms, or submit a payment txid to upgrade a key |
| get_bots_stats | Stats from ScanHood's own arbitrage / fee-claim bots |
| get_bots_claim_prefs / set_bots_claim_prefs | Read or set per-token fee auto-claim preference (set requires a signed message) |
build_launch_tx covers V3/V4 direct launches only, same as /api/launch above — curve, Crowd Launch, and NFT paths aren't wrapped as MCP tools yet.
Partner tier free
POST/api/partner/apply
Free, higher-rate-limit access for any project that links back to ScanHood. Send {"site": "https://yoursite.com", "contact": "optional"} — this server actually fetches your site and checks for a real <a href> to scanhood.xyz on it before issuing a key, not a self-reported claim. Add the link, then apply. Add the returned key as ?key=... on any GET /api/* request to skip the standard per-IP rate limit entirely.
| Field | Meaning |
| site | Full URL of the page that links to scanhood.xyz (required) |
| contact | Optional, for reaching you about the integration |
GET/api/partner/status?key={key}
Check that a key is active and see which site it's registered to.
Pricing pay per scan
GET/api/scan
500 free scans per IP per UTC day. After that, $0.002 per scan, paid in USDC on Base (standard x402, pays automatically), USDC on Base or USDG on Robinhood Chain (prepaid), or native ETH on Robinhood Chain (chain 4663). No signup, built so a bot or agent can pay and continue without a human step. Every free response carries X-RateLimit-Remaining; once it hits zero, /api/scan returns HTTP 402 with the exact wei price at the live ETH rate, the treasury address and the retry recipe.
# x402 clients (USDC on Base): nothing to do. The 402 lists scheme "exact" first;
# your x402 client signs a USDC authorization, retries with X-Payment, and gets the scan.
# Each paid request buys 1 scan; the response carries X-ScanHood-Key and X-PAYMENT-RESPONSE.
# Prepaid stablecoins: send >= $0.05 of USDC (Base) or USDG (Robinhood Chain) to the treasury,
# then do steps 2-3 below and add "network":"base" for Base payments.
# 1. pay: send ETH (>= minAmountWei from the 402) on Robinhood Chain
tx = await wallet.sendTransaction({ to: "0x6118D7E24Ee0F31d2d3400269944DF8b40EC36A2", value })
# 2. sign the txid with the SAME wallet (EIP-191 personal_sign)
signature = await wallet.signMessage("ScanHood credits: " + tx.hash)
# 3. retry the same request with the payment attached
curl "https://scanhood.xyz/api/scan?token=0x..." \
-H "X-Payment: $(echo -n '{"txid":"0x..","signature":"0x.."}' | base64 -w0)"
# -> 200 with your scan, plus X-ScanHood-Key: sh_... and _billing.creditsRemaining
# 4. from then on send the key; each scan uses 1 credit
curl "https://scanhood.xyz/api/scan?token=0x...&key=sh_..."
| Item | Value |
| Free tier | 500 scans / IP / UTC day |
| Price | $0.002 per scan, credits = floor(paid USD / 0.002) |
| Minimum top-up | $0.05 (25 scans); the 402 also suggests $1 = 500 scans |
| Accepted | USDC on Base (x402 or prepaid), USDG on Robinhood Chain, ETH on Robinhood Chain |
| Pay to | 0x6118D7E24Ee0F31d2d3400269944DF8b40EC36A2 |
| Top-ups | Payments from the same wallet add to the same key |
The signature is what ties a payment to its payer: a payment seen on-chain can't be claimed by anyone else. MCP agents: scan_token takes optional api_key and payment arguments, and get_scan_pricing returns this recipe.
GET/api/pricing
Live pricing: wei per scan at the current ETH rate, minimum and suggested top-up, treasury, and the pay steps.
GET/api/credits?key={key}
Credits left on a key, the wallet it belongs to, total purchased and last use.
POST/api/credits/redeem
Redeem a payment without running a scan: body {"txid": "0x..", "signature": "0x.."}. Returns the key and its balance.
Agent-oriented resources agents
GET/llms.txt
Full API summary in
llms.txt format — the fastest way for an agent to understand what ScanHood does and which endpoint to call.
GET/openapi.json
Full OpenAPI 3.1 spec for the REST API — lets agent frameworks (LangChain, CrewAI, etc.) auto-generate tool bindings without hand-written wrappers.
Coming soon v3
POST/api/swap
One-click safe buy/sell execution endpoint, plus per-call crypto payments (x402) for metered access to premium endpoints.
Want early access? →
🛡️ ScanHood's data reduces risk; it is not a guarantee or a buy signal. Sellable ≠ safe buy. Always verify on-chain. Not affiliated with Robinhood Markets, Inc.