ABI Data

Remotely fetch smart contract ABI as JSON to use with wagmi and ethers.js in your app.

How do I use this API?

Append the contract address after abidata.net and optionally pass a network param, that’s it. You don’t need any API keys.

Which networks are supported?

NameNetwork ID
Ethereum Mainnetnone (default)
Ethereum Goerli Testnetgoerli
Ethereum Sepolia Testnetsepolia
Avalanche Mainnetavalanche
Avalanche Fuji TestnetavalancheFuji
Arbitrum Mainnetarbitrum
Arbitrum Goerli TestnetarbitrumGoerli
Arbitrum NovaarbitrumNova
Base Mainnetbase
Base Goerli TestnetbaseGoerli
BSC Mainnetbsc
BSC TestnetbscTestnet
Fantom Mainnetfantom
Fantom TestnetfantomTestnet
Polygon Mainnetpolygon
Polygon Mumbai TestnetpolygonMumbai
Polygon zkEVM MainnetpolygonZkEvm
Polygon zkEVM TestnetpolygonZkEvmTestnet
Optimism Mainnetoptimism
Optimism Goerli TestnetoptimismGoerli
Gnosis Mainnetgnosis

Example:

React usage Example:

import { useState, useEffect } from 'react'; import { useContractWrite, usePrepareContractWrite } from 'wagmi'; const contractAddress = "0xecb504d39723b0be0e3a9aa33d646642d1051ee1"; const useContractABI = (contractAddress) => { const [contractABI, setContractABI] = useState(null); useEffect(() => { const fetchContractABI = async () => { const response = await fetch(`https://abidata.net/${contractAddress}`); const json = await response.json(); setContractABI(json.abi); }; fetchContractABI(); }, [contractAddress]); return contractABI; }; function App() { const contractABI = useContractABI(contractAddress); const { config } = usePrepareContractWrite({ address: contractAddress, abi: contractABI, functionName: 'feed', }); const { data, isLoading, isSuccess, write } = useContractWrite(config); return ( <div> <button disabled={!write} onClick={() => write?.()}> Feed </button> {isLoading && <div>Check Wallet</div>} {isSuccess && <div>Transaction: {JSON.stringify(data)}</div>} </div> ) }

Is this free to use?

Yes, it’s free for everyone.

If you wanna support this project send some eth to ens.pug.eth

Can this be used in production?

Yes. Records are cached for 30 days, so after the initial request for a contract, the API will respond very quickly from the CDN.

Is the source code available?

Yes, check it out on GitHub. The main branch is automatically deployed to Vercel.