Etherscan Family Scraper (Multi-Chain EVM Explorer) avatar

Etherscan Family Scraper (Multi-Chain EVM Explorer)

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Etherscan Family Scraper (Multi-Chain EVM Explorer)

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

Crawler Bros

Maintained by Community

Actor stats

11

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

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

  1. 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.
  2. Pick a chain (defaults to ethereum).
  3. Pick a mode and supply the relevant input.
  4. 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 to ETHERSCAN_API_KEY if the input is missing or set to a placeholder like YOUR_ETHERSCAN_API_KEY.

Modes

ModeWhat it doesRequired input
byAddressETH balance + (optional) ERC-20 holdings + (optional) NFT contractsaddress
txListNormal transaction history of an addressaddress (+ startBlock/endBlock/sort)
internalTxListInternal-call transaction history of an addressaddress
tokenTransfersERC-20 transfer history of an addressaddress (+ optional contractAddress filter)
nftTransfersNFT (ERC-721 / ERC-1155) transfer history of an addressaddress (+ optional contractAddress filter)
byTransactionDecoded transaction + receipt by hashtxHash
byBlockBlock detail by block numberblockNumber
byContractVerified contract source code, ABI, compiler metadatacontractAddress
tokenInfoERC-20 / ERC-721 token metadata (PRO endpoint)contractAddress
gasOracleCurrent safe / propose / fast gas prices
ethSupplyNative-coin total supply
ethPriceNative-coin price (USD / BTC)
byUrlAuto-detect chain + mode from any Etherscan-family URLurl

Supported chains (with chainId)

SlugNetworkChain IDExplorer
ethereumEthereum Mainnet1etherscan.io
bscBNB Smart Chain56bscscan.com
polygonPolygon137polygonscan.com
arbitrumArbitrum One42161arbiscan.io
optimismOptimism10optimistic.etherscan.io
baseBase8453basescan.org
avalancheAvalanche C-Chain43114snowscan.xyz
fantomFantom Opera250ftmscan.com
lineaLinea59144lineascan.build
scrollScroll534352scrollscan.com
blastBlast81457blastscan.io
zksynczkSync Era324era.zksync.network
polygonzkevmPolygon zkEVM1101zkevm.polygonscan.com
mantleMantle5000mantlescan.xyz
celoCelo42220celoscan.io
gnosisGnosis Chain100gnosisscan.io
moonbeamMoonbeam1284moonscan.io
moonriverMoonriver1285moonriver.moonscan.io
cronosCronos25cronoscan.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 + byAddress
  • https://bscscan.com/tx/0x…64-hex → bsc + byTransaction
  • https://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

  • tokenInfo requires a paid Etherscan API plan (PRO).
  • The V2 API does not support every legacy module on every chain — for example, gasOracle is 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).
  • byAddress derives 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).