Onchain Wallet Holder Enrichment Scraper
Onchain Wallet Holder Enrichment Scraper
Enrich a list of crypto wallet addresses with on-chain data across 7+ EVM chains and Solana. For each address you get native token balance, ERC-20 holdings, transaction history, ENS name, risk flags (OFAC sanctions list / Tornado Cash interactions), and social handles — all in a single structured output row per wallet per chain.
Use Cases
- Crypto VC due diligence — profile LP wallet histories, concentration risk, and counterparty networks before a deal
- Sales prospecting — identify whale wallets for custody and B2B crypto services
- Compliance screening — flag OFAC-sanctioned or Tornado Cash-linked addresses before onboarding
- Airdrop targeting — find addresses that meet eligibility criteria (balance thresholds, protocol interactions)
- NFT / DeFi analytics — aggregate holder enrichment for a contract's top holders
What You Get
| Field | Description |
|---|---|
address |
Wallet address (checksummed EVM or Solana base58) |
chain |
Chain queried (ethereum, bsc, polygon, arbitrum, base, avalanche, solana) |
native_balance |
Native token balance in whole units (ETH, BNB, MATIC, etc.) |
native_balance_usd |
Approximate USD value using live CoinGecko pricing |
erc20_holdings |
JSON array of ERC-20 token positions: symbol, address, balance |
first_tx_date |
Date of first transaction on this chain |
last_tx_date |
Date of most recent transaction |
tx_count |
Total transactions sampled (up to 200 per run) |
unique_counterparties |
Number of unique addresses interacted with |
total_gas_spent_usd |
Estimated total gas fees paid in USD |
labels |
Auto-applied labels: whale, sanctioned |
ens_name |
ENS reverse-resolved name (Ethereum only) |
farcaster_handle |
Farcaster username if registered for this address |
risk_flags |
OFAC-sanctioned or tornado-cash-interaction flags |
enriched_at |
ISO 8601 timestamp when the record was produced |
Input
Required
| Field | Description |
|---|---|
walletAddresses |
One or more EVM (0x…) or Solana addresses to enrich |
chains |
EVM chains to query per address: ethereum, bsc, polygon, arbitrum, base, avalanche |
Optional
| Field | Default | Description |
|---|---|---|
etherscanApiKey |
— | Your Etherscan API key (5 req/s with key vs. 1 req/s without) |
bscscanApiKey |
— | BscScan API key for BSC enrichment |
polygonscanApiKey |
— | Polygonscan API key for Polygon enrichment |
includeErc20 |
true |
Fetch ERC-20 token balances |
includeNfts |
false |
Fetch NFT holdings (ERC-721/1155) |
resolveEns |
true |
Reverse-resolve ENS name (Ethereum only) |
checkRiskFlags |
true |
Check OFAC sanctions and Tornado Cash interactions |
maxItems |
0 (unlimited) |
Cap on output records |
Rate Limits and API Keys
Without API keys the actor runs at the Etherscan free-tier rate (~1 request/second per endpoint). For high-volume enrichment (1,000+ wallets), supply your own explorer API keys — all are free to register.
To get a free Etherscan API key: register at etherscan.io/register, then generate a key at etherscan.io/myapikey.
Multi-Chain Output
Each walletAddresses × chains combination produces a separate output row. Enriching 2 addresses across 3 chains yields 6 rows. Solana-format addresses are enriched on Solana automatically.
Example Input
{
"walletAddresses": [
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
],
"chains": ["ethereum"],
"includeErc20": true,
"resolveEns": true,
"checkRiskFlags": true
}
Example Output
{
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"chain": "ethereum",
"native_balance": 1250.34,
"native_balance_usd": 4187638.20,
"erc20_holdings": "[{\"symbol\":\"USDC\",\"address\":\"0xa0b86991...\",\"balance\":50000}]",
"first_tx_date": "2021-01-10",
"last_tx_date": "2026-05-15",
"tx_count": 200,
"unique_counterparties": 87,
"total_gas_spent_usd": 4312.55,
"labels": "[\"whale\"]",
"ens_name": "vbuterin.stateofus.eth",
"farcaster_handle": null,
"risk_flags": null,
"enriched_at": "2026-05-27T10:00:00.000Z"
}
Notes
- ERC-20 balances are derived from raw token transfer events. Very active wallets may show approximate values if activity exceeds the 200-transfer sample window.
- USD values use CoinGecko pricing fetched at run start.
- Tornado Cash and OFAC flag checks use publicly available on-chain data only.
- The
airdrop_eligibility,defi_positions,nft_trading_stats, anddao_membershipsfields are reserved for future enrichment modules and returnnullin the current version.