chainpeek (Tanod) recent large trades on a token
chainpeek (Tanod) recent large trades on a token: big buys and sells above a USD size on Base or Ethereum, read from DEX swap events. Use when an agent needs the recent large buys and sells of an ERC-20 token: side, USD size, sender.
Not tested: has real-world effectsour last check, 2026-10-18
0 of 0checks answered this week
n/amedian answer time
$0.01listed price per call
n/aprice it asked us
Paid test badge: not yet. The checks above are free: we call the tool without paying and read the payment request it sends back. The Verified badge needs paid calls whose answers match the promised output, and nobody can buy a badge.
Endpoint
POST https://tanod.dev/v1/chain/token-trades
| Category | Market data |
|---|---|
| Provider host | tanod.dev |
| Networks | eip155:137, eip155:8453, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp |
| Payment schemes | exact |
| Self-reported calls, 30 days | 2 from 2 payers (the provider's figure, not ours) |
Our checks, last 30 days
We never call tools that send, buy, move money or file anything, not even without paying.
Example input (from the provider)
{
"body": {
"chain": "base",
"min_usd": 9000,
"token": "0x940181a94A35A4569E4529A3CDfB74e38FD98631"
},
"bodyType": "json",
"method": "POST",
"type": "http"
}
Promised output schema (from the provider)
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"body": {
"additionalProperties": false,
"properties": {
"chain": {
"default": "base",
"description": "base (default) or ethereum.",
"enum": [
"base",
"ethereum"
],
"type": "string"
},
"min_usd": {
"default": 1000,
"description": "Smallest trade to report, in USD of the quote side (default 1000, minimum 100).",
"maximum": 1000000000,
"minimum": 100,
"type": "number"
},
"token": {
"description": "ERC-20 token address (0x + 40 hex).",
"pattern": "^0x[0-9a-fA-F]{40}$",
"type": "string"
},
"window_minutes": {
"default": 60,
"description": "How far back to read, in minutes (default 60). At most 60 on Base and 240 on Ethereum, so that the window fits one eth_getLogs read of at most 2,000 blocks per pool.",
"maximum": 240,
"minimum": 1,
"type": "integer"
}
},
"required": [
"token"
],
"type": "object"
},
"bodyType": {
"enum": [
"json",
"form-data",
"text"
],
"type": "string"
},
"method": {
"enum": [
"POST"
],
"type": "string"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method",
"bodyType",
"body"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"block": {
"type": [
"integer",
"null"
]
},
"cached": {
"type": "boolean"
},
"chain": {
"type": "string"
},
"decimals": {
"type": [
"integer",
"null"
]
},
"eth_usd": {
"type": [
"number",
"null"
]
},
"min_usd": {
"type": "number"
},
"note": {
"type": "string"
},
"pools": {
"items": {
"properties": {
"address": {
"type": "string"
},
"dex": {
"type": "string"
},
"fee_tier": {
"type": "integer"
},
"liquidity_usd": {
"type": "number"
},
"quote_asset": {
"type": "string"
},
"stable": {
"type": "boolean"
}
},
"type": "object"
},
"type": "array"
},
"reason": {
"type": [
"string",
"null"
]
},
"returned": {
"type": "integer"
},
"swaps_scanned": {
"type": "integer"
},
"token": {
"type": "string"
},
"trade_count": {
"type": "integer"
},
"trades": {
"items": {
"properties": {
"block": {
"type": "integer"
},
"dex": {
"type": "string"
},
"pool": {
"type": "string"
},
"side": {
"enum": [
"buy",
"sell"
]
},
"time": {
"type": [
"string",
"null"
]
},
"timestamp": {
"type": [
"integer",
"null"
]
},
"token_amount": {
"type": [
"string",
"null"
]
},
"token_amount_raw": {
"type": "string"
},
"tx": {
"type": "string"
},
"usd": {
"type": "number"
},
"wallet": {
"type": [
"string",
"null"
]
}
},
"type": "object"
},
"type": "array"
},
"truncated": {
"type": "boolean"
},
"wallets_unavailable": {
"type": "integer"
},
"window": {
"properties": {
"blocks": {
"type": "integer"
},
"from_block": {
"type": "integer"
},
"from_time": {
"type": [
"string",
"null"
]
},
"minutes": {
"type": "integer"
},