Blockchain Scanner Scraper avatar

Blockchain Scanner Scraper

Pricing

from $1.00 / 1,000 records

Go to Apify Store
Blockchain Scanner Scraper

Blockchain Scanner Scraper

Read on-chain data across Ethereum, Base, Polygon, Arbitrum, Optimism, zkSync, Celo, Bitcoin and Solana in one schema: address balance, transaction history, token balances and transfers. Export data, run via API, schedule and monitor runs, or integrate with other tools.

Pricing

from $1.00 / 1,000 records

Rating

5.0

(1)

Developer

Public Money

Public Money

Maintained by Apify

Actor stats

1

Bookmarked

4

Total users

3

Monthly active users

8 hours ago

Last modified

Categories

Share

Every block explorer has its own API, its own key and its own field names, so covering nine chains means nine integrations. This Actor reads them all through one input and returns one schema: address balance and activity, transaction history, token balances and transfers, or token metadata, with nativeBalance meaning the same thing whether the chain is Ethereum, Bitcoin or Solana.

What it does

  • Covers nine chains through one schema: Ethereum, Base, Polygon, Arbitrum, Optimism, zkSync, Celo, Bitcoin and Solana. Switch the chain input and your parsing code does not change.
  • Five routes on the same input: address for a balance summary, transactions for history, tokenBalances and tokenTransfers for token activity, and token for contract metadata.
  • Resolves ENS names into ensDomainName where the chain supports them, so a record is readable without a lookup.
  • Flags whether an address is a contract or a wallet in isContract, which changes how you should read every other field.
  • Values token holdings in USD in valueUsd where a price is available, not just in token units.
  • Caps work per address with Max items per address, so one busy wallet cannot consume the whole run.

Use cases

You need toHow this Actor does it
Watch a treasury across chainsPass the same address with each chain and compare nativeBalance
Audit a wallet's token holdingsUse the tokenBalances route and read valueUsd
Follow the money out of an addressUse the transactions route and read to, value and method
Tell a contract from a walletRead isContract before you interpret a balance
Track token transfers for a projectUse the tokenTransfers route on the project treasury
Feed an on-chain research agentCall the Actor over MCP and let the model pass the address it found

Quick start

  1. Click Try for free.
  2. Pick a Chain: ethereum, base, polygon, arbitrum, optimism, zksync, celo, bitcoin or solana.
  3. Pick a Route: address for a balance summary, transactions, tokenBalances, tokenTransfers, or token for contract metadata.
  4. Add your addresses, one per line, in that chain's own format. An Ethereum address on Bitcoin will fail.
  5. Click Start. Rows appear within seconds.
  6. Export as JSON, CSV, Excel or XML, or read the dataset over the API.

Input

FieldTypeDefaultWhat it controls
chainstringethereumWhich of the nine chains to read
routestringaddressWhat to return: balance summary, transactions, token balances, token transfers or token metadata
addressesarrayemptyAddresses to read, in the chosen chain's own format
maxItemsPerAddressinteger100Caps rows per address, so one busy wallet cannot consume the run
maxItemsinteger0Caps how many records are written. 0 writes them all
{
"chain": "ethereum",
"route": "address",
"addresses": [
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
],
"maxItemsPerAddress": 100
}

Output

One dataset item per address on the address route, and one per transaction, balance or transfer on the others. The dataset has four views, one per route, so the console shows the right columns for what you asked for.

Field groupFields
Alwaysstatus, route, chainTitle, address, url
Address routenativeSymbol, nativeBalance, transactionCount, tokenTransferCount, isContract, ensDomainName
Transactions routehash, timestamp, from, to, value, fee, method
Token routestokenSymbol, tokenName, tokenAddress, amount, valueUsd
TimingvalidFrom, scrapedAt
{
"status": "ok",
"route": "address",
"chainTitle": "Ethereum",
"address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"ensDomainName": "vitalik.eth",
"nativeSymbol": "ETH",
"nativeBalance": 4821.4409,
"transactionCount": 1842,
"tokenTransferCount": 9214,
"isContract": false,
"validFrom": "2026-09-06T05:30:00.000Z",
"url": "https://etherscan.io/address/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
}

Integrations

Run it over the API and get the rows back in one call:

curl -X POST "https://api.apify.com/v2/acts/publicmoney~blockchain-scanner-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"chain": "ethereum", "route": "address", "addresses": ["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"], "maxItemsPerAddress": 100}'

From Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("publicmoney/blockchain-scanner-scraper").call(run_input={"chain": "ethereum", "route": "address", "addresses": ["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"], "maxItemsPerAddress": 100})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["validFrom"])

Give an AI agent the Actor over MCP:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?actors=publicmoney/blockchain-scanner-scraper"
}
}
}

Schedules run it on any cron, webhooks fire when a run finishes, and platform integrations push the dataset to Google Sheets, Slack, Airtable, Zapier or your own endpoint.

Cost

Pay per event, so you pay for records rather than compute time.

EventFree tierTop volume tier
Record with data$0.002$0.0007
Actor start$0.00005 per GBSame

A record that returned no data is published as a failure row and is never charged. Six volume tiers apply, so the per-record price falls with monthly volume.

Troubleshooting

IssueSolution
An address returns failedThe address format does not match the chain. Bitcoin, Solana and the EVM chains all use different formats, so check the chain input.
ensDomainName is missingThe address has no ENS name, or the chain does not support ENS. Only the EVM chains resolve names.
valueUsd is missing on a tokenNo price is available for that token. The token amount is still exact.
One address dominates the runLower Max items per address. A treasury with a hundred thousand transfers will otherwise fill the dataset.
The transactions route returns fewer rows than the explorer showsMax items per address caps it, and the default is 100. Raise it for a full history.

FAQ

Do I need an Etherscan API key?

No. This Actor reads the explorers for you, so there is no key per chain to register, rotate or keep under a free-tier limit. You need an Apify token to call the Actor over the API.

Which chains are supported?

Nine: Ethereum, Base, Polygon, Arbitrum, Optimism, zkSync, Celo, Bitcoin and Solana. The field names are the same on all of them, which is the point of the Actor.

Why is one schema across chains useful?

Because nativeBalance, transactionCount and isContract mean the same thing on every chain here. Writing against nine explorer APIs means nine sets of field names and nine sets of pagination rules.

Can it read a contract's internal calls or logs?

No. The routes cover address summaries, transactions, token balances and transfers, and token metadata. Decoded logs and internal calls are not read.

Does it return historical balances?

No, balances are current. Transaction history is historical and each row carries its own timestamp, so you can reconstruct a balance over time from the transfers.

Do I need a block explorers API key?

No. You need an Apify token to call the Actor over the API. No block explorers credential is involved anywhere.

Can I get this data in Python?

Yes, with the apify-client package as shown above. It returns parsed JSON, so there is no HTML or response handling on your side.

Can I get the data into Excel or Google Sheets?

Yes. Export the dataset as XLSX or CSV, or connect the Google Sheets integration so each run appends to a sheet.

Can an AI agent call this Actor?

Yes. Add it to an MCP client with the config above and the model can request what it needs on its own. Every record is flat JSON with named fields, so no post-processing is needed.

Blockchain data is public by design and this Actor reads public explorers, so there is nothing gated here. Addresses are pseudonymous rather than anonymous, so if you link one to a named person you are handling personal data and your own privacy obligations apply. Take your own legal advice for your use case.

Changelog

  • 0.0.2 Added the token metadata route, ENS resolution and USD valuation of token balances.
  • 0.0.1 First release. Address, transaction and token routes across nine chains.

Feedback

Found a field block explorers publishes that this Actor misses, or an input it rejects? Open an issue on the Issues tab with the input and what you expected. A daily test runs every Actor in the fleet against live sources, so parser fixes ship fast.