The model: real-time is the paywall

For a detection product, time is the value: a rug alert that arrives 10 minutes late is worthless. So everything is free, but the live intel flow is delayed ~10 minutes on a free key and real-time on a paid one. Targeted token lookups (/v1/token) are real-time for everyone. Every flow response carries an X-Data-Delay-Seconds header.

New here? See how RektRadar compares to GoPlus, Token Sniffer and De.Fi.

Authentication

Pass your key as a Bearer token (or the X-API-Key header). No key falls back to anonymous free access, just delayed. The full, always-current schema lives at api.rektradar.io/v1/docs (OpenAPI 3.1).

curl:

curl -H "Authorization: Bearer rr_live_xxx" \
  https://api.rektradar.io/v1/token/0xABC...

Python:

import requests

r = requests.get(
    "https://api.rektradar.io/v1/token/0xABC...",
    headers={"Authorization": "Bearer rr_live_xxx"},
)
verdict = r.json()
if verdict["score"] >= 70:
    print("high risk", verdict["flags"])

REST endpoints

Base URL: https://api.rektradar.io

MethodEndpointReturnsFreshness
GET /v1/token/:address Risk verdict for a token: score (0-100) + flags. real-time
GET /v1/token/:address/full Verdict + liquidity + holders. real-time
GET /v1/rugs Recent rug pulls (query: since=14d). delayed (free) / live (paid)
GET /v1/recent Recent analyses feed. delayed (free) / live (paid)
GET /v1/deployers/top Top scam deployers leaderboard. real-time
GET /v1/trends Scam pools / analyses bucketed over time (daily / weekly / hourly). real-time (hourly live hour delayed on free)
GET /v1/stats Platform-wide counters: tokens scanned, scams, deployers mapped. real-time

Example response (/v1/token/:address):

{
  "address": "0xabc...",
  "score": 82,
  "flags": ["hidden_mint", "ownership_not_renounced", "lp_not_locked"]
}

Live stream & webhooks

Subscribe to the real-time flow over a WebSocket (wss://api.rektradar.io/v1/stream?api_key=...), or register an HTTPS endpoint and we POST events to it. Webhook deliveries are HMAC-SHA256 signed. The full machine-readable schema lives at api.rektradar.io/v1/stream-docs (AsyncAPI 3.0).

Stream eventWebhook eventFires when
new_token token.new a new pair / pool is created
token_scored token.scored an analysis completes
token_scored token.high_risk an analysis completes with score >= 70
imminent_rug rug.imminent a pending rug is seen in the mempool (liquidity removal / owner rug-function), before it is mined
rug rug.detected liquidity is pulled

Register a webhook

Manage your endpoints with a key. The number of endpoints is capped per plan (Free 1, Basic 5, Premium 20, Pro 100); free deliveries are ~10 min delayed, paid are live.

MethodEndpointDoes
POST /v1/webhooks Register an HTTPS endpoint; returns the signing secret once.
GET /v1/webhooks List your endpoints (never returns the secret).
DELETE /v1/webhooks/:id Delete one of your endpoints.
# register an endpoint - the signing secret is returned ONCE
curl -X POST -H "Authorization: Bearer rr_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://you.example/hook","events":["rug.detected"]}' \
  https://api.rektradar.io/v1/webhooks
# -> { "secret": "whsec_...", "endpoint": { "id": 1, ... } }

# list / delete your endpoints (the secret is never echoed back)
curl    -H "Authorization: Bearer rr_live_xxx" https://api.rektradar.io/v1/webhooks
curl -X DELETE -H "Authorization: Bearer rr_live_xxx" https://api.rektradar.io/v1/webhooks/1

Verify a delivery (Node):

import { verifyWebhook } from "@mik3fly-lab/rektradar-sdk";

// RektRadar signs every delivery: X-RektRadar-Signature: sha256=<hmac>
const ok = verifyWebhook(rawBody, req.header("X-RektRadar-Signature") ?? "", SECRET);
if (!ok) return res.sendStatus(401);

Official SDK

TypeScript, zero runtime dependencies, isomorphic (Node + browser).

npm install @mik3fly-lab/rektradar-sdk
import { RektRadar, connectStream } from "@mik3fly-lab/rektradar-sdk";

const rr = new RektRadar({ apiKey: process.env.REKTRADAR_KEY });

const verdict = await rr.token("0x...");
if (verdict.score >= 70) {
  console.warn("high risk", verdict.flags);
}

// live intel stream (paid = live, free = ~10 min delayed)
import WebSocket from "ws";
connectStream({
  apiKey: process.env.REKTRADAR_KEY,
  events: ["new_token", "imminent_rug", "rug"],
  WebSocket,
  onMessage: (e) => console.log(e.type, e.data),
});

See it run in the browser on the free tier: demo.rektradar.io (token lookups, biggest rugs, new scams per day, a 6h live pulse).

Source: github.com/mik3fly-lab/rektradar-sdk

Plans & limits

API access is included with every RektRadar plan. Quota beyond the included monthly amount is billed as metered overage.

PlanPrice /moDataQuotaRateWSHooks
Free free ~10 min delayed 10k / mo 10 / min 1 1
Basic 19.99 real-time 50k / mo 30 / min 3 5
Premium 49.99 real-time + forensics 250k / mo 120 / min 10 20
Pro 99 real-time + SLA 1M / mo 300 / min 30 100

Frequently asked questions

Is there an API to detect Ethereum rug pulls and honeypots?

Yes. RektRadar is a REST + WebSocket API that returns a 0-100 risk score and on-chain red-flag list for any Ethereum token, plus a live stream of new deploys and rug pulls. It is free to start, no signup required.

How do I get a RektRadar API key?

Create one at app.rektradar.io/account#api-keys - the free tier needs no credit card. You can also call the API anonymously (free, ~10 min delayed) before you ever sign up.

Is the API free?

Yes for the free tier: 10,000 requests/month, real-time targeted token lookups, and a ~10 min-delayed activity flow. Real-time flows + higher quotas are included from the Basic plan (19.99/mo) up.

Can it detect a rug pull in real time?

A paid key receives an imminent_rug event the moment a pending rug (liquidity removal / owner rug-function) is seen in the mempool, before it is mined - over WebSocket or a signed webhook.

How is it different from GoPlus or a free honeypot checker?

A honeypot simulation is commoditized. RektRadar adds the proprietary intel a sandbox cannot see: the deployer wallet graph and funding clusters, drainer-kit bytecode matches, rug forensics, and the mempool pre-rug signal - 100+ flags across 8 analyzers.

Which chains and languages are supported?

Ethereum mainnet. The API is plain REST (any language); an official TypeScript SDK (@mik3fly-lab/rektradar-sdk) is published on npm with REST, stream and webhook helpers.