> ## 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.

<AgentInstructions>

## Submitting Feedback

If you encounter incorrect, outdated, or confusing documentation on this page, submit feedback:

POST https://docs.chainstack.com/feedback

```json
{
  "path": "/reference/bnb-getcode",
  "feedback": "Description of the issue"
}
```

Only submit feedback when you have something specific and actionable to report.

</AgentInstructions>

# eth_getCode | BNB Chain

BNB API method that retrieves the compiled bytecode of a smart contract, providing its address as a parameter. This method returns a hexadecimal string representing the smart contract's bytecode.

Developers can use this bytecode to verify whether a smart contract is legitimate and ensure that it performs its intended functions.

<Note>
  When called against a block older than the latest \~128 blocks, this method is treated as an archive request (2 RUs instead of 1 RU). See [request units](/docs/request-units#archive-state-methods).
</Note>

<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

* `address` — the address of the smart contract to query.
* `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. A chain reorganization is to be expected.
  * `safe` — the block that received justification from the beacon chain. Although this block could be involved in a chain reorganization, it would necessitate either a coordinated attack by the majority of validators or an instance of severe propagation latency.
  * `finalized` — the block accepted as canonical by more than 2/3 of the validators. A chain reorganization is extremely unlikely, and it would require at least 1/3 of the staked amount to be burned.
  * `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://ethereum.org/en/developers/docs/apis/json-rpc/#default-block) and [How The Merge Impacts Ethereum’s Application Layer](https://blog.ethereum.org/2021/11/29/how-the-merge-impacts-app-layer).
</Note>

## Response

`data` — the compiled bytecode of a smart contract. Returns `0x` if the address is not associated with a smart contract.

## `eth_getCode` code examples

The following example retrieves the compiled bytecode from the [CAKE token smart contract](https://bscscan.com/token/0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82).

<CodeGroup>
  ```javascript web3.js theme={"system"}
  const { Web3 } = require("web3");
  const NODE_URL = "CHAINSTACK_NODE_URL";
  const web3 = new Web3(NODE_URL);

  async function getCode(address, block) {
    const code = await web3.eth.getCode(address, block)
    console.log(code)
   }
   
   getCode("0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", "latest" )
  ```

  ```javascript ethers.js theme={"system"}
  const ethers = require('ethers');
  const NODE_URL = "CHAINSTACK_NODE_URL";
  const provider = new ethers.JsonRpcProvider(NODE_URL);

  const getCode = async (address, block) => {
      const code = await provider.send("eth_getCode", [address, block]);
      console.log(code);
    };

    getCode("0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", "latest")
  ```

  ```python web3.py theme={"system"}
  from web3 import Web3  
  node_url = "CHAINSTACK_NODE_URL" 

  code = web3.eth.get_code("0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82", "latest") 
  print(web3.to_hex(code))   # Convert the Bytes result into HEX.
  ```
</CodeGroup>

## Use case

A practical use case for the `eth_getcode` method is verifying whether an address is associated with a smart contract. This can be particularly useful for blockchain explorers, auditors, and DApp developers, who must ensure that the account they interact with is legitimate.


## OpenAPI

````yaml /openapi/bnb_node_api/eth_getCode.json POST /35848e183f3e3303c8cfeacbea831cab
openapi: 3.0.0
info:
  title: BNB Node API
  version: 1.0.0
  description: This is an API for interacting with an BNB node.
servers:
  - url: https://bsc-mainnet.core.chainstack.com
security: []
paths:
  /35848e183f3e3303c8cfeacbea831cab:
    post:
      tags:
        - upload
      summary: eth_getCode
      operationId: getCode
      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_getCode
                params:
                  type: array
                  items:
                    anyOf:
                      - type: string
                        title: Smart contract address
                        description: The address identifier.
                      - type: string
                        title: Block identifier
                        description: The block identifier.
                  default:
                    - '0x0E09FaBB73Bd3Ade0a17ECC321fD13a19e81cE82'
                    - latest
      responses:
        '200':
          description: The smart contract code.
          content:
            application/json:
              schema:
                type: object
                properties:
                  jsonrpc:
                    type: string
                  id:
                    type: integer
                  result:
                    type: object

````