Developers

API Documentation

Integrate RugSol token scanning into your bots, dashboards, and applications. No API key required for basic usage.

Base URL

https://rugsol.com/api

Endpoints

POST/scan

Description

Perform a full security scan on a Solana token. Returns a comprehensive risk assessment including score, grade, individual check results, holder data, liquidity info, and detected risk factors.

Request Body

{
  "address": "TokenMintAddress..."
}
addressrequiredSolana token mint address (base58 string, 32-44 chars)

Response

{
  "score": 82,
  "grade": "A",
  "token": {
    "name": "Token Name",
    "symbol": "TKN",
    "image": "https://...",
    "address": "TokenMintAddress...",
    "decimals": 9,
    "supply": "1000000000"
  },
  "checks": {
    "mintAuthority": { "status": "revoked", "passed": true },
    "freezeAuthority": { "status": "revoked", "passed": true },
    "honeypot": { "status": "sellable", "passed": true },
    "topHolders": { "concentration": 28.5, "passed": true },
    "liquidity": { "usd": 125000, "passed": true },
    "lpLocked": { "status": "burned", "passed": true },
    "tokenAge": { "hours": 720, "passed": true },
    "metadata": { "mutable": false, "passed": true }
  },
  "holders": {
    "top10": [
      { "address": "Abc...", "pct": 5.2, "type": "wallet" },
      ...
    ]
  },
  "penalties": [
    { "reason": "Top holder > 5%", "points": -5 }
  ],
  "mode": "dex",
  "price": { "usd": 0.00234, "change24h": -12.5 },
  "liquidity": { "usd": 125000 },
  "cached": false,
  "timestamp": "2026-02-08T12:00:00Z"
}

Status Codes

200Scan completed successfully
400Invalid token address format
404Token not found on Solana
429Rate limit exceeded — try again later
500Internal server error

Example

cURL
curl -X POST https://rugsol.com/api/scan \
  -H "Content-Type: application/json" \
  -d '{"address": "So11111111111111111111111111111111111111112"}'
JavaScript
const response = await fetch("https://rugsol.com/api/scan", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    address: "So11111111111111111111111111111111111111112"
  })
});

const result = await response.json();
console.log(result.score, result.grade);
Python
import requests

response = requests.post(
    "https://rugsol.com/api/scan",
    json={"address": "So11111111111111111111111111111111111111112"}
)

result = response.json()
print(f"Score: {result['score']} | Grade: {result['grade']}")

Rate Limits

30

Requests / minute

500

Requests / day

Free

No API key needed

Need higher limits? Contact us on Telegram for enterprise access.

Notes

Caching

Responses may be cached for up to 5 minutes. The `cached` field in the response indicates whether the result was served from cache. To force a fresh scan, wait for the cache to expire.

Timeouts

Scans typically complete in 3-8 seconds. The API has a 30-second timeout. If a scan takes longer (due to tokens with many holders or slow RPC), you may receive a partial result or timeout error.

Response Size

Full scan responses are typically 2-5 KB. The holder list is capped at the top 10 holders. For tokens with extensive penalty lists, response size may be slightly larger.