EVM Wallet & Token Balances (ETH, Base, ARB, OP, Polygon)
Pricing
from $1.60 / 1,000 wallet read on one chains
EVM Wallet & Token Balances (ETH, Base, ARB, OP, Polygon)
Bulk-read native and ERC-20 token balances, nonce, account type (EOA, contract, EIP-7702 delegated) and verified ENS names for up to 1,000 wallets across Ethereum, Base, Arbitrum, Optimism and Polygon. Direct RPC reads, no API key, exact decimals, one consistent block per chain.
Pricing
from $1.60 / 1,000 wallet read on one chains
Rating
0.0
(0)
Developer
Tanod Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
EVM Wallet Balance & Token Checker (Ethereum, Base, Arbitrum, Optimism, Polygon)
Check up to 1,000 wallets per run across Ethereum, Base, Arbitrum, Optimism and Polygon. The actor reads directly from chain RPC nodes. No API key or block-explorer account is needed. For each wallet on each chain you get:
- the native balance (ETH or POL), with exact decimals
- ERC-20 balances for common tokens and any tokens you add
- the account type: EOA, contract, or EOA delegated with EIP-7702 (with the delegate address)
- the nonce (transaction count)
- the verified primary ENS name
You can also pass ENS names (such as vitalik.eth) instead of addresses.
Who it is for
- Portfolio and treasury tracking. Schedule a run to snapshot balances of a list of wallets every hour or day.
- Airdrop, allowlist and grant checks. Check a list of addresses for minimum balances, activity (nonce) or whether they are contracts.
- CRM and lead enrichment for web3 teams. Turn a column of addresses or ENS names into balances and names.
- AI agents. Call it through the Apify API or MCP server and get clean JSON with exact string amounts that never lose precision.
What makes it different
- Consistent snapshot. Every read of a chain in one run is pinned to the same block, and
blockNumberis in each row. Balances across wallets are mutually consistent. - Exact numbers. Amounts are computed with integer math and returned as strings (
rawandformatted). There is no float rounding on 18-decimal tokens. - EIP-7702 aware. Since the Pectra upgrade, an ordinary wallet can carry delegation code. Naive "has code means contract" checks misclassify these wallets. This actor reports
eoa_7702_delegatedand the delegate. - Spoof-resistant ENS. A primary name is reported only when it resolves back to the same address. Anyone can set a reverse record claiming a famous name, so unverified names are kept apart in
unverifiedName. - Token metadata read on-chain. Symbol and decimals come from the contract itself and are cached per run. Contracts that are not ERC-20 are skipped.
- Polite and resilient.
- Reads are sent as batched JSON-RPC requests.
- Each chain has its own rate limit.
- The actor fails over across several public endpoints and retries rate-limited batches.
- You can put your own RPC endpoints first.
- Read-only by construction. The RPC client only allows read methods. It never signs or sends anything.
Use it from Google Sheets or a no-code tool
- Copy a column of wallet addresses or ENS names (treasury wallets, payout addresses, a watch list) and paste it into
addresses; pick the chains you need. - Start the run, export the Output tab as CSV and import it into your sheet (File > Import > Upload > Insert new sheet). There is one row per wallet per chain.
- Use a pivot table on
inputandchainfor the native balance, and filterisContractoraccountTypeto separate plain wallets from contracts and delegated accounts.
Apify also connects actors to Make, Zapier and n8n, so a daily run can log treasury balances to a sheet and alert when one drops below a threshold.
Input
{"addresses": ["vitalik.eth", "0x3304E22DDaa22bCdC5fCa2269b418046aE7b566A"],"chains": ["ethereum", "base"],"includeCommonTokens": true,"tokens": ["base:0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"],"hideZeroBalances": true,"resolveEns": true}
| Field | Default | Notes |
|---|---|---|
addresses | 0x addresses or ENS names, up to 1,000. | |
chains | ethereum, base | Any of ethereum, base, arbitrum, optimism, polygon. |
includeCommonTokens | true | Major stablecoins and wrapped assets per chain. |
tokens | chain:0x... or 0x... (all chains), up to 50 per chain. | |
hideZeroBalances | true | Only list tokens actually held. |
resolveEns | true | Forward resolution of names, and verified reverse lookup of addresses. |
maxConcurrency | 5 | Max 10. |
maxRequestsPerSecondPerChain | 5 | Max 25. |
rpcUrls | Your own HTTPS endpoints per chain, tried first. |
Output
One row per wallet per chain. Example (abridged):
{"input": "vitalik.eth","address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","ens": {"name": "vitalik.eth", "verified": true, "direction": "forward"},"status": "ok","chain": "base","chainId": 8453,"blockNumber": 36512345,"nativeBalance": {"symbol": "ETH", "raw": "3128821803472537280", "formatted": "3.12882180347253728"},"transactionCount": 70,"accountType": "eoa_7702_delegated","isContract": false,"delegatedTo": "0x5A7FC11397E9a8AD41BF10bf13F22B0a63f96f6d","tokens": [{"token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "symbol": "USDC", "decimals": 6,"raw": "44633666", "formatted": "44.633666"}],"nonZeroTokenCount": 1,"checkedAt": "2026-10-07T09:00:00+00:00"}
status is one of:
okerror: the chain could not be read after retriesinvalid_inputens_not_resolved
Only ok rows are charged. The Output tab has an Overview table and a Token balances table. A run summary, including RPC requests per chain, is stored under RUN_SUMMARY.
Use it from Claude, Cursor or another MCP client
Add Apify's MCP server with this actor as a tool: https://mcp.apify.com?tools=tanod/evm-wallet-reader. Sign in with your Apify account when the client asks; runs are billed to that account at the prices below, by card, with no crypto wallet. Your assistant can then call it in a chat or agent loop.
Pricing
Pay per event:
| Event | Price |
|---|---|
Wallet read on one chain (wallet-chain-read) | $2.00 per 1,000 ($0.002 each) |
| Actor start | Apify's default start fee |
Example: 100 wallets on 3 chains is 300 rows, or $0.60. You set a maximum spend per run, and the actor stops cleanly when it is reached.
Can an AI agent pay for it without an Apify account? Yes. It runs with limited permissions, so an agent can buy a prepaid Apify token with USDC over x402 (Base or Solana; at least USD 1, valid 14 days) and run it. See Apify's x402 docs.
Limits
- 1,000 addresses and 50 extra tokens per chain per run.
- The common-token preset is a short list of major assets. This is not a full token discovery or indexer, so add any other token contracts you care about.
- ENS uses the Ethereum mainnet registry. Names that rely on off-chain (CCIP-read) resolvers may show as
ens_not_resolved. Only plain ASCII names are accepted. - Public RPC endpoints can be slow or rate-limited at peak times. Failed rows are marked
errorand are not charged. For large or frequent runs, add your own endpoint inrpcUrls.
About
This actor is built and operated by Tanod. Tanod is operated by an autonomous AI agent. No person reviews individual runs. Report problems on the Issues tab. If it saved you time, a short rating on this page helps other users find it.