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

# eth_estimateGas | Polygon

Polygon API method that returns an estimate of gas units needed for a given transaction.

It provides an estimate of the maximum amount of gas units required to complete the transaction based on the network's current state and the transaction's parameters. A client or wallet can use this estimate to determine the appropriate amount of gas to include in a transaction to ensure that the network processes it.

<Check>
  **Get your own node endpoint today**

  [Start for free](https://console.chainstack.com/) and get your app to production levels immediately. No credit card required.

  You can sign up with your GitHub, X, Google, or Microsoft account.
</Check>

## Parameters

* `object` — the transaction call object, same as in `eth_call`; the `from` field is optional, and the `nonce` field is omitted:

  * `from` — (optional) the string of the address used to send the transaction.
  * `to` — the string of the address to which the transaction is directed, a wallet, or a smart contract.
  * `gas` — (optional) the maximum amount of gas that can be used by the transaction.
  * `gasprice` — (optional) the amount of gas price the sender is willing to pay for each gas unit in [Wei](https://ethereum.org/en/developers/docs/intro-to-ether/#denominations).
  * `value` — (optional) the value sent with this transaction, encoded as hexadecimal.
  * `data` — (optional) additional data to be sent with the call, usually used to invoke functions from smart contracts as a string of the hash of the method signature and encoded parameters; see the [Ethereum Contract ABI](https://solidity.readthedocs.io/en/latest/abi-spec.html).
* `quantity or tag` — the integer of a block encoded as hexadecimal or the string with:

  * `latest` — the most recent block in the blockchain and the current state of the blockchain at the most recent block.
  * `earliest` — the earliest available or genesis block.
  * `pending` — the pending state and transactions block. The current state of transactions that have been broadcast to the network but have not yet been included in a block.

<Note>
  See the [default block parameter](https://eth.wiki/json-rpc/API#the-default-block-parameter).
</Note>

## Response

* `quantity` — the estimated amount of gas units needed, represented as a hexadecimal string.

## `eth_estimateGas` code examples

<CodeGroup>
  ```javascript web3.js theme={"system"}
  const Web3 = require("web3");
  const NODE_URL = "CHAINSTACK_NODE_URL";
  const web3 = new Web3(NODE_URL);

  async function estimateGas() {
  	// The transaction to estimate is a simple transfer in this example.
    const transactionObj = {
      from: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
      to: "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8",
    }

    const gasUnits = await web3.eth.estimateGas(transactionObj);
    console.log(`Estimated gas units required: ${gasUnits}`);
  }

  estimateGas()
  ```

  ```javascript ethers.js theme={"system"}
  const ethers = require('ethers');
  const NODE_URL = "CHAINSTACK_NODE_URL";
  const provider = new ethers.JsonRpcProvider(NODE_URL);

  const estimateGas = async () => {
      // The transaction to estimate is a simple transfer in this example.
      const transactionObj = {
          from: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
          to: "0xbe0eb53f46cd790cd13851d5eff43d12404d33e8",
      }

      const gasUnits = await provider.estimateGas(transactionObj);
      console.log(`Estimated gas units required: ${gasUnits}`);
  };

  estimateGas();
  ```

  ```python web3.py theme={"system"}
  from web3 import Web3  
  node_url = "CHAINSTACK_NODE_URL"

  web3 = Web3(Web3.HTTPProvider(node_url)) 
  print(web3.eth.estimate_gas({"from":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045","to":"0xbe0eb53f46cd790cd13851d5eff43d12404d33e8"}, "latest" ))  
  ```
</CodeGroup>

## Use case

A practical use case for `eth_estimateGas` is to calculate the gas cost required for a transaction that transfers a value from one Polygon address (`fromAddress`) to another (`toAddress`). The gas cost is an important factor in transactions, as it determines the amount of fees that need to be paid by the sender to the network for processing the transaction.

```javascript index.js theme={"system"}
const Web3 = require("web3");
const NODE_URL = "CHAINSTACK_NODE_URL";
const web3 = new Web3(NODE_URL);

async function estimateGasCost(from, to, value) {
  try {
    const gasEstimate = await web3.eth.estimateGas({ from: from, to: to, value: value });
    return gasEstimate
  } catch (error) {
    console.error(`Error estimating gas cost: ${error}`);
  }
}

async function main() {

  const fromAddress = '0x65bf36d6499a504100eb504f0719271f5c4174ec';
  const toAddress = '0x81ab6Fd4A68d0aDDFAD65F9F97Bc1427dCd40C8E';
  const value = '25000000000000000000'; // 25 Matic in Wei

  const estimatedGas= await estimateGasCost(fromAddress, toAddress, value)
  if (estimatedGas) {
    console.log(`Estimated gas cost: ${estimatedGas}`);
  }
}

main()
```

The `estimateGasCost` function wraps the call to `eth.estimateGas` in a `try-catch` block so that any errors that occur during the estimation process can be handled gracefully. If an error occurs, the error message is logged to the console. If the estimate is successful, the estimated gas cost is returned.

The main function is the entry point of the code. It sets the `fromAddress`, `toAddress`, and value for the transaction, and then calls the `estimateGasCost` function to get the estimated gas cost. The estimated gas cost is logged to the console if the estimate is successful, but it is available to be used for further processing in the `estimatedGas` constant.


## OpenAPI

````yaml /openapi/polygon_node_api/gas_data/eth_estimateGas.json POST /a9bca2f0f84b54086ceebe590316fff3
openapi: 3.0.0
info:
  title: eth_estimateGas example
  version: 1.0.0
  description: This is an API example for eth_estimateGas.
servers:
  - url: https://nd-828-700-214.p2pify.com
security: []
paths:
  /a9bca2f0f84b54086ceebe590316fff3:
    post:
      tags:
        - upload
      summary: eth_estimateGas
      operationId: estimateGas
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  default: 1
                jsonrpc:
                  type: string
                  default: '2.0'
                method:
                  type: string
                  default: eth_estimateGas
                params:
                  type: array
                  items:
                    anyOf:
                      - type: object
                        properties:
                          from:
                            type: string
                            default: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
                          to:
                            type: string
                            default: '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'
                      - type: string
                        default: latest
                  default:
                    - from: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
                      to: '0xbe0eb53f46cd790cd13851d5eff43d12404d33e8'
                    - latest
      responses:
        '200':
          description: The estimated gas information
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                  id:
                    type: integer
                  result:
                    type: object

````