Build bots, dashboards, and automated trading systems with the CryptoPulse REST API.
34
EVM chains supported
100+
Labeled whale wallets
<200ms
Average response time
https://cryptopulse.uno/api1. Get your API key from the Dashboard. Free accounts with a confirmed email can start a 7-day API trial — 10 API calls/day, verified email, no card. Every endpoint, webhooks and the Alpha-bot Signal feed — the full paid surface, rate-limited — every endpoint and the MCP server, capped at 10 calls/day. That is enough to see the real payloads and verify a signature, and not enough to run a polling loop on: for that you want a paid plan. Paid plans: Pro ($19/mo), Trader ($49/mo) or API ($99/mo).
2. Make your first request:
curl -H "Authorization: Bearer cpk_your_api_key_here" \ https://cryptopulse.uno/api/whales?chain=ethereum&limit=5
3. Or use JavaScript:
const res = await fetch("https://cryptopulse.uno/api/whales?chain=ethereum", {
headers: { "Authorization": "Bearer cpk_your_api_key_here" }
});
const { transactions } = await res.json();
console.log(`Found ${transactions.length} whale moves`);4. Python example:
import requests
headers = {"Authorization": "Bearer cpk_your_api_key_here"}
r = requests.get("https://cryptopulse.uno/api/wallet/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
params={"multichain": "true"}, headers=headers)
wallet = r.json()
print(f"Score: {wallet['score']['overall']}/100 — {wallet['score']['classification']}")5. Poll the feed exactly once — store cursor.latest and pass it back as since. Offset paging re-reads and drops rows when new movements land at the head; a cursor cannot.
let cursor = null; // persist this between runs
async function poll() {
const url = new URL("https://cryptopulse.uno/api/whales");
url.searchParams.set("chain", "all");
url.searchParams.set("limit", "100");
if (cursor) url.searchParams.set("since", cursor);
const res = await fetch(url, {
headers: { "Authorization": "Bearer cpk_your_api_key_here" }
});
const data = await res.json();
// A 'since' page already arrives oldest-first — apply it as it comes.
for (const tx of data.transactions) {
handle(tx); // tx.id is stable — safe to dedupe on
}
// Null on an empty page: keep the position you had.
// Optional-chained: the live-scan response carries nulls, and a future
// endpoint shape may omit it. Keeping the old cursor is always safe.
cursor = data.cursor?.latest ?? cursor;
}| Plan | Price | Wallet Lookups | API Calls/Day | API Keys | Features |
|---|---|---|---|---|---|
| Trial (7d) | $0 | 10/day | 10/day | 1 key | Full API access + webhooks + Signals, verified email |
| Free | $0 | 50/day | — | — | Dashboard only |
| Pro | $19/mo | 1,000/day | 100/day | 3 keys | Full API access |
| Trader | $49/mo | 2,500/day | 500/day | 3 keys | Full API access + webhooks |
| API | $99/mo | 5,000/day | 5,000/day | 10 keys | Full API access + webhooks |
/api/whalesHistory depth by plan: 7d Free · 30d Pro · 90d Trader · 90d API. Deeper requests return 403 with your ceiling, never silently truncated.Whale transactions across chains — live, historical, and paginated
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| chain | string | No | ethereum | Chain: ethereum, base, bsc, arbitrum, polygon, optimism, avalanche... or 'all' |
| limit | number | No | 20 | Max results (1-1000) |
| offset | number | No | 0 | Pagination offset. Response carries total + hasMore. |
| period | string | No | 24h | 1h, 6h, 24h, 7d, 30d, 90d — or 'live' for a fresh block scan (single chain) |
| from | string | No | — | Range start: unix seconds or ISO-8601 (2026-06-01). Requires 'to'-free pairing rules; overrides period. |
| to | string | No | — | Range end: unix seconds or ISO-8601. Requires 'from'. |
| since | string | No | — | Cursor from a previous response (cursor.latest). Returns only movements newer than it — use this to poll a feed exactly once instead of paging by offset. |
| before | string | No | — | Cursor from a previous response (cursor.oldest). Returns only movements older than it — walks back through history without an offset. |
curl -H "Authorization: Bearer YOUR_API_KEY" "https://cryptopulse.uno/api/whales?chain=all&period=90d&limit=100&offset=0"
{
"chain": "ethereum",
"count": 5,
"transactions": [
{
"hash": "0xabc...def",
"chain": "ethereum",
"from": "0x28C6...d60",
"to": "0xd8dA...045",
"value": "500.0000",
"valueUSD": 1750000,
"token": "ETH",
"tokenSymbol": "ETH",
"type": "transfer",
"fromLabel": "Binance Hot Wallet",
"toLabel": "vitalik.eth",
"timestamp": 1708886400,
"blockNumber": 19320000
}
],
"updatedAt": "2026-02-28T15:30:00Z"
}/api/wallet/:addressFree (50/day) / Pro (1,000/day) / Trader (2,500/day) / API (5,000/day)Scan wallet — balance, tokens, transactions, intelligence score
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| address | string | Yes | — | EVM wallet address (0x...) |
| chain | string | No | ethereum | Single chain to query |
| multichain | boolean | No | false | Scan all 17 chains in parallel |
curl -H "Authorization: Bearer YOUR_API_KEY" https://cryptopulse.uno/api/wallet/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?multichain=true
{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"chain": "ethereum",
"label": "vitalik.eth",
"tags": ["🐋 Whale", "Ethereum Foundation"],
"balance": "1234.5678",
"balanceUSD": 4320987.30,
"score": {
"overall": 92,
"tier": "🐋",
"classification": "Whale",
"breakdown": { "age": 25, "activity": 22, "diversity": 20, "volume": 25 },
"riskFlags": [],
"insights": ["Top 0.01% wallet", "Active DeFi user"]
},
"stats": {
"totalTxCount": 1847,
"uniqueTokensTraded": 89,
"totalValueMovedUSD": 890000000,
"firstTxDate": "2015-07-30",
"lastTxDate": "2026-02-28"
},
"tokenHoldings": [...],
"recentTokenTransfers": [...],
"connections": { "exchanges": [...], "defi": [...], "frequentContacts": [...] }
}/api/marketFree / All plansMarket overview — prices, market cap, fear & greed index
curl -H "Authorization: Bearer YOUR_API_KEY" https://cryptopulse.uno/api/market
{
"overview": {
"totalMarketCap": 3200000000000,
"totalVolume24h": 98000000000,
"btcDominance": 52.3,
"fearGreedIndex": 72,
"fearGreedLabel": "Greed"
},
"prices": [
{ "id": "bitcoin", "symbol": "btc", "price": 95420, "change24h": 2.1, "marketCap": 1890000000000 },
{ "id": "ethereum", "symbol": "eth", "price": 3520, "change24h": -0.5, "marketCap": 423000000000 }
]
}/api/chainsFree / All plansList all 34 supported chains with RPC status
curl https://cryptopulse.uno/api/chains
{
"chains": [
{ "id": "ethereum", "name": "Ethereum", "symbol": "ETH", "explorerUrl": "https://etherscan.io" },
{ "id": "base", "name": "Base", "symbol": "ETH", "explorerUrl": "https://basescan.org" },
...
],
"total": 34
}/api/keysPro ($19/mo), Trader ($49/mo) or API ($99/mo) — or a 7-day trial key (verified email, 10 calls/day)List your API keys (requires auth cookie)
# Use dashboard UI to manage keys
{ "keys": [{ "id": "...", "keyPrefix": "cpk_a1b2c3d4", "name": "My Bot", "callsToday": 42, "callsTotal": 1337, "createdAt": "..." }] }/api/keysPro ($19/mo), Trader ($49/mo) or API ($99/mo) — or a 7-day trial key (verified email, 10 calls/day)Create a new API key
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| name | string | No | Default | Label for the key |
curl -X POST -H "Content-Type: application/json" -d '{"name":"My Bot"}' https://cryptopulse.uno/api/keys{ "key": "cpk_abc123...full_key", "id": "...", "prefix": "cpk_abc123..", "name": "My Bot", "message": "Save this key — it won't be shown again!" }/api/webhooks/subscriptionsTrader or Api planList your webhook endpoints (secrets are masked)
curl -H "Authorization: Bearer YOUR_API_KEY" https://cryptopulse.uno/api/webhooks/subscriptions
{
"endpoints": [
{
"id": "3f9a...",
"url": "https://your-app.com/hooks/cryptopulse",
"events": ["whale_move", "wallet_watch", "signal"],
"active": true,
"secretPreview": "whsec_****a1b2",
"consecutiveFailures": 0,
"lastSuccessAt": "2026-08-25T12:00:00Z"
}
]
}/api/webhooks/subscriptionsTrader or Api plan (max 5 endpoints)Register an HTTPS endpoint for push events. We POST a signed JSON payload per matching alert. Verify X-CryptoPulse-Signature: it is sha256=HMAC_SHA256(secret, timestamp + '.' + rawBody) using the X-CryptoPulse-Timestamp header. The secret is returned ONCE on create. Endpoints auto-disable after 10 consecutive failures. Alert events land within about 6 minutes of the move (about 26 on Optimism, Celo, Mode and Soneium). Telegram and email Alerts are slower — within 15 minutes, up to 45 minutes when a rule has just fired — because they also wait out the per-rule cooldown. Free-plan delivery is Delayed by 30 minutes (ADR-0001); paid delivery is Instant. Webhooks are a paid channel, so a webhook always receives Instant delivery.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| url | string | Yes | — | Public HTTPS URL on port 443. Private/loopback/metadata addresses are rejected. |
| events | array | No | all | Any of: whale_move, wallet_watch, signal. whale_move and wallet_watch are Alerts (your own rules); signal is an Alpha-bot Signal (entry, stop-loss, take-profit, bot version) and needs a Trader or Api plan. |
curl -X POST -H "Authorization: Bearer YOUR_API_KEY" -H "Content-Type: application/json" -d '{"url":"https://your-app.com/hooks/cryptopulse","events":["whale_move"]}' https://cryptopulse.uno/api/webhooks/subscriptions{
"id": "3f9a...",
"url": "https://your-app.com/hooks/cryptopulse",
"events": ["whale_move"],
"secret": "whsec_... // shown once — store it now",
"signatureNote": "X-CryptoPulse-Signature: sha256=HMAC_SHA256(secret, timestamp + '.' + rawBody)"
}| Code | Meaning |
|---|---|
| 200 | Success |
| 400 | Bad request — invalid parameters |
| 401 | Unauthorized — invalid or missing API key |
| 403 | Forbidden — plan doesn't include this feature |
| 429 | Rate limit reached — upgrade plan or wait for daily reset |
| 500 | Server error |
Every endpoint below is also exposed as an MCP tool over Streamable HTTP, so an agent orchestrator can call CryptoPulse without your writing a client. Point any MCP client at https://cryptopulse.uno/api/mcp and send your API key as a Bearer token. Protocol revisions: 2025-06-18, 2025-03-26, 2024-11-05.
| Tool | What it returns | Needs |
|---|---|---|
| get_whale_movements | Recent large 'whale' transactions (buys, sells, transfers) across 17 EVM chains. Use to see what smart money is doing right now. | Any key |
| get_wallet_intel | Wallet intelligence for a specific address: balances, recent activity, labels, and smart-money score. Supports multichain lookup. | Any key |
| get_market_overview | Crypto market overview — prices and stats for major tracked tokens. | Any key |
| list_supported_chains | List the 17 blockchains CryptoPulse tracks (id, name, symbol, category). | Any key |
| get_smart_money | Recent smart-money wallet activity — moves by high-scoring funds, market makers, and notable wallets. | Any key |
| get_bot_status | Status of the CryptoPulse Alpha trading bot — active strategy version, symbol, and performance stats. | Any key |
| get_trading_signals | Latest algorithmic buy/sell trading signals from the Alpha bot (entry, stop-loss, take-profit). Requires a Trader or Api plan key. | Trader or Api plan |
Connect:
# Claude: Settings → Connectors → Add custom connector
https://cryptopulse.uno/api/mcp
# Inspect the tool list first
npx @modelcontextprotocol/inspector https://cryptopulse.uno/api/mcp
# Or call it directly
curl -X POST https://cryptopulse.uno/api/mcp \
-H "Authorization: Bearer cpk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Get API access from Pro ($19/mo), Trader ($49/mo) or API ($99/mo). Start building in minutes.