Etherscan Family Scraper (Multi-Chain EVM Explorer)
Pricing
from $3.00 / 1,000 results
Etherscan Family Scraper (Multi-Chain EVM Explorer)
Query Etherscan and 18+ EVM block explorers (Ethereum, BNB, Polygon, Arbitrum, Optimism, Base, Avalanche, Fantom, etc.) via the unified Etherscan V2 API. Wallet balances, transactions, ERC-20/NFT transfers, contract source/ABI, gas oracle, tx-by-hash
Pricing
from $3.00 / 1,000 results
Rating
5.0
(11)
Developer
Crawler Bros
Maintained by CommunityActor stats
11
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Etherscan Family Scraper
Query 19 EVM-compatible blockchains through one unified Etherscan V2 API. A single free Etherscan API key works across Ethereum, BNB Smart Chain, Polygon, Arbitrum, Optimism, Base, Avalanche, Fantom, Linea, Scroll, Blast, zkSync Era, Polygon zkEVM, Mantle, Celo, Gnosis, Moonbeam, Moonriver, Cronos.
Lookup wallet/contract balances, transactions, ERC-20 transfers, NFT transfers, contract source code, gas oracle, and transaction details by hash — all from one actor.
Quick Start
- Get a free Etherscan API key at etherscan.io/apis — free tier is 5 req/sec and 100k req/day, and the same key works on all supported chains via the V2 API.
- Pick a
chain(defaults toethereum). - Pick a
modeand supply the relevant input. - Run.
{"etherscanApiKey": "YOUR_KEY","chain": "ethereum","mode": "byAddress","address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","maxItems": 5}
Tip — store your key once. Instead of pasting the key into every run, you can set the actor-level secret environment variable
ETHERSCAN_API_KEY(Apify Console → your actor → Source → Environment variables, mark it secret). The actor uses the input value first and falls back toETHERSCAN_API_KEYif the input is missing or set to a placeholder likeYOUR_ETHERSCAN_API_KEY.
Modes
| Mode | What it does | Required input |
|---|---|---|
byAddress | ETH balance + (optional) ERC-20 holdings + (optional) NFT contracts | address |
txList | Normal transaction history of an address | address (+ startBlock/endBlock/sort) |
internalTxList | Internal-call transaction history of an address | address |
tokenTransfers | ERC-20 transfer history of an address | address (+ optional contractAddress filter) |
nftTransfers | NFT (ERC-721 / ERC-1155) transfer history of an address | address (+ optional contractAddress filter) |
byTransaction | Decoded transaction + receipt by hash | txHash |
byBlock | Block detail by block number | blockNumber |
byContract | Verified contract source code, ABI, compiler metadata | contractAddress |
tokenInfo | ERC-20 / ERC-721 token metadata (PRO endpoint) | contractAddress |
gasOracle | Current safe / propose / fast gas prices | — |
ethSupply | Native-coin total supply | — |
ethPrice | Native-coin price (USD / BTC) | — |
byUrl | Auto-detect chain + mode from any Etherscan-family URL | url |
Supported chains (with chainId)
| Slug | Network | Chain ID | Explorer |
|---|---|---|---|
ethereum | Ethereum Mainnet | 1 | etherscan.io |
bsc | BNB Smart Chain | 56 | bscscan.com |
polygon | Polygon | 137 | polygonscan.com |
arbitrum | Arbitrum One | 42161 | arbiscan.io |
optimism | Optimism | 10 | optimistic.etherscan.io |
base | Base | 8453 | basescan.org |
avalanche | Avalanche C-Chain | 43114 | snowscan.xyz |
fantom | Fantom Opera | 250 | ftmscan.com |
linea | Linea | 59144 | lineascan.build |
scroll | Scroll | 534352 | scrollscan.com |
blast | Blast | 81457 | blastscan.io |
zksync | zkSync Era | 324 | era.zksync.network |
polygonzkevm | Polygon zkEVM | 1101 | zkevm.polygonscan.com |
mantle | Mantle | 5000 | mantlescan.xyz |
celo | Celo | 42220 | celoscan.io |
gnosis | Gnosis Chain | 100 | gnosisscan.io |
moonbeam | Moonbeam | 1284 | moonscan.io |
moonriver | Moonriver | 1285 | moonriver.moonscan.io |
cronos | Cronos | 25 | cronoscan.com |
Sample record (txList)
{"recordType": "transaction","chain": "ethereum","chainId": 1,"txHash": "0xabc...","blockNumber": 18000000,"from": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045","to": "0x...","valueWei": "1000000000000000000","valueNative": 1.0,"nativeSymbol": "ETH","gas": 21000,"gasPrice": 20000000000,"gasUsed": 21000,"isError": false,"timestamp": "2023-11-14T22:13:20+00:00","explorerUrl": "https://etherscan.io/tx/0xabc...","scrapedAt": "2026-05-09T12:00:00+00:00"}
FAQ
Do I need a separate API key per chain?
No. The Etherscan V2 API (released 2024) accepts a chainid= query parameter, so one free Etherscan key works across all 19 supported networks.
Free-tier limits?
5 requests/second, 100,000 requests/day per key. The actor honors Retry-After headers and uses exponential backoff on 429 and 5xx.
Where do I find an address / tx hash / contract address?
Paste any Etherscan-family URL into mode=byUrl and the actor will detect the chain + entity automatically. Examples:
https://etherscan.io/address/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045→ ethereum + byAddresshttps://bscscan.com/tx/0x…64-hex→ bsc + byTransactionhttps://polygonscan.com/token/0x…40-hex→ polygon + byContract
Why is tokenInfo flagged "PRO"?
The module=token&action=tokeninfo endpoint requires Etherscan's paid API plan. Free keys get a "Missing/Invalid API Key" message — the actor reports this gracefully via Actor.set_status_message. Upgrade at etherscan.io/apis-pro for full access.
Why does byAddress only return a handful of records, not "all token holdings"?
ERC-20 holdings are derived from token-transfer history (the upstream API has no direct "list all balances" endpoint). The actor scans up to 5 pages of recent transfers, dedupes by token contract, then queries each token's current balance. Tokens never received via on-chain transfer (e.g., airdrops only delivered through claim contracts) won't appear.
Limitations
tokenInforequires a paid Etherscan API plan (PRO).- The V2 API does not support every legacy module on every chain — for example,
gasOracleis only meaningful on chains with EIP-1559 active. - Source code for unverified contracts returns empty
sourceCode/abi(we omit those fields rather than emit empty strings). byAddressderives ERC-20 holdings from up to 500 most-recent transfers; addresses with very long transfer histories may miss tokens that were last interacted with beyond that window.- Rate limit is per-API-key, not per-chain — running many concurrent calls across different chains still counts against the same 5/sec budget.
Output schema
Every record carries recordType, chain, chainId, scrapedAt, plus mode-specific fields. Empty / null fields are stripped before push (no null, "", [], {} in the dataset).
URL fields
Every record includes a verified explorerUrl pointing to the canonical Etherscan-family page for the entity (/address/, /tx/, /block/, /address/.../#code).