Reference for Hedera network queries that read data without consensus, organized by service, with guidance on when to use the mirror node REST API instead.
Queries are requests that do not require network consensus. Queries are processed only by the single node the request is sent to. Below is a list of network queries by service.
For obtaining token information and historical data, consider using the Mirror Node REST API endpoint Get Token Account Balance which offers several advantages:
Cost-effective and scalable:Mirror node providers offer paid plans with a large number of queries included. The Hedera-hosted mirror node offers free queries with specific throttles for testing. While some SDK queries are currently free, these are subject to change in the future.
Performance: Mirror nodes don’t burden consensus nodes, allowing them to focus on processing transactions and providing efficient access to historical data without impacting network performance.
Historical data: Mirror nodes store complete transaction history, records, and events - ideal for analytics, auditing, and monitoring past activity.
AccountBalanceQuery no longer works. It read the consensus node’s cryptoGetBalance query, which consensus node release v0.77 removed (testnet on September 15, 2026, mainnet on September 29, 2026). Current SDKs (JavaScript v2.89.0+, Java v2.78.0+, Go v2.85.1+) fail the call immediately with a deprecation error and never contact a node. Older SDK versions, and the Rust SDK, still send the query, and the network answers BUSY until the SDK runs out of retries.Read HBAR balances with MirrorNodeAccountBalanceQuery (JavaScript v2.87.0+, Java v2.77.0+, Go v2.84.0+) and token balances with MirrorNodeTokenBalanceQuery (JavaScript v2.89.0+, Java v2.78.0+, Go v2.85.0+). Both are free mirror node queries. The Rust SDK has neither, so call the Mirror Node REST API directly.📚 For the full migration guide, read:Migrating from AccountBalanceQuery: What You Need to Know
A query that returns the cost of a query prior to submitting the query to the network node for processing. If the cost of the query is greater than the default max query payment (1 HBAR) you can use setMaxQueryPayment(<hbar>) to change the default.
MirrorNodeAccountBalanceQuery and MirrorNodeTokenBalanceQuery have no getCost(). They are free mirror node REST calls, not paid consensus node queries, so this section does not apply to them.
Method
Type
Description
getCost(<client>)
Client
Get the cost of the query in HBAR
getCost(<client, timeout>)
Client, Duration
The max length of time the SDK will attempt to retry in the event of repeated busy responses from the node(s)
getCostAsync(<client>)
Client
Get the cost of a query asynchronously
//Create the query requestAccountInfoQuery query = new AccountInfoQuery() .setAccountId(accountId);//Get the cost of the queryHbar queryCost = query.getCost(client);System.out.println("The account info query cost is " +queryCost);//v2.0.0
//Create the query requestconst query = new AccountInfoQuery() .setAccountId(accountId);//Get the cost of the queryconst queryCost = await query.getCost(client);console.log("The account info query cost is " +queryCost);//v2.0.0
//Create the query requestquery := hiero.NewAccountInfoQuery(). SetAccountID(accountId)//Get the cost of the querycost, err := query.GetCost(client)if err != nil { panic(err)}fmt.Printf("The account info query cost is: %v\n ", cost.String())//v2.0.0
// Create the query requestlet query = AccountInfoQuery::new() .account_id(account_id);// Get the cost of the querylet query_cost = query.get_cost(&client).await?;println!("The account info query cost is {:?}", query_cost);// v0.34.0