Compact library for interacting with Ankr APIs.
Compact JavaScript library for interacting with Ankr's Advanced APIs.
#### 1. Install the package from npm
``bashwith npm
npm install @ankr.com/ankr.js
#### 2. Initialize the provider
_Note: to use Advanced API for free starting from 29.05.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
AnkrProvider constructor.`javascript
import { AnkrProvider } from '@ankr.com/ankr.js';const provider = new AnkrProvider('YOUR_ENDPOINT');
`#### 3. Use the provider and call one of the supported methods
`javascript
await provider.getNFTsByOwner({
blockchain: 'eth',
walletAddress: '0x0E11A192d574b342C51be9e306694C41547185DD',
});
`Supported chains
ankr.js 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"
- Stellar: "stellar"
- Linea: "linea"
- Xai: "xai"
- Telos: "telos"
- Xlayer: "xlayer"Testnet
- Ethereum Sepolia:
"eth_sepolia"
- Ethereum Holesky: "eth_holesky"
- Avalanche Fuji: "avalanche_fuji"
- Polygon Amoy: "polygon_amoy"
- Optimism Sepolia: "optimism_sepolia"
- Base Sepolia: "base_sepolia"
- Story Aeneid Testnet: "story_aeneid_testnet"Appchain Testnet
- Neura Devnet
"neura_devnet"
- Neura Testnet "neura_testnet_v1"
- Incentiv Devnet "incentiv_devnet_v3"
- Incentiv Testnet "incentiv_testnet"Available methods
ankr.js supports the following methods:Early Access
getTokenPriceHistoryToken API
explainTokenPrice
- getAccountBalance
- getCurrencies
- getTokenHolders
- getTokenHoldersCount
- getTokenPrice
- getTokenTransfersNFT API
getNFTsByOwner
- getNFTMetadata
- getNFTHolders
- getNftTransfersQuery API
getLogs
- getBlocks
- getTransactionsByHash
- getTransactionsByAddress
- getBlockchainStats
- getInteractions---
Usage
####
getLogsGet logs matching the filter.
`javascript
const logs = async () => {
return await provider.getLogs({
blockchain: 'eth',
fromBlock: 1181739,
toBlock: 1181739,
topics: [
[],
['0x000000000000000000000000feb92d30bf01ff9a1901666c5573532bfa07eeec'],
],
address: '0x3589d05a1ec4af9f65b0e5554e645707775ee43c',
decodeLogs: false,
});
};
`####
getBlocksQuery data about blocks within a specified range.
`javascript
const blocks = async () => {
return await provider.getBlocks({
blockchain: 'bsc',
fromBlock: 100,
toBlock: 200,
});
};
`####
getTransactionsByHashQuery data about transaction(s) by the transaction hash.
`javascript
const transactions = async () => {
return await provider.getTransactionsByHash({
transactionHash:
'0x82c13aaac6f0b6471afb94a3a64ae89d45baa3608ad397621dbb0d847f51196f',
decodeTxData: true,
});
};
`####
getTransactionsByAddressQuery data about transactions of specified addresses.
`javascript
const transactions = async () => {
return await provider.getTransactionsByAddress({
blockchain: 'bsc',
fromBlock: 23593283,
toBlock: 23593283,
address: ['0x97242e3315c7ece760dc7f83a7dd8af6659f8c4c'],
pageToken: '',
pageSize: 10,
descOrder: true,
includeLogs: true,
});
};
`####
getAccountBalanceGet the coin and token balances of a wallet.
`javascript
const balances = async () => {
return await provider.getAccountBalance({
blockchain: 'eth',
walletAddress: '0xfa9019df60d3c710d7d583b2d69e18d412257617',
});
};
`####
getNFTsByOwnerGet data about all the NFTs (collectibles) owned by a wallet.
``javascript
const nfts = async () => {
return await provider.getNFTsByOwner({
blockchain: 'eth',
walletAddress: '0x0E11A192d574b342C51be9e306694C41547185DD',
filter: [
{ '0x700b4b9f39bb1faf5d0d16a20488f2733550bff4': [] },
{ '0xd8682bfa6918b0174f287b888e765b9a1b4dc9c3': ['8937'] },
],
});
};
``####
getNFTMetadataGet NFT's contract metadata.
``javascript
const nftsMetadata = async () => {
return await provider.getNFTMetadata({
blockchain: 'avalanche',
contractAddress: '0x8d01c8ee82e581e55c02117a676b5bbd4734fabb',
tokenId: '23240',
forceFetch: false
});
};
``####
getNFTHoldersGet NFT's holders.
``javascript
const nftsHolders = async () => {
return await provider.getNFTHolders({
blockchain: 'arbitrum',
contractAddress: '0xc36442b4a4522e871399cd717abdd847ab11fe88',
pageSize: 1000,
pageToken: '',
});
};
``####
getNftTransfersGet NFT Transfers of specified address.
``javascript
const nftTransfers = async () => {
return await provider.getNftTransfers({
blockchain: ['eth', 'bsc'],
address: ['0xd8da6bf26964af9d7eed9e03e53415d37aa96045'],
fromTimestamp: 1672563107,
toTimestamp: 1672563107,
});
};
``####
getTokenHoldersGet the list of token holders for a given contract address.
`javascript
const tokenHolders = async () => {
return await provider.getTokenHolders({
blockchain: 'eth',
contractAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7',
});
};
`####
getTokenHoldersCountGet current and historical data about the number of token holders for a given contract address.
`javascript
const tokenHoldersCount = async () => {
return await provider.getTokenHoldersCount({
blockchain: 'eth',
contractAddress: '0xdac17f958d2ee523a2206206994597c13d831ec7',
});
};
`####
getCurrenciesGet a list of supported currencies for a given blockchain.
`javascript
const currencies = async () => {
return await provider.getCurrencies({ blockchain: 'fantom' });
};
`####
getTokenPriceHistoryGet a list of history of the price for the given contract to a given timestamp.
`javascript
const tokenPriceHistory = async () => {
return await provider.getTokenPriceHistory({
blockchain: 'eth',
contractAddress: '0x50327c6c5a14dcade707abad2e27eb517df87ab5',
toTimestamp: 1696970653,
interval: 100,
limit: 10,
});
};
`####
explainTokenPriceGet a list of tokens and pools explaining how the price is calculated.
`javascript
const tokenPriceExplanation = async () => {
return await provider.explainTokenPrice({
blockchain: 'eth',
tokenAddress: '0x8290333cef9e6d528dd5618fb97a76f268f3edd4',
blockHeight: 17463534,
});
};
`####
getTokenPriceGet token price by contract.
`javascript
const tokenPrice = async () => {
return await provider.getTokenPrice({
blockchain: 'eth',
contractAddress: '',
});
};
`
####
getTokenTransfersGet token transfers of specified addresses.
`javascript
const tokenTransfers = async () => {
return await provider.getTokenTransfers({
blockchain: 'eth',
address: ['0xf16e9b0d03470827a95cdfd0cb8a8a3b46969b91'],
fromTimestamp: 1674441035,
toTimestamp: 1674441035,
pageSize: 1,
descOrder: true
});
};
` ####
getBlockchainStatsReturns blockchain stats (num of txs, etc).
`javascript
const blockchainStats = async () => {
return await provider.getBlockchainStats({});
};
` ####
getInteractionsReturns on which chain address was interacting.
`javascript
const interactions = async () => {
return await provider.getInteractions({
address: '0xF977814e90dA44bFA03b6295A0616a897441aceC',
});
};
``Ankr is offering _free_ access to Advanced API, however you have to register on Ankr platform to access it.
Get your individual endpoint here https://www.ankr.com/rpc/advanced-api.