
Security News
OWASP 2025 Top 10 Adds Software Supply Chain Failures, Ranked Top Community Concern
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.
Compact Python library for interacting with Ankr's Advanced APIs.
pip install ankr-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")
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")
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"
)
)
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"
)
)
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-sdk supports the following chains at this time:
Mainnet
"eth""bsc""polygon""fantom""arbitrum""avalanche""syscoin""optimism""polygon_zkevm""rollux""base""flare""gnosis""scroll""stellar""linea""xai""xlayer""telos"Testnet
"eth_sepolia""eth_holesky""avalanche_fuji""polygon_amoy""optimism_sepolia""base_sepolia""neura_devnet""neura_testnet_v1"Appchain Testnet
"incentiv_devnet_v3""incentiv_testnet"When passing blockchain, you can use one available from types.py (preferred) or just a string value.
ankr-sdk supports the following methods:
Early Access
Token API
explain_token_priceget_account_balanceget_currenciesget_token_holdersget_token_holders_count_historyget_token_holders_countget_token_priceget_token_transfersNFT API
Query API
get_logsget_blocksget_transactionget_transactions_by_addressget_blockchain_statsget_interactionsNote: some methods are available in *_raw format, allowing to get full reply with syncStatus and control pagination by hands.
pageSize and pageTokenpageSize and pageToken fields to these methodsget_token_price_history / get_token_price_history_rawGet 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)
explain_token_price / explain_token_price_rawGet 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_rawGet 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_rawGet 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_rawGet 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_rawGet 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_rawGet 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_rawGet 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_rawGet 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)
get_nfts / get_nfts_rawGet 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_rawGet 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_rawGet 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_rawGet 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)
get_logs / get_logs_rawGet 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_rawQuery 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_rawQuery 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_rawQuery 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_rawReturns 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_rawReturns 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)
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.
FAQs
Compact Python library for interacting with Ankr's Advanced APIs.
We found that ankr-sdk demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

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.

Security News
OWASP’s 2025 Top 10 introduces Software Supply Chain Failures as a new category, reflecting rising concern over dependency and build system risks.

Research
/Security News
Socket researchers discovered nine malicious NuGet packages that use time-delayed payloads to crash applications and corrupt industrial control systems.

Security News
Socket CTO Ahmad Nassri discusses why supply chain attacks now target developer machines and what AI means for the future of enterprise security.