Contracts API
Is this address a verified contract
Whether an address holds bytecode, whether its source is published and verified, its compiler and licence, and whether it is a proxy pointing at an implementation.
/api/external/contract-analysis/contract-source/{chain}/{address}What it returns
Verification status, source, ABI and proxy relationship for ANY address — a token, a router, a pool, a vault, or a plain wallet. verified is false, not null, whenever this deployment could establish there is no published source — that covers a genuine unverified contract AND a wallet (nothing was ever published for either); read addressKind to tell them apart. addressKind is null only when this deployment could not determine what kind of address it is (no chain-level code read answered for this chain); the rest of the answer is unaffected. On a chain where most contracts are minimal-proxy clones, verified: false is the common answer even for a real, in-use contract — isProxy and implementation are still populated in that case, independent of verification. isProxy is false, not true, for a 'delegated-wallet': an EIP-7702 delegation is a revocable, self-authorised delegation on an EOA, a materially different trust model from a contract proxying calls, even though implementation may still carry the address it currently delegates execution to wherever this deployment can see that. Every field is null when nothing could be established at all (the underlying data source could not be reached), which is different from a measured false.
Chains
- BNB Chain BNB
- Ethereum ETH
- Stable STABLE
- Base BASE
- Robinhood Chain RHC
Request
Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.
curl -H "x-dex-data-key: $DEXDATA_API_KEY" \ "https://api.dexdata.io/api/external/contract-analysis/contract-source/BNB/<address>"
| Parameter | Description |
|---|---|
chainpath · string · required | The chain the address lives on. ETH, BNB, BASE, STABLE and RHC are served; SOL and ARC both return 400. CELO, ARB, OP and SCROLL return 400 here. |
addresspath · string · required | The address being asked about — it may or may not turn out to be a contract; the response says which. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type |
|---|---|
verified | boolean | null |
contractName | string | null |
compilerVersion | string | null |
compilerType | string | null |
optimizationUsed | boolean | null |
optimizationRuns | number | null |
evmVersion | string | null |
licenseType | string | null |
abi | any[] | null |
sourceCode | string | null |
sourceLength | number | null |
isMultiFileFormat | boolean | null |
isProxy | boolean | null |
implementation | string | null |
addressKind | string | null |
Start building with DexData today
Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.
Get a free API key