Account APIs

Contract APIs

  • Get Contract ABI for Verified Contract Source Codes
    /api?module=contract&action=getabi&address=0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413&apikey=YourApiKeyToken
    A simple sample for retrieving the contractABI using Web3.js and Jquery to interact with a contract
    var Web3 = require('web3'); var web3 = new Web3(new Web3.providers.HttpProvider()); var version = web3.version.api; $.getJSON('https://api.etherscan.io/api?module=contract&action=getabi&address=0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359', function (data) { var contractABI = ""; contractABI = JSON.parse(data.result); if (contractABI != ''){ var MyContract = web3.eth.contract(contractABI); var myContractInstance = MyContract.at("0xfb6916095ca1df60bb79ce92ce3ea74c37c5d359"); var result = myContractInstance.memberId("0xfe8ad7dd2f564a877cc23feea6c0a9cc2e783715"); console.log("result1 : " + result); var result = myContractInstance.members(1); console.log("result2 : " + result); } else { console.log("Error" ); } });
  • Get Contract Source Code for Verified Contract Source Codes
        1. /api?module=contract&action=getsourcecode&address=0xBB9bc244D798123fDe783fCc1C72d3Bb8C189413&apikey=YourApiKeyToken (replace the address parameter with the actual contract address)
    2. You can also download a CSV list of Verified contract addresses of which the code publishers have provided a corresponding Open Source license for re-distribution
    3. Terms of usage: Please see the usage terms policy
  • Verify Source Code (beta)
        1. Requires a valid Etherscan APIkey, will reject if otherwise
    2. Current daily limit of 100 submissions per day per user (subject to change)
    3. Only supports HTTP post due to max transfer size limitations for http get
    4. Supports up to 10 different library pairs
    5. Contracts that use "imports" will need to have the code concatenated into one file as we do not support "imports" in separate files. You can try using the Blockcat solidity-flattener or SolidityFlattery
    6. List of supported solc versions, only solc version v0.4.11 and above is supported. Ex. v0.4.25+commit.59dbf8f1
    7. Upon successful submission you will receive a GUID (50 characters) as a receipt.
    8. You may use this GUID to track the status of your submission
    9. Verified Source Codes will be displayed at contractsVerified
    See Demo Source Verification Submission Code at Source Code Verification Sample
    Source Code Submission Gist (returns a guid as part of the result upon success):
    //Submit Source Code for Verification $.ajax({ type: "POST", //Only POST supported url: "/api", //Set to the correct API url for Other Networks data: { apikey: $('#apikey').val(), //A valid API-Key is required module: 'contract', //Do not change action: 'verifysourcecode', //Do not change contractaddress: $('#contractaddress').val(), //Contract Address starts with 0x... sourceCode: $('#sourceCode').val(), //Contract Source Code (Flattened if necessary) codeformat: $('#codeformat').val(), //solidity-single-file (default) or solidity-standard-json-input (for std-input-json-format support contractname: $('#contractname').val(), //ContractName (if codeformat=solidity-standard-json-input, then enter contractname as ex: erc20.sol:erc20) compilerversion: $('#compilerversion').val(), // see https://etherscan.io/solcversions for list of support versions optimizationUsed: $('#optimizationUsed').val(), //0 = No Optimization, 1 = Optimization used (applicable when codeformat=solidity-single-file) runs: 200, //set to 200 as default unless otherwise (applicable when codeformat=solidity-single-file) constructorArguements: $('#constructorArguements').val(), //if applicable evmversion: $('#evmVersion').val(), //leave blank for compiler default, homestead, tangerineWhistle, spuriousDragon, byzantium, constantinople, petersburg, istanbul (applicable when codeformat=solidity-single-file) licenseType: $('#licenseType').val(), //Valid codes 1-12 where 1=No License .. 12=Apache 2.0, see https://etherscan.io/contract-license-types libraryname1: $('#libraryname1').val(), //if applicable, a matching pair with libraryaddress1 required libraryaddress1: $('#libraryaddress1').val(), //if applicable, a matching pair with libraryname1 required libraryname2: $('#libraryname2').val(), //if applicable, matching pair required libraryaddress2: $('#libraryaddress2').val(), //if applicable, matching pair required libraryname3: $('#libraryname3').val(), //if applicable, matching pair required libraryaddress3: $('#libraryaddress3').val(), //if applicable, matching pair required libraryname4: $('#libraryname4').val(), //if applicable, matching pair required libraryaddress4: $('#libraryaddress4').val(), //if applicable, matching pair required libraryname5: $('#libraryname5').val(), //if applicable, matching pair required libraryaddress5: $('#libraryaddress5').val(), //if applicable, matching pair required libraryname6: $('#libraryname6').val(), //if applicable, matching pair required libraryaddress6: $('#libraryaddress6').val(), //if applicable, matching pair required libraryname7: $('#libraryname7').val(), //if applicable, matching pair required libraryaddress7: $('#libraryaddress7').val(), //if applicable, matching pair required libraryname8: $('#libraryname8').val(), //if applicable, matching pair required libraryaddress8: $('#libraryaddress8').val(), //if applicable, matching pair required libraryname9: $('#libraryname9').val(), //if applicable, matching pair required libraryaddress9: $('#libraryaddress9').val(), //if applicable, matching pair required libraryname10: $('#libraryname10').val(), //if applicable, matching pair required libraryaddress10: $('#libraryaddress10').val() //if applicable, matching pair required }, success: function (result) { console.log(result); if (result.status == "1") { //1 = submission success, use the guid returned (result.result) to check the status of your submission. // Average time of processing is 30-60 seconds document.getElementById("postresult").innerHTML = result.status + ";" + result.message + ";" + result.result; // result.result is the GUID receipt for the submission, you can use this guid for checking the verification status } else { //0 = error document.getElementById("postresult").innerHTML = result.status + ";" + result.message + ";" + result.result; } console.log("status : " + result.status); console.log("result : " + result.result); }, error: function (result) { console.log("error!"); document.getElementById("postresult").innerHTML = "Unexpected Error" } });
  • Check Source code verification submission status:
        //Check Source Code Verification Status
        $.ajax({
            type: "GET",
            url: "/api",
            data: {
                guid: 'ezq878u486pzijkvvmerl6a9mzwhv6sefgvqi5tkwceejc7tvn', //Replace with your Source Code GUID receipt above
                module: "contract",
                action: "checkverifystatus"
            },
            success: function (result) {
                console.log("status : " + result.status);   //0=Error, 1=Pass 
                console.log("message : " + result.message); //OK, NOTOK
                console.log("result : " + result.result);   //result explanation
                $('#guidstatus').html(">> " + result.result);
            },
            error: function (result) {
                alert('error');
            }
        });
    

Transaction APIs

Blocks APIs

Event Logs

Geth/Parity Proxy APIs

The following are the limited list of supported Proxied APIs for Geth available through Etherscan.
For the list of the parameters and descriptions please see https://github.com/ethereum/wiki/wiki/JSON-RPC. Parameters provided should be named like in the examples below. For compatibility with Parity, please prefix all hex strings with "0x"

Token Info APIs

Gas Tracker APIs

General Stats APIs