API DOCS

Whale transactions API GET /api/v1/transactions

API to track large Ethereum wallet transfers: GET /api/v1/transactions returns the latest moves by 20,000+ tracked whale wallets, labeled exchange deposit, exchange withdrawal or DEX swap.

Home › API docs › Recent whale moves · Updated 2026-10-26

GET /api/v1/transactions returns the newest moves by Deep Blue Alpha’s 20,000+ tracked Ethereum whale wallets, newest first, with a cursor for paging back. Every row is labeled CEX_WITHDRAW, CEX_DEPOSIT, SWAP_BUY or SWAP_SELL and names the exchange on exchange moves. Use it to poll for new whale moves from a bot, alerting script or dashboard; Business accounts can have the same moves pushed by signed webhooks instead.

Endpoint

GET/api/v1/transactions?limit=50&before_id=

Base URL https://deepbluealpha.io · JSON over HTTPS · Ethereum mainnet only.

Authentication
API key in the X-API-Key header (or the ?api_key= query parameter). Create a key on your account page once you are on the Whale plan or a Business plan. Keys are shown once at creation.
Rate limit
Whale plan: 25,000 calls/day per API key. Business plan: 250,000 calls/day per account across up to 5 keys. Counters reset at 00:00 UTC; past the limit, requests return 429.
Plan & license
Whale plan ($79.99/mo standard, $49.99/mo founder rate) for personal use; Business plan ($299/mo or $2,990/yr) for commercial use inside your organization.

Parameters

NameTypeDefaultDescription
limitinteger50Rows per page, 1 to 200.
before_idinteger0Return rows with id lower than this. Pass next_before_id from the previous page to page back. 0 or empty = newest page.

Example request (curl)

curl -s -H "X-API-Key: $DBA_API_KEY" \
  "https://deepbluealpha.io/api/v1/transactions?limit=50"

Python example

import os, requests

BASE = "https://deepbluealpha.io/api/v1"
HEADERS = {"X-API-Key": os.environ["DBA_API_KEY"]}   # dba_...

r = requests.get(f"{BASE}/transactions", headers=HEADERS,
                 params={"limit": 50}, timeout=10)
r.raise_for_status()
page = r.json()["data"]
for tx in page["transactions"]:
    kind = "DEX swap" if tx["action"].startswith("SWAP_") else "exchange transfer"
    print(tx["timestamp"], tx["token"], tx["action"], kind,
          f'${tx["usd_value"]:,.0f}', tx["exchange"] or "-")

# older page:
# requests.get(f"{BASE}/transactions", headers=HEADERS,
#              params={"limit": 50, "before_id": page["next_before_id"]})

Sample response EXAMPLE VALUES

{
  "data": {
    "transactions": [
      {
        "id": 10000002,
        "tx_hash": "0x8b85…2b93",
        "wallet": "0x83d8…e09e",
        "token": "LINK",
        "direction": "BUY",
        "action": "CEX_WITHDRAW",
        "usd_value": 412500.0,
        "timestamp": "2026-01-01T12:00:00+00:00",
        "exchange": "Binance"
      },
      {
        "id": 10000001,
        "tx_hash": "0x41c0…9a07",
        "wallet": "0x5b2e…77d1",
        "token": "PEPE",
        "direction": "SELL",
        "action": "SWAP_SELL",
        "usd_value": 150000.0,
        "timestamp": "2026-01-01T11:58:40+00:00",
        "exchange": ""
      }
    ],
    "next_before_id": 10000001
  },
  "meta": {
    "tier": "whale",
    "endpoint": "/api/v1/transactions",
    "generated_at": "2026-01-01T12:00:05+00:00"
  }
}

Field names and structure are the real ones; the numbers, hashes and addresses are placeholders, not live data.

Fields

FieldMeaning
idRow id, unique and increasing. Use it to de-duplicate and as the paging cursor. Webhook event_id is mv_<id> for the same move.
tx_hash / wallet / tokenEthereum transaction hash, the tracked whale wallet, the token symbol.
actionCEX_WITHDRAW (moved off an exchange), CEX_DEPOSIT (sent to an exchange), SWAP_BUY / SWAP_SELL (DEX swaps). Only the SWAP rows are trades.
directionBUY = accumulation side (DEX buy or exchange withdrawal), SELL = distribution side (DEX sell or exchange deposit). Read action to tell a transfer from a trade.
usd_valueUSD value at the time of the move.
timestampUTC, ISO 8601.
exchangeExchange on the other side of an exchange move (Binance, Coinbase, OKX, Kraken, …); empty on DEX swaps. Heuristic labels from our exchange address list.
next_before_idCursor for the next (older) page; null when the page is empty.

Notes and limits

Errors

FAQ

Is there an API to track large Ethereum wallet transfers?

Yes. GET https://deepbluealpha.io/api/v1/transactions returns the latest moves by 20,000+ tracked Ethereum whale wallets with tx hash, wallet, token, USD value, timestamp and a label: exchange withdrawal, exchange deposit or DEX swap. It needs an API key (Whale plan, 25,000 calls/day per key, or Business, 250,000/day).

Is a CEX_WITHDRAW row a purchase?

No. CEX_WITHDRAW is a transfer off an exchange and CEX_DEPOSIT a transfer onto one. Only SWAP_BUY and SWAP_SELL rows are DEX trades.

How to page through older whale moves?

Pass next_before_id from one response as before_id in the next request. Rows are ordered newest first by id.

More endpoint docs

Guides: best Ethereum whale tracking APIs compared · real-time whale tracking for a trading bot · whale webhook APIs · methodology · OpenAPI 3.0 spec · Business plan

Not financial advice. Deep Blue Alpha data describes what tracked wallets did on-chain. It does not predict prices and is not a trading recommendation. Labels are heuristics from known address lists; see the methodology. Facts on this page checked 2026-10-26.