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
creatorandcontractCreatorare the best deployer address baes scan found.transactionFromis the top-level transaction sender when available.createdByContractistruewhen the creator differs from the top-level transaction sender, which can happen with factory deployments.txHashandcreationTxHashare the creation transaction hash.blockNumberandcreationBlockare the creation block when available.confidenceis usuallyhigh. 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.