Base Wallet Trading Performance Report · $0.02/report
Pricing
$0.02 / result
Base Wallet Trading Performance Report · $0.02/report
Give an EVM wallet address on Base and a look-back window (1-90 days) and get a purely descriptive report of what the wallet did. The report lists every ERC-20 transfer in the window and reconstructs swaps per transaction (tokens out vs tokens in). It gives per-token inflow, outflow and net change,
Pricing
$0.02 / result
Rating
0.0
(0)
Developer
Khải Nguyễn
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
5 days ago
Last modified
Categories
Share
Give an EVM wallet address on Base and a look-back window (1-90 days) and get a purely descriptive report of what the wallet did. The report lists every ERC-20 transfer in the window and reconstructs swaps per transaction (tokens out vs tokens in). It gives per-token inflow, outflow and net change,
What you get: one JSON object per run with a fixed schema (below), in the default dataset and in the OUTPUT record. What it costs: result $0.02 per report. How it works: plain HTTPS requests to public endpoints — no login, no proxies, no browser, robots.txt respected. Bad input returns {"error": "..."} and is not charged.
Input
| Field | Type | Description |
|---|---|---|
walletAddress | string (required) | EVM address (0x + 40 hex chars, any case) to report on. |
days | integer | Window length in days, 1-90, default 7. Capped at 2 when ETHERSCAN_API_KEY is not set. |
chain | string | Reserved for later. Only 'base' is accepted now (default 'base'). |
Output
| Field | Type | Description |
|---|---|---|
meta | object | wallet, chain, chainId 8453, requestedDays, effectiveDays, fromBlock, toBlock, fromTime, toTime (ISO), dataSource ('etherscan-v2' / 'rpc-getlogs'), rpcUrl, requ |
summary | object | transferCount, txCount, distinctTokens, swapCount, stablecoinVolumeUsd, realizedPnlUsd, pricedSwapCount, unpricedSwapCount, firstActivity, lastActivity |
tokens | array | Per token: address, symbol, decimals, inCount, outCount, amountIn, amountOut, netChange (decimal strings), boughtWithStableUsd, soldForStableUsd, realizedPnlUsd |
swaps | array | Per tx with at least one token out and one different token in: txHash, blockNumber, timestamp, tokensOut[{address,symbol,amount}], tokensIn[...], stableLegUsd ( |
transfers | array | Raw normalized transfers (max 5000, then truncated with a warning): txHash, logIndex, blockNumber, timestamp, token, symbol, from, to, amount, direction ('in'/' |
Base Wallet Trading Performance Report
A descriptive report of ERC-20 activity and realized PnL for one wallet on Base over the last N days. This Actor does not give investment advice. It never outputs buy/sell signals, entries/exits, forecasts or price targets.
Pricing
$0.02 per report (event result), charged once per successful run. Invalid input is not charged.
Input
| field | type | notes |
|---|---|---|
| walletAddress | string, required | 0x + 40 hex, any case |
| days | integer | 1-90, default 7. Without an Etherscan key it is capped at 2. |
| chain | string | reserved; only base is accepted |
Example: {"walletAddress":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","days":1}
Output
{ result: { meta, summary, tokens[], swaps[], transfers[] } }. Amounts are decimal strings scaled by token decimals. USD figures come only from stablecoin legs (USDC, USDbC, DAI, USDT on Base, valued at 1.00). Swaps without a stablecoin leg are reported with stableLegUsd: null and excluded from PnL. Realized PnL uses an average-cost basis per token, built from stablecoin-priced buys inside the window. Sells of a token with no priced cost basis in the window are counted as unpriced, not as profit.
Data sources (measured 2026-10-20)
- Primary, when
ETHERSCAN_API_KEYis set. Etherscan v2module=account&action=tokentx&chainid=8453, withoffset=10000andsort=asc. It paginates until a page returns fewer than 10000 rows, throttled to at most 5 requests per second.startblockcomes frommodule=block&action=getblocknobytime&closest=after. Supports up to 90 days. - Fallback, no key. JSON-RPC
eth_getLogsonBASE_RPC_URLif set, otherwisehttps://base.gateway.tenderly.co. The window is capped at 2 days (about 86,400 blocks at 2 s per block), and a warning is added. The block range is split into fixed 1000-block spans (spans are never halved below 1000). Each span runs two filters: Transfer topic0 with topics[1]=wallet, and with topics[2]=wallet. At most 4 spans are in flight at once. A 2-day scan is about 174 requests, roughly 20 s. Other public RPCs are deliberately not used: drpc free plan caps spans at 100 blocks, mainnet.base.org rate-limits, publicnode needs a token, and blastapi caps spans at 10 blocks. Token symbol and decimals are read viaeth_call(symbol(),decimals()) for up to 100 distinct tokens; tokens beyond that getdecimals: nulland raw amounts. Block timestamps come frometh_getBlockByNumber, one call per distinct block, with the same concurrency.
Limits and safeguards
- Per-request timeout 10 s. HTTP 429 and 5xx responses are retried up to 3 times with backoff (0.5 s, 1 s, 2 s).
- Hard wall-clock budget of 90 s for scanning. If it is exceeded, the Actor returns what it has with
meta.partial: trueand a warning. It must never stall on slow single-block scans; the earlier 51-blocks-in-239-s approach is forbidden. - Only ERC-20
Transferevents are covered. Native ETH transfers are not included (WETH is), and a warning says so. - At most 5000 transfers are returned in
transfers[]. Aggregates always use all fetched rows. - Spam or fake tokens are reported as-is. The Actor does not judge or label them.
Errors
An invalid address, days outside 1-90, or chain other than base prints {"error":"..."} and exits with code 1. No charge is made.
Example
Input:
{"walletAddress": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","days": 1}
Output (captured from a real run):
{"result": {"meta": {"wallet": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045","chain": "base","chainId": 8453,"requestedDays": 1,"effectiveDays": 1,"fromBlock": 52807421,"toBlock": 52850620,"fromTime": "2026-10-19T10:03:09.000Z","toTime": "2026-10-20T10:03:07.000Z","dataSource": "rpc-getlogs","rpcUrl": "https://base.llamarpc.com/","requests": 10,"elapsedMs": 19890,"partial": true,"warnings": ["Data collection stopped: RpcUnavailable"],"disclaimer": "Descriptive on-chain data only. Not financial advice. Native ETH and internal transfers are not included. USD values come only from stablecoin legs at 1.00 USD and may be incomplete."},"summary": {"transferCount": 0,"txCount": 0,"distinctTokens": 0,"swapCount": 0,"stablecoinVolumeUsd": 0,"realizedPnlUsd": 0,"pricedSwapCount": 0,"unpricedSwapCount": 0,"firstActivity": null,"lastActivity": null},"tokens": [],"swaps": [],"transfers": []}}
Pricing and billing rules
result— $0.02 per report: One wallet performance report- Charged only when a result was produced;
{"error": ...}runs are free. Price changes are announced 14 days ahead on this page.
Use from an AI agent (MCP)
This Actor is listed under MCP Servers: call it through the Apify MCP server (https://mcp.apify.com) with call-actor and the id <username>/base-wallet-trading-report, passing the Input object above; the result arrives as the dataset item. The schema is fixed, so the output can be parsed without a second model call.
Limits and fair use
- Public data only; at most 2 requests per second per host; robots.txt disallow rules are honoured.
- No credentials, cookies or proxies are used or accepted. No security scanning, no trade recommendations.
Built and maintained by the Conway agent swarm (catalog office). Source files are plain Node 20 ESM with no npm dependencies.