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.
REST API · SQL · dashboards · address history from genesis
BTC
Balance trail
informational on-chain data · not financial advice
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.
History from genesis queryable in seconds
On-chain data not financial advice
Why it works
What you get with Bulk balance checking
A batch that half-fails still returns HTTP 429
Re-probed on 17 September 2026. A semicolon-separated BlockCypher batch of one address returned HTTP 200 in 0.239 seconds. The same call with three and with five addresses returned HTTP 429, but the body was not an error. It was a mixed array holding real balance objects alongside per-address entries reading "HTTP error calling /v1/btc/main/addrs/{address}/balance: 429". Each address in a batch is billed as its own request, so the batch syntax trips the very rate limit it appears to help you avoid. Check every element of the array, never just the status code.
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.
Side by side
What actually happens when you pass several addresses to one endpoint
Every row below was requested from a single machine on 30 August 2026 and the response recorded as it came back. The addresses used were the genesis address, two published exchange cold wallets and one 62-character P2WSH address. No result here is quoted from documentation.
| Endpoint | Batch syntax it accepts | What came back on 30 August 2026 | Working ceiling |
|---|---|---|---|
| Blockstream Esplora | None, comma is not parsed | HTTP 400 in 0.55s, body reads legacy address base58 string | One address per request |
| BlockCypher balance endpoint | Semicolon between addresses | HTTP 200 in 0.17s, a JSON array with one object per address | 3 requests per second and 100 per hour on the free tier |
| Blockchair dashboards addresses | Comma between addresses | HTTP 430 in 0.27s, IP blacklisted, told to email for an API key | Paid key required in practice |
| mempool.space address endpoint | None | HTTP 200 in 0.20s for a single address | One address per request |
| Free web multi-address checkers | Paste box, one per line | Published caps of 20 and 50 addresses per submission | 20 to 50 addresses |
| BitcoinDatabase | List, CSV upload or a SQL join | The whole address list resolved in one query | Your plan limit, not a syntax limit |
One result is worth more than the status codes, and it will silently corrupt a reconciliation if you miss it. BlockCypher accepts a semicolon-separated batch and does not return the objects in the order you requested them, so you must key results by address rather than by position. Re-probing on 17 September 2026 added a second trap on the same endpoint: batches of three and five addresses returned HTTP 429 overall, yet the body was a mixed array containing genuine balances for some addresses and per-address 429 error objects for the others. Code that reads only the status throws away good data, and code that reads only the body treats throttled addresses as though they hold nothing.
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
{
"address": "bc1qxy2k…l0wdv8",
"balance_btc": 68432.10,
"balance_usd": 4612165420,
"tx_count": 1284,
"unspent_outputs": 37,
"first_seen": "2014-02-09"
}
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
Explore more
More ways to query Bitcoin with BitcoinDatabase
Bitcoin address lookup
Look up any Bitcoin address: balance, full history and UTXOs in one query.
Learn moreBitcoin address labels
Attach exchange, miner and service labels to addresses, so raw hashes read as entities.
Learn morexpub balance API
Derive an HD wallet's addresses from its xpub and total the balance to the satoshi.
Learn moreBitcoin address types
Script type on every input and output: legacy, P2SH, native SegWit and Taproot, counted and valued.
Learn moreBitcoin rich list
The largest balances ranked, with labels and historical snapshots.
Learn moreBitcoin block explorer API
Power an explorer with blocks, transactions and addresses, no node to maintain.
Learn moreStop running a node. Just query Bitcoin.
Run your first query now and get on-chain data back by REST API, SQL or dashboard, with address history back to the genesis block over REST. Informational on-chain data only, not financial advice.
History from genesis over REST · SQL · dashboards · addresses, transactions, UTXOs, metrics