Version 1 · Public

HoodCheck REST API

Token safety data for Robinhood Chain, free and open. No key, account, or token holding required.

Base URLhttps://hoodcheck.xyzThe API is served from https://hoodcheck.xyz/v1; all JSON endpoints send Access-Control-Allow-Origin: *.

Quick start

curl https://hoodcheck.xyz/v1/scan/0x020bfC650A365f8BB26819deAAbF3E21291018b4

Endpoints

GET/v1/scan/{address}

Run or retrieve a scan. Cached for ten minutes; add ?fresh=true to force a new scan.

GET/v1/scan/{address}/stream

Stream check progress as server-sent events, followed by the complete nested scan response.

GET/v1/history/{address}

Return up to 100 past score and verdict observations for a token, with ISO 8601 UTC timestamps.

GET/v1/recent

Return the 50 most recent unique token scans. Cached for 30 seconds.

GET/v1/stats

Return live aggregate scan totals, DANGER verdict count, and scans per minute over the last hour.

Scan response

{
  "address": "0x…",
  "name": "Example",
  "symbol": "EXMPL",
  "score": 79,
  "verdict": "CAUTION",
  "scannedAt": "2026-07-10T08:00:00.000Z",
  "blockNumber": 1234567,
  "checks": {
    "honeypot": {
      "status": "unknown",
      "summary": "RPC does not support the required state overrides.",
      "details": {}
    },
    "lp": {
      "status": "pass",
      "summary": "All active LP positions are held by a known locker.",
      "details": { "pool": "0x…", "positions": [] }
    },
    "holders": {
      "status": "warn",
      "summary": "Top-holder concentration is elevated.",
      "details": { "topTenPercent": 42.1 }
    },
    "contract": {
      "status": "pass",
      "summary": "No dangerous controls were identified.",
      "details": { "verified": true, "flags": [] }
    },
    "deployer": {
      "status": "pass",
      "summary": "No recorded harmful deployments were found.",
      "details": { "priorDeployments": 0 }
    },
    "nameCollision": {
      "status": "pass",
      "summary": "No high-liquidity name collision was found.",
      "details": { "matches": [] }
    }
  }
}

Every check returns pass, warn, fail, or unknown. Unknown checks are removed from the weighted denominator and cap the final score at 79. Honeypot and LP failures always force DANGER.

Rate limits & errors

Scan endpoints allow 60 requests per minute per source IP. A 429 response includes an accurate sliding-window Retry-After value in both the response header and JSON body. Badge rendering and recent-feed traffic remain HTTP-cached; unseen badge addresses are deduplicated and their background enqueue rate is limited. Global scan capacity can return 503 with Retry-After. Upstream RPC or explorer failures return unknown check states wherever a partial result is safe; a scan-wide failure returns 502.

Embeddable badge

<a href="https://hoodcheck.xyz/token/0xYOUR_TOKEN">
  <img
    src="https://hoodcheck.xyz/badge/0xYOUR_TOKEN.svg?style=rich"
    alt="Token safety score on HoodCheck"
  />
</a>

The recommended ?style=rich badge includes the token logo, name, symbol, score, verdict, and HoodCheck attribution. Omit the query parameter for the legacy compact 172×28 badge. Responses cache for ten minutes; an unscanned badge renders SCAN ↗ immediately and queues the token without waiting on an RPC scan.

Verdicts

SAFE80–100, with no unknowns or critical failure
CAUTION50–79
DANGERBelow 50, or any honeypot/LP failure