Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

ankr-sdk

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ankr-sdk

Compact Python library for interacting with Ankr's Advanced APIs.

  • 1.0.2
  • PyPI
  • Socket score

Maintainers
1

⚓️ Ankr Python SDK

Compact Python library for interacting with Ankr's Advanced APIs.

Get started in 2 minutes

1. Install the package from PyPi
pip install ankr-sdk
2. Initialize the SDK

Note: to use Advanced API for free starting from May 29th, 2023 you have to register on the platform.

Get your individual endpoint here https://www.ankr.com/rpc/advanced-api and provide it to the AnkrWeb3 class.

from ankr import AnkrWeb3

ankr_w3 = AnkrWeb3("YOUR-TOKEN")
3. Use the sdk and call one of the supported methods
Node's API
from ankr import AnkrWeb3
ankr_w3 = AnkrWeb3("YOUR-TOKEN")

eth_block = ankr_w3.eth.get_block("latest")
bsc_block = ankr_w3.bsc.get_block("latest")
polygon_block = ankr_w3.polygon.get_block("latest")
Ankr NFT API
from ankr import AnkrWeb3
from ankr.types import Blockchain, GetNFTsByOwnerRequest

ankr_w3 = AnkrWeb3("YOUR-TOKEN")

nfts = ankr_w3.nft.get_nfts(
    request=GetNFTsByOwnerRequest(
        blockchain=Blockchain.Eth,
        walletAddress="0x0E11A192d574b342C51be9e306694C41547185DD"
    )
)
Ankr Token API
from ankr import AnkrWeb3
from ankr.types import GetAccountBalanceRequest

ankr_w3 = AnkrWeb3("YOUR-TOKEN")

assets = ankr_w3.token.get_account_balance(
    request=GetAccountBalanceRequest(
        walletAddress="0x77A859A53D4de24bBC0CC80dD93Fbe391Df45527"
    )
)
Ankr Query API
from ankr import AnkrWeb3
from ankr.types import Blockchain, GetLogsRequest

ankr_w3 = AnkrWeb3("YOUR-TOKEN")

logs = ankr_w3.query.get_logs(
    request=GetLogsRequest(
        blockchain=[Blockchain.Eth],
        fromBlock=1181739,
        toBlock=1181739,
        address=["0x3589d05a1ec4af9f65b0e5554e645707775ee43c"],
        topics=[
            [],
            ["0x000000000000000000000000feb92d30bf01ff9a1901666c5573532bfa07eeec"],
        ],
        decodeLogs=True,
    ),
    limit=10
)

Ankr Advanced APIs supported chains

ankr-sdk supports the following chains at this time:

Mainnet

  • Ethereum: "eth"
  • BNB Smart Chain: "bsc"
  • Polygon: "polygon"
  • Fantom: "fantom"
  • Arbitrum: "arbitrum"
  • Avalanche: "avalanche"
  • Syscoin NEVM: "syscoin"
  • Optimism: "optimism"
  • Polygon zkEVM: "polygon_zkevm"
  • Rollux: "rollux"
  • Base: "base"
  • Flare: "flare"
  • Gnosis Chain: "gnosis"
  • Scroll: "scroll"
  • Linea: "linea"
  • Xai: "xai"
  • Xlayer: "xlayer"
  • Telos: "telos"

Testnet

  • Ethereum Sepolia: "eth_sepolia"
  • Ethereum Holesky: "eth_holesky"
  • Avalanche Fuji: "avalanche_fuji"
  • Polygon Amoy: "polygon_amoy"
  • Optimism Testnet: "optimism_testnet"
  • Base Sepolia: "base_sepolia"

Appchain

  • META Apes: "bas_metaapes"

Appchain Testnet

  • META Apes Testnet: "bas_metaapes_testnet"
  • Neura Devnet "neura_devnet"
  • Neura Testnet "neura_testnet_v1"
  • Incentiv Devnet "incentiv_devnet"

When passing blockchain, you can use one available from types.py (preferred) or just a string value.

Available methods

ankr-sdk supports the following methods:

Early Access

Token API

NFT API

Query API

Note: some methods are available in *_raw format, allowing to get full reply with syncStatus and control pagination by hands.

Pagination

  • methods with *_raw ending support customized pagination, where you are controlling it, using pageSize and pageToken
  • other methods support automatic pagination, DON'T use pageSize and pageToken fields to these methods

Examples

Early Access API

get_token_price_history / get_token_price_history_raw

Get a list of history of the price for given contract to given timestamp.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTokenPriceHistoryRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_token_price_history(
    request=GetTokenPriceHistoryRequest(
        blockchain=Blockchain.Eth,
        contractAddress='0x50327c6c5a14dcade707abad2e27eb517df87ab5',
        toTimestamp=1696970653,
        interval=100,
        limit=10
    )
)
print(result)
get_account_balance_historical / get_account_balance_historical_raw

Get the coin and token balances of the wallet at specified block.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetAccountBalanceHistoricalRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_account_balance_historical(
    request=GetAccountBalanceHistoricalRequest(
        blockchain=Blockchain.Eth,
        walletAddress='vitalik.eth',
        onlyWhitelisted=False,
        blockHeight=17967813,
    )
)
print(result)
get_internal_transactions_by_block_number / get_internal_transactions_by_block_number_raw

Get a list of internal transactions in the block.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetInternalTransactionsByBlockNumberRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_internal_transactions_by_block_number(
    request=GetInternalTransactionsByBlockNumberRequest(
        blockchain=Blockchain.Eth,
        blockNumber=10000000,
        onlyWithValue=True,
    )
)
for transaction in result:
    print(transaction)
get_internal_transactions_by_parent_hash / get_internal_transactions_by_parent_hash_raw

Get a list of internal transactions in the transaction.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetInternalTransactionsByParentHashRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_internal_transactions_by_parent_hash(
    request=GetInternalTransactionsByParentHashRequest(
        blockchain=Blockchain.Eth,
        parentTransactionHash='0xa50f8744e65cb76f66f9d54499d5401866a75d93db2e784952f55205afc3acc5',
        onlyWithValue=True,
    )
)
for transaction in result:
    print(transaction)

Token API

explain_token_price / explain_token_price_raw

Get a list of tokens and pool how price for calculated.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, ExplainTokenPriceRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

pairs, estimates = advancedAPI.explain_token_price(
    request=ExplainTokenPriceRequest(
        blockchain=Blockchain.Eth,
        tokenAddress='0x8290333cef9e6d528dd5618fb97a76f268f3edd4',
        blockHeight=17463534,
    )
)

print(pairs)
print(estimates)
get_account_balance / get_account_balance_raw

Get the coin and token balances of a wallet.

from ankr import AnkrAdvancedAPI
from ankr.types import GetAccountBalanceRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_account_balance(
    request=GetAccountBalanceRequest(
        walletAddress="0x77A859A53D4de24bBC0CC80dD93Fbe391Df45527"
    )
)

for balance in result:
    print(balance)
get_currencies / get_currencies_raw

Get a list of supported currencies for a given blockchain.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetCurrenciesRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_currencies(
    request=GetCurrenciesRequest(
        blockchain=Blockchain.Fantom,
    )
)

for currency in result:
    print(currency)
get_token_holders / get_token_holders_raw

Get the list of token holders for a given contract address.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTokenHoldersRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_token_holders(
    request=GetTokenHoldersRequest(
        blockchain=Blockchain.Eth,
        contractAddress='0xdac17f958d2ee523a2206206994597c13d831ec7',
    )
)

for balance in result:
    print(balance)
get_token_holders_count_history / get_token_holders_count_history_raw

Get historical data about the number of token holders for a given contract address.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTokenHoldersCountRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_token_holders_count_history(
    request=GetTokenHoldersCountRequest(
        blockchain=Blockchain.Eth,
        contractAddress='0xdAC17F958D2ee523a2206206994597C13D831ec7',
    )
)

for balance in result:
    print(balance)
get_token_holders_count / get_token_holders_count_raw

Get current data about the number of token holders for a given contract address.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTokenHoldersCountRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_token_holders_count_history_raw(
    request=GetTokenHoldersCountRequest(
        blockchain=Blockchain.Eth,
        contractAddress='0xdAC17F958D2ee523a2206206994597C13D831ec7',
    )
)

print(result)
get_token_price / get_token_price_raw

Get token price by contract.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTokenPriceRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_token_price(
    request=GetTokenPriceRequest(
        blockchain=Blockchain.Eth,
        contractAddress='',
    )
)

print(result)
get_token_transfers / get_token_transfers_raw

Get token transfers of specified address.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTransfersRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_token_transfers(
    request=GetTransfersRequest(
        blockchain=Blockchain.Eth,
        address=['0xf16e9b0d03470827a95cdfd0cb8a8a3b46969b91'],
        fromTimestamp=1674441035,
        toTimestamp=1674441035,
        descOrder=True,
    )
)

for transfer in result:
    print(transfer)

NFT API

get_nfts / get_nfts_raw

Get data about all the NFTs (collectibles) owned by a wallet.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetNFTsByOwnerRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_nfts(
    request=GetNFTsByOwnerRequest(
        blockchain=Blockchain.Eth,
        walletAddress='0x0E11A192d574b342C51be9e306694C41547185DD',
    )
)

for nft in result:
    print(nft)
get_nft_metadata / get_nft_metadata_raw

Get NFT's contract metadata.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetNFTMetadataRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

reply = advancedAPI.get_nft_metadata(
    request=GetNFTMetadataRequest(
        blockchain=Blockchain.Eth,
        contractAddress='0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d',
        tokenId='1500',
        forceFetch=False,
    )
)

print(reply.metadata)
print(reply.attributes)
get_nft_holders / get_nft_holders_raw

Get NFT's holders.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetNFTHoldersRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_nft_holders(
    request=GetNFTHoldersRequest(
        blockchain=Blockchain.Arbitrum,
        contractAddress='0xc36442b4a4522e871399cd717abdd847ab11fe88',
    ),
    limit=1000
)

for holder in result:
    print(holder)
get_nft_transfers / get_nft_transfers_raw

Get NFT Transfers of specified address.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTransfersRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_nft_transfers(
    request=GetTransfersRequest(
        blockchain=[Blockchain.Eth, Blockchain.Bsc],
        address=['0xd8da6bf26964af9d7eed9e03e53415d37aa96045'],
        fromTimestamp=1672553107,
        toTimestamp=1672683207,
    )
)

for transfer in result:
    print(transfer)

Query API

get_logs / get_logs_raw

Get logs matching the filter.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetLogsRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_logs(
    request=GetLogsRequest(
        blockchain=[Blockchain.Eth],
        fromBlock=1181739,
        toBlock=1181739,
        address=["0x3589d05a1ec4af9f65b0e5554e645707775ee43c"],
        topics=[
            [],
            ["0x000000000000000000000000feb92d30bf01ff9a1901666c5573532bfa07eeec"],
        ],
        decodeLogs=True,
    ),
    limit=10
)

for log in result:
    print(log)
get_blocks / get_blocks_raw

Query data about blocks within a specified range.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetBlocksRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_blocks(
    request=GetBlocksRequest(
        blockchain=Blockchain.Eth,
        fromBlock=14500001,
        toBlock=14500004,
        descOrder=True,
        includeLogs=True,
        includeTxs=True,
        decodeLogs=True,
    )
)

for block in result:
    print(block)
get_transaction / get_transaction_raw

Query data about transaction by the transaction hash.

from ankr import AnkrAdvancedAPI
from ankr.types import GetTransactionsByHashRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_transaction(
    request=GetTransactionsByHashRequest(
        transactionHash='0x82c13aaac6f0b6471afb94a3a64ae89d45baa3608ad397621dbb0d847f51196f',
        decodeTxData=True
    )
)

print(result)
get_transactions_by_address / get_transactions_by_address_raw

Query data about transactions of specified address.

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetTransactionsByAddressRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_transactions_by_address(
    request=GetTransactionsByAddressRequest(
        blockchain=Blockchain.Bsc,
        fromBlock=23593283,
        toBlock=23593283,
        address=[
            "0x97242e3315c7ece760dc7f83a7dd8af6659f8c4c"
        ],
        descOrder=True,
    )
)

for transaction in result:
    print(transaction)
get_blockchain_stats / get_blockchain_stats_raw

Returns blockchain stats (num of txs, etc.).

from ankr import AnkrAdvancedAPI
from ankr.types import Blockchain, GetBlockchainStatsRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_blockchain_stats(
    request=GetBlockchainStatsRequest(
        blockchain=Blockchain.Bsc,
    )
)

for stat in result:
    print(stat)
get_interactions / get_interactions_raw

Returns on which chain address was interacting.

from ankr import AnkrAdvancedAPI
from ankr.types import GetInteractionsRequest

advancedAPI = AnkrAdvancedAPI("YOUR-TOKEN")

result = advancedAPI.get_interactions(
    request=GetInteractionsRequest(
        address='0xF977814e90dA44bFA03b6295A0616a897441aceC',
    )
)

for blockchain in result:
    print(blockchain)

About API keys

Ankr is offering free access to Advanced API, however you have to register on Ankr platform to access it.

Get your individual API Key here https://www.ankr.com/rpc/advanced-api.

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc