connectingGet early access

Any wallet’s balance, at any block, on seven chains.

Point-in-time balances and a full transfer ledger for Ethereum, Base, BNB Chain, Polygon, Arbitrum, Solana and Tron. In your BigQuery, as Parquet, or as a live stream.

  • Ethereum (Live)
  • Base (Live)
  • Tron (Live)
  • Solana (Building)
  • BNB Chain (Planned)
  • Arbitrum (Planned)
  • Polygon (Planned)
live
$ SELECT day, block_number, balance FROM balances.daily WHERE address = '0x28c6c06298d514db089934071355e5743bf21d60' AND symbol = 'USDT' AND day = LAST_DAY(day, MONTH)
dayblock_numberbalancerelative size
2026-04-3024,996,367757,477,051.98
2026-05-3125,218,797635,225,161.48
2026-06-3025,433,938561,901,590.46
2026-07-3125,656,292688,889,834.76
2026-08-3125,878,704621,547,878.29
2026-09-3026,093,7371,260,387,000.63
now…reading…
Binance 14, a public exchange wallet: its USDT at the last block of each month, read from an Ethereum archive node when this page was built. The last row adds each new block’s transfers as they land.

Three ways to get balances today

  1. Build it yourself

    weeks, then edge cases

    Rebuilding balances from raw logs takes weeks, then breaks on rebasing tokens, fee-on-transfer tokens and Solana’s closed accounts.

    reconcile.logillustration
    $ reconcile --wallet 0x3c1e…a9f0 --token stETH --at 2026-06-30
      sum of transfers     1,204.551
      balanceOf() at block 1,212.906
    ✗ off by 8.355 rebasing token: the balance grew with no transfer
  2. Call a wallet API

    a bill per call

    You get one wallet per call and a bill for each call. History for ten thousand wallets means ten thousand calls, for every date you ask about.

    requests.logillustration
    GET /v1/wallets/0x9f2c…11ab/balances?date=2026-06-30  200  1 call
    GET /v1/wallets/0x51d0…e7c2/balances?date=2026-06-30  200  1 call
    GET /v1/wallets/0xc07b…0e44/balances?date=2026-06-30  200  1 call
    calls 0   wallets answered 0   left 10,000 of 10,000
  3. Buy from a warehouse vendor

    a contract first

    The tables exist, but they sit behind an annual contract and a sales call.

    inboxillustration
    from    sales@vendor.example
    subject Re: pricing for balance tables
    
    Thanks for reaching out! Pricing depends on your use case.
    Could we find 30 minutes next week? Our plans are annual.

noticeDune closed its Sim wallet API on 1 August 2026. If you’re choosing what replaces it, compare tables as well as endpoints.

Fifty wallets, every month end, one query

Change the token, the chains or the period. The query runs in your own BigQuery project, on your own bill.

token
chains
every
month_end_balances.sqlBigQuery
-- USDT, 50 wallets, each month end
SELECT
  chain,
  day AS month_end,
  address,
  balance,
  block_number
FROM `asof-data.balances.daily`
WHERE symbol = 'USDT'
  AND chain IN ('tron', 'ethereum')
  AND address IN UNNEST(@wallets)   -- your 50 addresses
  AND day = LAST_DAY(day, MONTH)
  AND day >= '2025-01-01'
ORDER BY month_end DESC, balance DESC
resultssample data1,340 rows
chainmonth_endaddressbalanceblock_number
ethereum2026-08-310x2084…cec912,329,750.0425,878,670
ethereum2026-08-310xea93…57809,777,295.4025,878,670
ethereum2026-08-310x6891…b6e84,727,724.5525,878,670
ethereum2026-08-310x6fcd…9c854,667,922.6325,878,670
tron2026-08-31Tas9…T5EK4,328,976.9885,849,495
ethereum2026-08-310x6287…96ab3,882,671.8325,878,670
ethereum2026-08-310x8994…5e8d3,878,179.4525,878,670

month_end = 2026-08-31… 1,333 more rows50 wallets × 2 chains × 20 month ends, where a balance exists

Synthetic wallets and balances; block numbers are each chain’s last block of the day, to within a few blocks. The demo will run this query on real data.

Delivered where you already work

We share a dataset into your Google Cloud project. Query it like your own tables; you pay only for your own queries.

Bulk files split by chain and day. Load them into Snowflake, DuckDB, Spark or anything else that reads Parquet.

A Pub/Sub feed of transfers and balance changes, filtered to the tokens or wallets you choose.

bq show asof-datadraft schema

asof-data

balances

ledger

One row per wallet, token and day: the balance at 23:59:59 UTC.

chainSTRING
dayDATE
addressSTRING
token_addressSTRING
symbolSTRING
balanceBIGNUMERIC
balance_rawSTRING
block_numberINT64

Who it’s for

Month-end holdings across chains, ready for your administrator and your investor letters.

funds.sqlbalances.daily
SELECT chain, symbol, SUM(balance) AS held
FROM `asof-data.balances.daily`
WHERE address IN UNNEST(@fund_wallets)
  AND day = '2026-08-31'
GROUP BY chain, symbol
ORDER BY held DESC
returns chain, symbol, heldsample data
chainsymbolheld
tronUSDT4,812,440.00
ethereumUSDC2,150,337.52
ethereumUSDT1,006,912.75
baseUSDC388,120.40

How we check the numbers

Every day we sample balances from our tables and compare them with the chain. How we check depends on what each chain’s nodes can tell us. The log below runs the Ethereum check in your browser, against a public node, on each new block.

check.lognode vs. ledgerconnecting

Waiting for the next block. Each check picks a wallet whose USDT or USDC balance moved in it.

We’ll publish the daily match rate on this page once the checks have run for a month.

The method, by chain

Ethereum, Base, BNB Chain, Polygon, Arbitrum
We ask an archive node for the balance at the same block.
Solana
Nodes don’t serve past state, so we check against the balances each transaction records before and after it runs.
Tron
Nodes don’t serve past state either. We check today’s balance against a node, then sum the ledger back to each past date.

Known edge cases, and what we do about each

CaseWhat goes wrongWhat we do
Rebasing tokensBalances grow or shrink with no transfer at all.We read balances from contract state, not only from summed transfers.
Fee-on-transfer tokensThe amount sent is not the amount received.We record what each balance actually changed by.
Native coins moved by contractsInternal transfers leave no log.Native balances come from traces, so they count.
Gas feesEvery transaction lowers the sender’s native balance.Fees are rows in the ledger like any other transfer.
Solana closed accountsA token account closes and its balance seems to vanish.We follow token accounts by owner and record each close.
Tron TRC-10 tokensThey move without contract events.We read TRC-10 transfers from transactions, next to TRC-20 logs.
USDT issue and redeemTether changes its supply without a Transfer event.We read the Issue and Redeem events too.

Chains and tables

Where each chain stands on launch day, 10 November 2026. After that, one chain goes live each week.

coverage
chaindaily balancesblock balancestransfer ledgerlive streamVote
Ethereumlivelivelivebuilding
Baseliveliveliveplanned
Tronlivelivelivebuilding
Solanabuildingbuildingbuildingplanned
BNB Chainplannedplannedplannedplanned
Arbitrumplannedplannedplannedplanned
Polygonplannedplannedplannedplanned

Solana comes first after launch. After that, sign-up votes set the order of BNB Chain, Arbitrum and Polygon. Vote for the chain you need; votes go with your sign-up.

Prices, published.

No sales call. Pick a plan and we’ll set it up for you.

$990

a month

For funds, accountants and data teams

Daily balances
Every live chain
Block-level balances
Every live chain
Transfer ledger
Every live chain
History
Full history
Delivery
Your BigQuery, bulk Parquet
Help with the schema
Included
Stream
Add for +$490 a month
Request Pro
Every plan side by side
Compare plans
Daily balancesUSDT and USDC sampleEvery live chainEvery live chainOther chains
Block-level balances——Every live chainOther chains
Transfer ledgerSampleEvery live chainEvery live chainOther chains
HistoryLast 90 days1 yearFull historyBy scope
DeliveryPublic BigQuery dataset, Parquet samplesYour BigQueryYour BigQuery, bulk ParquetPrivate delivery
Help with the schema——IncludedCustom tables
Stream Trading tools and payment teams—+$490 a month+$490 a monthBy scope

A Pub/Sub feed of transfers and balance changes, filtered to your tokens or wallets. Add it to any paid plan. The first ten paying customers get 50% off for 12 months. Design partners use it free during the beta, in return for a 20-minute call every two weeks.

Questions.

Something else? Ask in the form; every message gets a personal reply.

How fresh is the data?

Daily tables close shortly after midnight UTC. Block tables and the stream follow the chain within minutes: fresh enough for monitoring and reporting, not for trading. The demo shows the real delay on every row.

How do you handle reorgs?

Tables only take final blocks, so a reorg never rewrites a row you’ve already read. The stream sends changes as blocks arrive, and a correction if a block is dropped.

Where does the data come from?

We build every table from full chain history: blocks, transactions, logs and, where the chain has them, traces. Native balances come from traces, so transfers made inside contracts count.

How is this different from Dune, Allium or Zerion?

Wallet APIs such as Zerion’s answer one wallet per call and meter every call; we deliver every wallet’s history as tables you query in bulk. Allium and SonarX sell warehouse tables with prices on request; ours are on this page. Dune is a place to run queries; we deliver into your own warehouse, and we include Tron balances, which Dune has no table for.

Do you have USD prices?

Not yet, and we don’t run a price feed. Join a price source you already license, or a free one; we’ll tell you which work for each chain.

Can I get another chain?

Yes. Name it in the form below; sign-ups vote on which chain comes next. The Custom plan covers chains outside the seven.

Is there a free sample?

Yes: daily USDT and USDC balances on Tron and Ethereum for the last 90 days, free in BigQuery and as Parquet on Hugging Face.

A note from the builder

I’ve built blockchain data pipelines for years, and one question keeps coming back: what did this wallet hold on this date? I’m building the tables that answer it, checked against the chain. I answer every email myself.

Ian Guimarães, who builds Asof

Get early access.

Leave an email and we’ll write when your chains go live.

  • We email you when the chains you picked go live, and not about anything else.
  • Design partners get free access during the beta, for a 20-minute call every two weeks.
  • The first ten paying customers keep 50% off for 12 months.
early-access0 of 7 answered

Everything below is optional. Your answers decide what gets built first.

Your rolepick one
Chains you needpick any
What you’d use it forpick any
How you want itpick one
What you use todaypick any
Budget per monthpick one
Would you join as a design partner?pick one

Design partners use it free during the beta, in return for a 20-minute call every two weeks.