What this endpoint does

The baes scan contract creator API returns the deployer for an EVM contract address. It is useful when an explorer-style contract creator endpoint is unavailable, rate-limited, or not wired for the chain you need.

Give the endpoint a chain and token contract address. It returns the creator address, creation transaction hash, and creation block when the block is available.

Endpoint

GET /api/contract-creator/{chain}/{address}

Example:

GET /api/contract-creator/base/0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913

Use the baes scan origin before the path:

https://baesscan.com/api/contract-creator/base/0xTokenAddress

Supported chains

The endpoint works for enabled EVM chains that baes scan has RPC access to. Current EVM chain slugs include:

base
ethereum
bsc
arbitrum
optimism
polygon
avalanche
monad
megaeth

Solana is not supported by this endpoint.

Single-address response

The normal response is plain JSON:

{
  "chain": "base",
  "address": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
  "creator": "0x6aAFF8af0ae8017725312C388bA3745dfE91185B",
  "contractCreator": "0x6aAFF8af0ae8017725312C388bA3745dfE91185B",
  "transactionFrom": "0x6aAFF8af0ae8017725312C388bA3745dfE91185B",
  "txHash": "0x8aa214f98bcf2984add809d10232135cccc4d6ab97d8477e66475d8bf68def34",
  "creationTxHash": "0x8aa214f98bcf2984add809d10232135cccc4d6ab97d8477e66475d8bf68def34",
  "blockNumber": 2797221,
  "creationBlock": 2797221,
  "confidence": "high",
  "createdByContract": false,
  "generatedAt": "2026-05-21T00:00:00.000Z"
}

Batch lookup

You can pass multiple addresses with addresses:

GET /api/contract-creator/base?addresses=0xTokenA,0xTokenB

Batch responses return successful results and per-address errors:

{
  "chain": "base",
  "count": 2,
  "results": [
    {
      "chain": "base",
      "address": "0xTokenA",
      "creator": "0xCreator",
      "contractCreator": "0xCreator",
      "txHash": "0xCreationTx",
      "creationTxHash": "0xCreationTx",
      "confidence": "high",
      "createdByContract": false,
      "generatedAt": "2026-05-21T00:00:00.000Z"
    }
  ],
  "errors": [
    {
      "address": "0xTokenB",
      "error": "address has no contract code at the current head",
      "code": "contract_not_found",
      "statusCode": 404
    }
  ]
}

Batch requests are limited to 5 addresses.

Etherscan-compatible shape

If your script already expects Etherscan's contract creation format, use:

GET /api/contract-creator/base?module=contract&action=getcontractcreation&contractaddresses=0xToken&format=etherscan

Response:

{
  "status": "1",
  "message": "OK",
  "result": [
    {
      "contractAddress": "0xToken",
      "contractCreator": "0xCreator",
      "txHash": "0xCreationTx",
      "blockNumber": 2797221,
      "transactionFrom": "0xCreator",
      "confidence": "high"
    }
  ]
}

What the fields mean

  • creator and contractCreator are the best deployer address baes scan found.
  • transactionFrom is the top-level transaction sender when available.
  • createdByContract is true when the creator differs from the top-level transaction sender, which can happen with factory deployments.
  • txHash and creationTxHash are the creation transaction hash.
  • blockNumber and creationBlock are the creation block when available.
  • confidence is usually high. A lower confidence response means the deployment transaction was found, but the RPC could not expose full create-trace detail.

Common errors

{
  "error": "invalid contract address",
  "code": "invalid_contract_address",
  "statusCode": 400
}
{
  "error": "address has no contract code at the current head",
  "code": "contract_not_found",
  "statusCode": 404
}
{
  "error": "RPC could not resolve the contract deployment block; configure an archive-capable RPC for this chain",
  "code": "deployment_block_unavailable",
  "statusCode": 503
}

Practical note

For the fastest and cleanest results, baes scan can ask Blockscout PRO first when it is configured. If that record is not available, baes scan falls back to its own chain RPC path.

Either way, the public response stays the same: token contract in, deployer details out.