BitcoinDatabase.com

Compliance & flows · Proof of reserves API

Bitcoin proof of reserves API for reserve address balances and attestation data

Proof of reserves comes down to one question a reader can check: do the addresses an exchange or custodian claims actually hold the balances they say they hold, at a stated block height? The Bitcoin proof of reserves API answers the on-chain half of that. Feed it a list of reserve addresses or extended public keys and get balances to the satoshi, UTXO counts, first and last activity, and a balance snapshot pinned to a specific block, so an attestation can be reproduced by anyone who repeats the query.

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 liability side of proof of reserves (customer balances, usually committed to a Merkle root or a zero-knowledge proof) stays with the exchange and its auditor. What we supply is the asset side: an independent, fully-indexed view of the chain that an auditor, a counterparty or your own risk team can query over REST or SQL without running a node. This is informational on-chain data, not an audit opinion, an attestation, or financial 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 Proof of reserves API

Balances pinned to a block height

A reserve claim is only checkable if everyone agrees on when it was true. Query any address set as of a specific block height and get the same balances back every time, which is what makes an attestation reproducible.

Whole wallets, not just single addresses

Reserve wallets are rarely one address. Submit an extended public key or a list of thousands of addresses and get the aggregate balance, per-address detail and UTXO counts in one pass.

Independent of the entity being checked

The data comes from our own index of every block since 2009, so an auditor or counterparty is not reading numbers supplied by the party making the claim.

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.

  • Total a published reserve address list to the satoshi
  • Snapshot reserve balances at a fixed block height
  • Expand an xpub into its derived addresses and balance
  • Track reserve wallet inflows and outflows over time
  • Flag reserve addresses that moved between attestations
  • Export the underlying rows for an auditor workpaper
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 Proof of reserves API

Proof of reserves is a check that a custodian holds enough assets to cover what customers are owed. It has two halves: the reserves side, which is on-chain balances at addresses the custodian controls, and the liabilities side, which is customer balances usually committed to a Merkle root or a zero-knowledge proof. Our API covers the on-chain reserves side.
No. Control is proven by a signed message from the address key or a movement of funds the custodian arranges, both of which happen outside our system. We verify what the address holds and how it has moved, which is the part anyone can independently check on-chain.
No, and the difference is who supplies the address list. An exchange reserve estimate is built by outsiders inferring which addresses an exchange controls, so it can be wrong and nobody can audit it. A proof of reserves has the exchange itself name the addresses and prove control cryptographically. One is inference, the other is an assertion backed by a signature.
No. A reserve proof shows assets held, not what is owed against them. Proving control of 100,000 BTC says nothing about whether customer liabilities total 150,000 BTC. That is why a credible attestation pairs the asset proof with a liability commitment, usually a Merkle root customers can check their own balance against. Reserves alone are half the equation.
Because balances change every block, so a claim without a height is unfalsifiable. Pinning the query to a stated height means an auditor, a counterparty and the exchange all compute the same number from the same public data, and anyone repeating the query later gets the identical result. Without it, two honest parties checking hours apart will disagree and neither can show why.
Yes, and it is the cheapest due diligence there is. Take the addresses the custodian published, total them at a fixed height, and compare against the figure they claim. The work is only awkward at scale, since reserve wallets run to thousands of addresses. Submitting the whole list or an extended public key in one pass is what makes this a query rather than a crawl.

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