> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hedera.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Queries

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.

<Note>
  #### **Recommend Using Mirror Node REST API**

  For obtaining token information and historical data, consider using the Mirror Node REST API endpoint [**Get Token Account Balance**](https://docs.hedera.com/api-reference/tokens/list-token-balances) which offers several advantages:

  * **Cost-effective and scalable:** [Mirror node providers](/operators/mirror-node#mainnet) 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.

  📚 **For more details on querying data, read:** [Querying Data on Hedera: SDK vs Mirror Node REST API](https://hedera.com/blog/querying-data-on-hedera-sdk-vs-mirror-node-rest-api/)
</Note>

<Warning>
  #### **DEPRECATION NOTICE: `AccountBalanceQuery`**

  The `AccountBalanceQuery` is deprecated and will be completely removed in **July 2026**. This is the only SDK method presented on this page and it will no longer function after this date.

  A gradual throttle reduction begins in **May 2026**. To avoid rate limiting and future service disruptions, you must migrate to the Mirror Node REST API.

  📚 **For the full migration guide, read:** [Migrating from AccountBalanceQuery: What You Need to Know](https://hedera.com/blog/migrating-from-accountbalancequery-what-you-need-to-know)
</Warning>

| Cryptocurrency Accounts                             | Consensus                                          | Tokens                                          | File Service                                    | Smart Contracts                                               | Schedule Service                                |
| --------------------------------------------------- | -------------------------------------------------- | ----------------------------------------------- | ----------------------------------------------- | ------------------------------------------------------------- | ----------------------------------------------- |
| [AccountBalanceQuery](/native/accounts/get-balance) | [TopicInfoQuery](/native/consensus/get-info)       | [TokenBalanceQuery](/native/tokens/get-balance) | [FileContentsQuery](/native/files/get-contents) | [ContractCallQuery](/native/smart-contracts/get-function)     | [ScheduleInfoQuery](/native/scheduled/get-info) |
| [AccountInfoQuery](/native/accounts/get-info)       | [TopicMessageQuery](/native/consensus/get-message) | [TokenInfoQuery](/native/tokens/get-info)       | [FileInfoQuery](/native/files/get-info)         | [ContractByteCodeQuery](/native/smart-contracts/get-bytecode) |                                                 |

## Get Query Cost

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.

<table><thead><tr><th>Method</th><th>Type</th><th>Description</th></tr></thead><tbody><tr><td><code>getCost(\<client>)</code></td><td>Client</td><td>Get the cost of the query in HBAR</td></tr><tr><td><code>getCost(\<client, timeout>)</code></td><td>Client, Duration</td><td>The max length of time the SDK will attempt to retry in the event of repeated busy responses from the node(s)</td></tr><tr><td><code>getCostAsync(\<client>)</code></td><td>Client</td><td>Get the cost of a query asynchronously</td></tr></tbody></table>

<CodeGroup>
  ```java Java theme={null}
  //Create the query request
  AccountBalanceQuery query = new AccountBalanceQuery()
       .setAccountId(accountId);

  //Get the cost of the query
  Hbar queryCost = query.getCost(client);

  System.out.println("The account balance query cost is " +queryCost);

  //v2.0.0
  ```

  ```javascript JavaScript theme={null}
  //Create the query request
  const query = new AccountBalanceQuery()
       .setAccountId(accountId);

  //Get the cost of the query
  const queryCost = await query.getCost(client);

  console.log("The account balance query cost is " +queryCost);

  //v2.0.0
  ```

  ```java Go theme={null}
  //Create the query request
  query := hedera.NewAccountBalanceQuery().
       SetAccountID(newAccountId)

  //Get the cost of the query
  cost, err := query.GetCost(client)

  if err != nil {
  		panic(err)
  }

  fmt.Printf("The account balance query cost is: %v\n ", cost.String())

  //v2.0.0
  ```

  ```rust Rust theme={null}
  // Create the query request
  let query = AccountBalanceQuery::new()
      .account_id(account_id);

  // Get the cost of the query
  let query_cost = query.get_cost(&client).await?;

  println!("The account balance query cost is {:?}", query_cost);

  // v0.34.0
  ```
</CodeGroup>
