BitcoinDatabase.com

Query the chain · Bulk balance checking

Bulk Bitcoin address balance checker to check multiple Bitcoin addresses at once

A bulk Bitcoin address balance checker takes a whole list of addresses and returns the exact balance of every one in a single pass. Upload the list, get a table back.

or try it below ↓

REST API · SQL · dashboards · indexed from genesis

Query Console
btc
try:

Hit Run to query the fully-indexed Bitcoin blockchain.

BTC

30-day trend

informational on-chain data · not financial advice

REST API · SQL · dashboards, one indexed dataset. Querying the indexed Bitcoin blockchain ...

The free multi-address tools on the web all stop at roughly the same place. One popular checker caps you at 20 addresses per request and tells you to submit multiple requests for anything larger; another allows 50 per query and suggests you split your list. That is fine when you are checking a handful of paper wallets. It falls apart the moment you hold a real address set: an exchange proving reserves across 40,000 deposit addresses, a fund reconciling cold storage every morning, a compliance team screening a list handed over by a counterparty. Chunking 40,000 addresses into batches of 20 is 2,000 requests against a public endpoint that will rate-limit you long before you finish, and we can confirm that from the receiving end, because public explorer endpoints commonly answer a modest burst with an IP blacklist rather than data.

This is the same indexed chain the rest of the platform reads from, so a bulk check is a single query, not a loop. Paste addresses one per line, upload a CSV, or pass the list to the API and get back the confirmed balance to the satoshi, total received, total sent, transaction count, first and last activity, and the UTXO count behind each balance. In SQL you go further and put your address list into a query directly, joining it against entity labels, fund flows or the rich list, so a reconciliation that used to be a script plus a spreadsheet becomes one statement. Addresses that have never been seen on chain come back explicitly as zero rather than silently disappearing from the results, which matters when you are reconciling a list and need every row accounted for.

One security point worth stating plainly, because the freebie tools bury it: checking a balance never requires a private key or a seed phrase. A Bitcoin address is public information and its balance is public information. Any tool that asks for a key to show you a balance is trying to take your coins. We only ever accept addresses and extended public keys. This is informational on-chain data, not financial, investment or legal advice.

REST API SQL DASHBOARDS WEBHOOKS CSV EXPORT

Indexed from genesis queryable in seconds

On-chain data not financial advice

Why it works

What you get with Bulk balance checking

No 20-address ceiling

Pass twenty addresses or two hundred thousand in one call. The chain is already indexed and reconciled, so a bulk balance check is a single lookup against a table rather than thousands of round trips to a public explorer that throttles you partway through.

Every field, every row

Each address comes back with the confirmed balance to the satoshi, total received, total sent, transaction count, UTXO count, and first and last activity. Addresses with no on-chain history return an explicit zero, so your reconciliation never loses a row.

Bring the list into SQL

Load your address list as a table and join it against balances, entity labels, fund flows or the rich list in one statement. That turns a nightly cold-storage reconciliation or a counterparty screening list into a query instead of a script plus a spreadsheet.

What it handles

The indexed Bitcoin chain, queryable your way

Look up an address, a transaction, a UTXO, the rich list or an on-chain metric, by REST API, SQL or dashboard. The same authoritative data, reconciled block-by-block against the canonical chain, without running a node.

  • Check thousands of Bitcoin addresses in one request
  • Upload a CSV or paste addresses one per line
  • Return balance, received, sent, tx count and UTXOs per address
  • Expand an xpub into its derived addresses and total them
  • Join your address list against labels and flows in SQL
  • Export the whole result set to CSV for audit files
GET /v1/address/{addr} query result
200 · JSON
{
  "address": "bc1qxy2k…l0wdv8",
  "balance_btc": 68432.10,
  "balance_usd": 4612165420,
  "tx_count": 1284,
  "unspent_outputs": 37,
  "first_seen": "2014-02-09"
}
indexed from genesis · to the satoshi ✓ reconciled block-by-block

Why BitcoinDatabase

One platform, queryable three ways

Not a raw node to sync, not an indexer to build, and not five vendors to stitch together. The fully-indexed Bitcoin blockchain, available as a REST API, as SQL, and as dashboards, on one authoritative dataset.

REST API

Typed JSON for addresses, transactions, balances, UTXOs and metrics. Drop it into apps, wallets, explorers and agents with curl, Python or any HTTP client.

SQL access

Run SQL directly against the indexed Bitcoin dataset for ad-hoc analysis, cohorts and exports, the same data the API and dashboards read from.

Compliance-first

Informational on-chain data and analytics only. Entity labels and flow tracing are framed as tooling to support a regulated team's own review, not accusations.

Good questions

Questions about Bulk balance checking

Give the checker your whole list at once instead of looking addresses up one by one. Paste the addresses one per line, upload a CSV, or pass the array to the API, and you get one row per address with its confirmed balance, total received and sent, and transaction count. Because the chain is pre-indexed, the size of the list does not change the method.
There is no small fixed ceiling here. Free web checkers typically cap a request at 20 or 50 addresses and ask you to split larger lists, which is the real limit people hit. On an indexed dataset the batch is bounded by your plan's query size rather than by an arbitrary address count, so exchange-scale lists of tens of thousands of addresses run as one job.
No, and you should never give one to a balance checker. A Bitcoin address and its balance are public information recorded on the blockchain, so the address alone is enough. A private key or seed phrase is what authorizes spending, and any site that asks for one in order to display a balance is attempting to steal the funds.
Blockchair documents a plural form, dashboards/addresses/{addr1},{addr2}, which is what most people are hunting for. The catch is access rather than syntax. We called it from a US cloud server on 3, 13 and 15 August 2026 and got HTTP 430 every time, with the response telling us our IP was temporarily blacklisted for API usage and to request a key. Blockstream Esplora and mempool.space have no plural address endpoint at all, so a batch there means one request per address.
Stop treating it as many small requests. Free endpoints throttle per IP, so a 10,000 address list becomes 10,000 calls that will trip a limit long before it finishes, and shared cloud IP ranges are often already throttled by someone else. Send the list as one batch against a pre-indexed dataset instead, where the whole set is a single query and the response time depends on your plan rather than on somebody else's traffic.
Yes. Upload a CSV with one address per row and the checker returns the same file back with balance, received, sent, transaction count and last activity appended to each row. That format is the reason most teams use bulk checking in the first place, since the output drops straight into a reconciliation sheet or an audit file.
Pasting addresses cannot move your coins, but it does reveal which addresses you care about, and a list submitted together implies those addresses share an owner. That is a privacy consideration rather than a theft risk. If the list is sensitive, prefer a provider with a stated retention policy over an anonymous free tool that logs queries you cannot audit.
Yes. An extended public key derives the whole address chain beneath it, so passing the xpub, ypub or zpub returns the derived addresses and their combined balance without you enumerating them. This is the practical way to check a wallet that generates a fresh address for every receive, where the address list is not fixed.
Because they are querying a public explorer API in a loop rather than holding the chain themselves. Each address in your list becomes a separate upstream request, so the cap protects the provider from being rate-limited. Reading from a pre-indexed copy of the chain removes that constraint, since one query serves the whole list.

Explore more

More ways to query Bitcoin with BitcoinDatabase

Stop running a node. Just query Bitcoin.

Run your first query now and get on-chain data back by REST API, SQL or dashboard, indexed from the genesis block. Informational on-chain data only, not financial advice.

See pricing

Indexed from genesis · REST · SQL · dashboards · addresses, transactions, UTXOs, metrics