⚙ 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).

Base URL   https://scanhood.xyz  ·  JSON  ·  CORS *  ·  ~5 req/s per IP  ·  higher limit for backlink partners ↓
Open source   github.com/scanhood/scanhood ↗  ·  the honeypot sim, LP-lock check, and this whole API, read the actual code, not just the docs

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.
ParamDescription
tokenERC-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.
FieldDescription
name, symbolrequired
versionoptional — "v3" (default, anti-snipe protection + atomic initial buy) or "v4" (Uniswap V4, no anti-snipe window)
logo, description, socialsoptional metadata (socials: twitter/telegram/discord/website/farcaster)
feeWalletoptional — address that receives your share of trading fees (defaults to you, the sender)
initialBuyEthv3 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.
initialTickv4 only — starting price tick (default -204200)
fromoptional — 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.
ContractRobinhood Chain (4663)
ScanHoodCrowdLaunch0x9DEa8Da99a4FdbA4F634BBbbc3d92d911Ad072C8
FunctionWhat it does
openCrowdLaunch(params, fdvTargetWei, windowSecs)Opens a new pooled launch for a token spec, payable launch fee included
bid(token) payableAdds 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.
EndpointWhat
/api/robinhood-stocks.jsonTokenized stocks / RWA with official-issuer verification
/api/deployer-reputation.jsonDeployer reputation — serial-rugger / spam-launcher scores
/api/robinhood-scanhood-launches.jsonScanHood launchpad launches (new/trending/graduating/graduated)
/api/robinhood-noxa-launches.jsonLocked-LP launches from other Robinhood Chain launchpads (Pons, LaunchHood, etc — each tagged with its real platform)
/api/stocks-fundamentals.jsonFundamentals 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
ToolWhat it does
scan_tokenComposite safety verdict (PASS/CAUTION/DANGER)
search_tokenFind a token by symbol, name, or address
get_ohlcvOn-chain OHLCV candles for a pool
get_stock_fundamentalsP/E, market cap, dividend yield, 52-week range and on-chain basis for any of the 194 tokenized stocks
get_swap_quoteRead-only buy/sell quote, no execution
get_bridge_quoteRead-only cross-chain bridge quote via relay.link, no execution
build_launch_txBuild (unsigned) a V3 or V4 direct-launch tx
get_watchlist / save_watchlistRead or overwrite a wallet's saved watchlist (save requires a signed message)
get_streakA wallet's consecutive-day scan streak
get_scan_logRecent completed scans, optional verdict filter
get_scan_rollupDaily PASS/CAUTION/DANGER counts, up to 60 days
apply_partner_key / get_partner_statusApply for a free backlink-verified key, or check one
get_paid_tier_info / upgrade_to_paid_tierRead the paid-tier payment terms, or submit a payment txid to upgrade a key
get_bots_statsStats from ScanHood's own arbitrage / fee-claim bots
get_bots_claim_prefs / set_bots_claim_prefsRead 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.
FieldMeaning
siteFull URL of the page that links to scanhood.xyz (required)
contactOptional, 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_..."
ItemValue
Free tier500 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
AcceptedUSDC on Base (x402 or prepaid), USDG on Robinhood Chain, ETH on Robinhood Chain
Pay to0x6118D7E24Ee0F31d2d3400269944DF8b40EC36A2
Top-upsPayments 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.