The Problem
Before buying any Solana token, you need to check: mint authority, freeze authority, liquidity, volume, and rug pull risk. Doing this manually means checking multiple sites every time.
I built an API that does all of it in one call.
The API
GET /api/scan?mint=TOKEN_ADDRESS&apiKey=YOUR_KEY
Returns comprehensive token safety data:
{
"data": {
"name": "Bonk",
"symbol": "BONK",
"mintAuthority": { "status": "RENOUNCED" },
"freezeAuthority": { "status": "RENOUNCED" },
"price": { "usd": 0.00001847 },
"market": { "liquidityUsd": 18459233, "volume24hUsd": 89234521 },
"risk": { "score": 5, "level": "LOW", "reasons": ["Moderate volume"] }
}
}
Risk Scoring (0-100)
| Check | Points | Condition |
|---|---|---|
| Mint Authority | +30 | Active (can inflate supply) |
| Freeze Authority | +25 | Active (can freeze tokens) |
| Liquidity | +5-25 | Low = risky |
| Volume | +5-15 | Low = risky |
JavaScript Example
const res = await fetch(
`https://devtools-site-delta.vercel.app/api/scan?mint=${mint}&apiKey=${key}`
);
const { data } = await res.json();
if (data.risk.level === 'HIGH') {
console.log('WARNING:', data.risk.reasons.join(', '));
}
Python Example
import requests
res = requests.get('https://devtools-site-delta.vercel.app/api/scan', params={
'mint': token_address,
'apiKey': api_key
})
data = res.json()['data']
print(f"Risk: {data['risk']['level']} ({data['risk']['score']}/100)")
Data Sources
The API aggregates from three sources in parallel:
- Solana RPC (Helius) — mint/freeze authority, supply
- Jupiter Price API — current USD price
- DexScreener — liquidity, volume, pair data
Pricing
0.5 SOL for an API key (1000 requests/month, 10/min rate limit).
Get your key: devtools-site-delta.vercel.app/api-access
Who Is This For?
- Bot developers checking tokens before trades
- Trading dashboards showing risk indicators
- Portfolio trackers flagging risky holdings
I use this same logic in my Telegram trading bot for the /scan command.
Free web version (no API key): devtools-site-delta.vercel.app/sol-scan
Top comments (0)