Alchemy

App · Cryptocurrency · 20 actions

Read 100+ blockchains through Alchemy's APIs with one key: native and token balances, transactions with their fees, event logs and read-only contract calls on Ethereum, Base, Arbitrum, Polygon and every other EVM chain Alchemy serves; a wallet's full transfer history and its tokens across networks priced in USD; the NFTs a wallet holds, an NFT's metadata and owner, a collection's details and floor price; and current and historical token prices. Every action is read-only, so no private key is ever asked for. Setup is one field: create a free app at dashboard.alchemy.com and paste its API key.

Actions

ActionWhat it does
Call contract (read-only)Run a read-only call against a contract and get what it returned.
Get blockGet a block by number, or the latest one, with its time, gas use, base fee and how many transactions it holds.
Get event logsRead the events a contract emitted, each with its block and time: every Transfer of a token, say, or every event of one kind from any contract.
Get gas priceRead what a transaction costs to send right now: the gas price the node suggests, the latest block's base fee, the priority fee that gets a transaction included promptly, and what a plain transfer would cost at those prices.
Get historical token pricesGet a token's USD price over time, by symbol or by contract address: daily points for the last 30 days unless told otherwise, hourly for up to 30 days, or every five minutes for up to a week.
Get native balanceGet an address's balance of the chain's own coin: ETH on Ethereum and its L2s, POL on Polygon, BNB on BNB Smart Chain.
Get NFT collectionGet an NFT collection's details from its contract: name, symbol, total supply, token standard, who deployed it and when, and its OpenSea profile with description, links, verification status and floor price.
Get NFT floor priceGet a collection's floor price on the marketplaces Alchemy watches (OpenSea on Ethereum, Arbitrum and Base), and the lowest current one.
Get NFT metadataGet one NFT by collection and token id: its name, description, image, traits and collection.
Get NFT ownersGet who holds one NFT.
Get NFTs owned by walletList the NFTs a wallet holds, each with its name, image, collection and floor price, spam left out.
Get token allowanceGet how much of a token a spender (an exchange, a bridge, a contract) is approved to move on a wallet's behalf.
Get token balanceGet how much of one ERC-20 token a wallet holds, in whole tokens as well as the exact raw figure, together with the token's name, symbol and decimals.
Get token metadataGet an ERC-20 token's name, symbol, decimals and logo from its contract address.
Get token prices by addressGet the current USD price of up to 25 tokens by contract address on one network, for tokens whose symbol is ambiguous or unknown.
Get token prices by symbolGet the current USD price of up to 25 tokens by ticker symbol: ETH, BTC, SOL, USDC and so on.
Get transactionGet a transaction by hash together with its receipt: whether it succeeded, when it landed, who sent what to whom, and the fee it paid.
Get transfer historyList the transfers into or out of an address: the chain's own coin, ERC-20 tokens, and ERC-721 and ERC-1155 NFTs, newest first, each with its amount, asset and time.
Get wallet tokensGet every token a wallet holds across up to five networks at once, each with its balance, current USD price and what the holding is worth, plus the wallet's total.
List NFTs in collectionList the NFTs a collection contains, in token id order, each with its name, image and traits.

Call contract (read-only)

Run a read-only call against a contract and get what it returned. Nothing is signed or sent and no gas is paid: this is how a view function such as balanceOf, totalSupply or ownerOf is read. The answer is ABI-encoded hex; a single number or address also comes back decoded.

Inputs

Contract addresstotextRequired
The contract to call.
Call datadatatextRequired
The ABI-encoded function call, as hex: the four-byte selector followed by the arguments. For balanceOf that is 0x70a08231 followed by the address padded to 32 bytes.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.
From addressfrom_addresstext
The address the call should appear to come from, for functions whose answer depends on the caller. Optional.
Blockblocktext
The block to read at: a block number, or 'latest', 'safe', 'finalized', 'earliest' or 'pending'. Leave blank for the latest block.Default: latest.

Outputs

blocktext
Block it was read at
datatext
Call data sent
networktext
Network the answer came from, e.g. eth-mainnet
resulttext
What the contract returned, ABI-encoded hex
result_addresstext
The result read as an address, when it is one
result_integertext
The result read as one unsigned integer, as a decimal string, when it is 32 bytes or fewer
totext
Contract called
Example output
{
  "block": "latest",
  "data": "0x70a08231000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045",
  "network": "eth-mainnet",
  "result": "0x00000000000000000000000000000000000000000000000000000004a817c800",
  "result_address": null,
  "result_integer": "20000000000",
  "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
}

Get block

Get a block by number, or the latest one, with its time, gas use, base fee and how many transactions it holds. The natural first step of a workflow that watches a chain: the block number it returns is what the block-ranged actions take.

Inputs

Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.
Blockblocktext
The block to read at: a block number, or 'latest', 'safe', 'finalized', 'earliest' or 'pending'. Leave blank for the latest block.Default: latest.
Include transaction hashesinclude_transactionstrue/false
Also list the hash of every transaction in the block. A busy Ethereum block holds a couple of hundred, so they are left out unless asked for.Default: false.

Outputs

base_fee_per_gas_gweinumber
Base fee per gas in gwei
base_fee_per_gas_weitext
Base fee per gas in wei, exact, as a string
blocktext
What was asked for: a tag, or the number in hex
block_hashtext
Block hash
block_numbernumber
Block number
gas_limitnumber
Gas the block could hold
gas_usednumber
Gas the block used
gas_used_percentnumber
How full the block was
minertext
Address of the validator that built the block
networktext
Network the answer came from, e.g. eth-mainnet
parent_hashtext
Previous block's hash
size_bytesnumber
Block size in bytes
timestampnumber
Block time as seconds since the Unix epoch
timestamp_isotext
Block time as ISO 8601 UTC
transaction_countnumber
Transactions in the block
transaction_hasheslist
Their hashes, when asked for
Example output
{
  "base_fee_per_gas_gwei": 0.412345678,
  "base_fee_per_gas_wei": "412345678",
  "block": "latest",
  "block_hash": "0x5c1e6e7f2d9a3b4c8e1f0a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
  "block_number": 23491027,
  "gas_limit": 36000000,
  "gas_used": 17842311,
  "gas_used_percent": 49.56,
  "miner": "0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5",
  "network": "eth-mainnet",
  "parent_hash": "0x3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b",
  "size_bytes": 94211,
  "timestamp": 1791283211,
  "timestamp_iso": "2026-10-06T10:40:11+00:00",
  "transaction_count": 187,
  "transaction_hashes": []
}

Get event logs

Read the events a contract emitted, each with its block and time: every Transfer of a token, say, or every event of one kind from any contract. Given no block range it reads the last ten blocks, which suits a workflow on a schedule. Topic 0 is the event's signature hash (which event); topics 1-3 are its indexed arguments, and an address given as one is padded the way logs store it.

Inputs

Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.
Contract addressaddresstext
The contract whose events to read. Leave blank to match the topics across every contract.
Topicstopicslist
Up to four topic filters, in order. Each is a 32-byte topic, an address (which is padded for you), or blank to match anything in that position. Topic 0 is the event signature hash; the ERC-20 and ERC-721 Transfer event is 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef.
From blockfrom_blocktext
First block to read, as a number. Leave blank to read the last few blocks instead (see 'Last blocks').
To blockto_blocktext
Last block to read, as a number or 'latest'. Defaults to the latest block.
Last blockslast_blocksnumber
When no 'From block' is given, how many of the most recent blocks to read. Defaults to 10, the most Alchemy's free plan allows per query on the busy chains; paid plans allow more.From 1 to 10000. Default: 10.

Outputs

addresstext
Contract the logs were read from, or null for all
block_countnumber
Blocks covered
countnumber
Number of rows returned
from_blocknumber
First block read
logslist
The matching events, oldest first
networktext
Network the answer came from, e.g. eth-mainnet
to_blocknumber
Last block read
Example output
{
  "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
  "block_count": 10,
  "count": 1,
  "from_block": 23491018,
  "logs": [
    {
      "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "block_hash": "0x5c1e6e7f2d9a3b4c8e1f0a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
      "block_number": 23491027,
      "data": "0x000000000000000000000000000000000000000000000000000000000ee6b280",
      "event_signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
      "log_index": 245,
      "removed": false,
      "timestamp": 1791283211,
      "timestamp_iso": "2026-10-06T10:40:11+00:00",
      "topics": [
        "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
        "0x00000000000000000000000028c6c06298d514db089934071355e5743bf21d60",
        "0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045"
      ],
      "transaction_hash": "0x9b1fc1dd4a1b0a2c6d30e9ab7c5e6f8d3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d",
      "transaction_index": 42
    }
  ],
  "network": "eth-mainnet",
  "to_block": 23491027
}

Get gas price

Read what a transaction costs to send right now: the gas price the node suggests, the latest block's base fee, the priority fee that gets a transaction included promptly, and what a plain transfer would cost at those prices. The guard for a workflow that waits for gas to be cheap.

Inputs

Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.

Outputs

base_fee_per_gas_gweinumber
Latest block's base fee in gwei
base_fee_per_gas_weitext
Latest block's base fee in wei, exact, as a string
block_numbernumber
Latest block, which the base fee belongs to
gas_price_gweinumber
Suggested gas price in gwei
gas_price_weitext
Suggested gas price in wei, exact, as a string
max_priority_fee_per_gas_gweinumber
Suggested priority fee (tip) in gwei
max_priority_fee_per_gas_weitext
Suggested priority fee (tip) in wei, exact, as a string
networktext
Network the answer came from, e.g. eth-mainnet
symboltext
The chain's own coin, which fees are paid in
transfer_feenumber
Cost of a plain transfer (21,000 gas) in whole coins (ETH, POL, BNB...)
transfer_fee_stringtext
Cost of a plain transfer (21,000 gas) in whole coins as an exact decimal string
transfer_fee_weitext
Cost of a plain transfer (21,000 gas) in wei, exact, as a string
Example output
{
  "base_fee_per_gas_gwei": 0.412345678,
  "base_fee_per_gas_wei": "412345678",
  "block_number": 23491027,
  "gas_price_gwei": 0.512345678,
  "gas_price_wei": "512345678",
  "max_priority_fee_per_gas_gwei": 0.1,
  "max_priority_fee_per_gas_wei": "100000000",
  "network": "eth-mainnet",
  "symbol": "ETH",
  "transfer_fee": 1.0759259238e-05,
  "transfer_fee_string": "0.000010759259238",
  "transfer_fee_wei": "10759259238000"
}

Get historical token prices

Get a token's USD price over time, by symbol or by contract address: daily points for the last 30 days unless told otherwise, hourly for up to 30 days, or every five minutes for up to a week. The first, last, lowest and highest prices and the change over the window come worked out.

Inputs

Symbolsymboltext
The token's ticker symbol, such as ETH. Give this or a token contract, not both.
Token contract addresstoken_contracttext
The token's contract address, with its network, instead of a symbol.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.
Intervalintervaltext
How far apart the price points are. Daily by default.One of: 1d (Daily), 1h (Hourly), 5m (Every 5 minutes). Default: 1d.
Startstart_timedate and time
Start of the window. Leave blank for 30 days before the end (daily), 7 days (hourly) or 1 day (five-minute).
Endend_timedate and time
End of the window. Leave blank for now.
Include market datainclude_market_datatrue/false
Also return market cap and 24-hour volume at each point.Default: false.

Outputs

change_percentnumber
Change from first to last point, in percent
countnumber
Number of rows returned
currencytext
'usd'
end_timetext
Window end (ISO 8601)
first_price_usdnumber
First point's price
highest_price_usdnumber
Highest price
intervaltext
'5m', '1h' or '1d'
last_price_usdnumber
Last point's price
lowest_price_usdnumber
Lowest price
networktext
Network, when asked for by address
priceslist
Price points, oldest first
start_timetext
Window start (ISO 8601)
symboltext
Symbol, when known
token_contracttext
Contract, when asked for by address
Example output
{
  "change_percent": 2.4,
  "count": 3,
  "currency": "usd",
  "end_time": "2026-10-06T10:40:11Z",
  "first_price_usd": 1912.55,
  "highest_price_usd": 1958.4,
  "interval": "1d",
  "last_price_usd": 1958.4,
  "lowest_price_usd": 1912.55,
  "network": null,
  "prices": [
    {
      "market_cap_usd": null,
      "price_string": "1912.55",
      "price_usd": 1912.55,
      "timestamp": "2026-10-04T00:00:00Z",
      "total_volume_usd": null
    },
    {
      "market_cap_usd": null,
      "price_string": "1934.1",
      "price_usd": 1934.1,
      "timestamp": "2026-10-05T00:00:00Z",
      "total_volume_usd": null
    },
    {
      "market_cap_usd": null,
      "price_string": "1958.4",
      "price_usd": 1958.4,
      "timestamp": "2026-10-06T00:00:00Z",
      "total_volume_usd": null
    }
  ],
  "start_time": "2026-10-03T10:40:11Z",
  "symbol": "ETH",
  "token_contract": null
}

Get native balance

Get an address's balance of the chain's own coin: ETH on Ethereum and its L2s, POL on Polygon, BNB on BNB Smart Chain. Returns the exact wei figure and the same amount in whole coins. An address that has never been used reads as zero.

Inputs

AddressaddresstextRequired
The wallet or contract address to read.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.
Blockblocktext
The block to read at: a block number, or 'latest', 'safe', 'finalized', 'earliest' or 'pending'. Leave blank for the latest block.Default: latest.

Outputs

addresstext
Address the balance is for
balancenumber
Balance in whole coins (ETH, POL, BNB...)
balance_stringtext
Balance in whole coins as an exact decimal string
balance_weitext
Balance in wei, exact, as a string
blocktext
Block it was read at
networktext
Network the answer came from, e.g. eth-mainnet
symboltext
The coin, e.g. 'ETH'
Example output
{
  "address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
  "balance": 4.512345678901235,
  "balance_string": "4.512345678901234567",
  "balance_wei": "4512345678901234567",
  "block": "latest",
  "network": "eth-mainnet",
  "symbol": "ETH"
}

Get NFT collection

Get an NFT collection's details from its contract: name, symbol, total supply, token standard, who deployed it and when, and its OpenSea profile with description, links, verification status and floor price.

Inputs

Collection contract addresscontract_addresstextRequired
The NFT collection's contract address, for example 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d for Bored Ape Yacht Club.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.

Outputs

banner_image_urltext
Banner image
collection_nametext
Name on OpenSea
collection_slugtext
OpenSea slug
contract_addresstext
The contract
deployed_block_numbernumber
Block it was deployed in
deployertext
Address that deployed it
descriptiontext
OpenSea description
discord_urltext
Discord invite
external_urltext
Project website
floor_price_ethnumber
OpenSea floor price in ETH
image_urltext
Collection image
nametext
Contract name
networktext
Network the answer came from, e.g. eth-mainnet
symboltext
Contract symbol
token_typetext
'ERC721' or 'ERC1155'
total_supplynumber
Tokens minted
twitter_usernametext
Twitter handle
verifiedtrue/false
Whether OpenSea has verified the collection
Example output
{
  "banner_image_url": "https://i.seadn.io/gae/i5dYZRkVCUK97bfprQ3WXyrT9BnLSZtVKGJlKQ919uaUB0sxbngVCioaiyu9r6snqfi2aaTyIvv6DHm4m2R3y7hMajbsv14pSZK8mhs",
  "collection_name": "Bored Ape Yacht Club",
  "collection_slug": "boredapeyachtclub",
  "contract_address": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",
  "deployed_block_number": 12287507,
  "deployer": "0xaba7161a7fb69c88e16ed9f455ce62b791ee4d03",
  "description": "The Bored Ape Yacht Club is a collection of 10,000 unique Bored Ape NFTs.",
  "discord_url": "https://discord.gg/3P5K3dzgdB",
  "external_url": "https://boredapeyachtclub.com",
  "floor_price_eth": 10.49,
  "image_url": "https://i.seadn.io/gae/Ju9CkWtV-1Okvf45wo8UctR-M9He2PjILP0oOvxE89AyiPPGtrR3gysu1Zgy0hjd2xKIgjJJtWIc0ybj4Vd7wv8t3pxDGHoJBzDB",
  "name": "BoredApeYachtClub",
  "network": "eth-mainnet",
  "symbol": "BAYC",
  "token_type": "ERC721",
  "total_supply": 10000,
  "twitter_username": "BoredApeYC",
  "verified": true
}

Get NFT floor price

Get a collection's floor price on the marketplaces Alchemy watches (OpenSea on Ethereum, Arbitrum and Base), and the lowest current one. Alchemy stopped refreshing LooksRare in early 2025: its old price is still listed, with when it was read, but a price read more than a week ago is never picked as the floor.

Inputs

Collection contract addresscontract_addresstextRequired
The NFT collection's contract address, for example 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d for Bored Ape Yacht Club.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.

Outputs

collection_urltext
The collection's page on that marketplace
contract_addresstext
The collection
currencytext
Its currency, e.g. 'ETH'
floor_pricenumber
Lowest floor read in the last week across the marketplaces, or null
marketplacetext
Marketplace with that floor
marketplaceslist
Every marketplace's reading
networktext
Network the answer came from, e.g. eth-mainnet
Example output
{
  "collection_url": "https://opensea.io/collection/boredapeyachtclub",
  "contract_address": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",
  "currency": "ETH",
  "floor_price": 10.49,
  "marketplace": "OpenSea",
  "marketplaces": [
    {
      "collection_url": "https://opensea.io/collection/boredapeyachtclub",
      "currency": "ETH",
      "error": null,
      "floor_price": 10.49,
      "marketplace": "OpenSea",
      "retrieved_at": "2026-10-06T10:35:02.144Z"
    },
    {
      "collection_url": "https://looksrare.org/collections/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",
      "currency": "ETH",
      "error": null,
      "floor_price": 69.0,
      "marketplace": "LooksRare",
      "retrieved_at": "2025-01-13T03:42:07.872Z"
    }
  ],
  "network": "eth-mainnet"
}

Get NFT metadata

Get one NFT by collection and token id: its name, description, image, traits and collection. Get NFT owners says who holds it.

Inputs

Collection contract addresscontract_addresstextRequired
The NFT collection's contract address, for example 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d for Bored Ape Yacht Club.
Token IDtoken_idtextRequired
The NFT's token id within the collection, as a number such as 1234.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.
Refresh metadatarefreshtrue/false
Make Alchemy re-read the metadata from its source instead of serving its cached copy. Slower; use it when an NFT's image or traits have just changed.Default: false.

Outputs

acquired_attext
When the holder received it (ISO 8601), where known
attributeslist
The NFT's traits
balancenumber
How many the holder owns (always 1 for ERC-721)
collection_nametext
Name of the collection
collection_slugtext
The collection's OpenSea slug, when it has one
collection_symboltext
Symbol of the collection's contract
contract_addresstext
Contract of the collection the NFT belongs to
descriptiontext
Description from its metadata
external_urltext
Link the metadata points to
floor_price_ethnumber
The collection's OpenSea floor price in ETH, if known
image_urltext
Image, served from Alchemy's cache where it has one
is_spamtrue/false
Whether Alchemy classifies the collection as spam
last_updated_attext
When Alchemy last refreshed the metadata (ISO 8601)
nametext
Name from the NFT's metadata
networktext
Network the answer came from, e.g. eth-mainnet
thumbnail_urltext
A smaller copy of the image
token_idtext
Token id within the collection
token_typetext
'ERC721' or 'ERC1155'
token_uritext
Where the metadata lives
Example output
{
  "acquired_at": null,
  "attributes": [
    {
      "trait_type": "Mouth",
      "value": "Grin"
    },
    {
      "trait_type": "Clothes",
      "value": "Vietnam Jacket"
    },
    {
      "trait_type": "Background",
      "value": "Orange"
    },
    {
      "trait_type": "Eyes",
      "value": "Blue Beams"
    },
    {
      "trait_type": "Fur",
      "value": "Robot"
    }
  ],
  "balance": null,
  "collection_name": "Bored Ape Yacht Club",
  "collection_slug": "boredapeyachtclub",
  "collection_symbol": "BAYC",
  "contract_address": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",
  "description": null,
  "external_url": null,
  "floor_price_eth": 10.49,
  "image_url": "https://nft-cdn.alchemy.com/eth-mainnet/9c0b7f0b1a1b3a1a2c4d5e6f7a8b9c0d",
  "is_spam": false,
  "last_updated_at": "2026-09-30T08:15:42.117Z",
  "name": "Bored Ape #1",
  "network": "eth-mainnet",
  "thumbnail_url": "https://res.cloudinary.com/alchemyapi/image/upload/thumbnailv2/eth-mainnet/9c0b7f0b1a1b3a1a2c4d5e6f7a8b9c0d",
  "token_id": "1",
  "token_type": "ERC721",
  "token_uri": "https://ipfs.io/ipfs/QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq/1"
}

Get NFT owners

Get who holds one NFT. An ERC-721 token has one owner; an ERC-1155 token can have many, and all are listed.

Inputs

Collection contract addresscontract_addresstextRequired
The NFT collection's contract address, for example 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d for Bored Ape Yacht Club.
Token IDtoken_idtextRequired
The NFT's token id within the collection, as a number such as 1234.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.

Outputs

contract_addresstext
The collection
countnumber
Number of holders
networktext
Network the answer came from, e.g. eth-mainnet
ownertext
The first holder, or null
ownerslist
Every holder's address
token_idtext
The token
Example output
{
  "contract_address": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",
  "count": 1,
  "network": "eth-mainnet",
  "owner": "0x46efbaedc92067e6d60e84ed6395099723252496",
  "owners": [
    "0x46efbaedc92067e6d60e84ed6395099723252496"
  ],
  "token_id": "1"
}

Get NFTs owned by wallet

List the NFTs a wallet holds, each with its name, image, collection and floor price, spam left out. Narrow it to one or more collections, and page through a large wallet with the page key. Alchemy filters spam itself only on paid plans; on the free plan it is taken out of each page here, so a page can hold fewer NFTs than the page size, or none, with more still to come.

Inputs

OwnerownertextRequired
The wallet address, or an ENS name such as vitalik.eth.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.
Collectionscontract_addresseslist
Only NFTs from these collections, by contract address (up to 45). Leave blank for every collection.
Exclude spamexclude_spamtrue/false
Leave out collections Alchemy classifies as spam: airdropped junk most wallets are full of. On by default, and on every plan: where the plan lacks Alchemy's own filter, spam is dropped from each page after it arrives.Default: true.
Newest firstnewest_firsttrue/false
Order by when the wallet received each NFT, most recent first, instead of by collection. Alchemy does not sort this way for every network and app; where it does not, the step fails rather than list the NFTs in the wrong order.Default: false.
Page sizepage_sizenumber
How many NFTs per page, from 1 to 100. Defaults to 25.From 1 to 100. Default: 25.
Page keypage_keytext
The 'page_key' a previous run of this step returned, to fetch the next page. Leave blank for the first page.

Outputs

countnumber
Number of rows returned
has_moretrue/false
Whether another page follows this one
networktext
Network the answer came from, e.g. eth-mainnet
nftslist
The NFTs on this page
ownertext
Owner as given
page_keytext
Pass as 'page_key' to fetch the next page; null on the last one
total_countnumber
NFTs the wallet holds in all, across every page; spam included where the plan leaves spam to be dropped here
Example output
{
  "count": 1,
  "has_more": false,
  "network": "eth-mainnet",
  "nfts": [
    {
      "acquired_at": "2021-05-01T01:12:10Z",
      "attributes": [
        {
          "trait_type": "Mouth",
          "value": "Grin"
        },
        {
          "trait_type": "Clothes",
          "value": "Vietnam Jacket"
        },
        {
          "trait_type": "Background",
          "value": "Orange"
        },
        {
          "trait_type": "Eyes",
          "value": "Blue Beams"
        },
        {
          "trait_type": "Fur",
          "value": "Robot"
        }
      ],
      "balance": 1,
      "collection_name": "Bored Ape Yacht Club",
      "collection_slug": "boredapeyachtclub",
      "collection_symbol": "BAYC",
      "contract_address": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",
      "description": null,
      "external_url": null,
      "floor_price_eth": 10.49,
      "image_url": "https://nft-cdn.alchemy.com/eth-mainnet/9c0b7f0b1a1b3a1a2c4d5e6f7a8b9c0d",
      "is_spam": false,
      "last_updated_at": "2026-09-30T08:15:42.117Z",
      "name": "Bored Ape #1",
      "network": "eth-mainnet",
      "thumbnail_url": "https://res.cloudinary.com/alchemyapi/image/upload/thumbnailv2/eth-mainnet/9c0b7f0b1a1b3a1a2c4d5e6f7a8b9c0d",
      "token_id": "1",
      "token_type": "ERC721",
      "token_uri": "https://ipfs.io/ipfs/QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq/1"
    }
  ],
  "owner": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
  "page_key": null,
  "total_count": 1
}

Get token allowance

Get how much of a token a spender (an exchange, a bridge, a contract) is approved to move on a wallet's behalf. An unlimited approval is flagged as such rather than reported as a 78-digit number. Useful for auditing what a wallet has let contracts spend.

Inputs

Token contract addresstoken_contracttextRequired
The ERC-20 token's contract address, for example 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 for USDC on Ethereum.
Owner addressownertextRequired
The wallet that granted the approval.
Spender addressspendertextRequired
The address allowed to spend: a contract or a wallet.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.

Outputs

allowancenumber
Allowance in whole tokens, with the decimals applied
allowance_rawtext
Allowance in the token's smallest unit, exact
allowance_stringtext
Allowance in whole tokens as an exact decimal string
decimalsnumber
The token's decimals
has_allowancetrue/false
False when nothing is approved
is_unlimitedtrue/false
True for an approval of (near) the maximum amount
networktext
Network the answer came from, e.g. eth-mainnet
ownertext
Wallet that approved
spendertext
Address approved to spend
symboltext
The token's symbol
token_contracttext
The token
Example output
{
  "allowance": 500.0,
  "allowance_raw": "500000000",
  "allowance_string": "500",
  "decimals": 6,
  "has_allowance": true,
  "is_unlimited": false,
  "network": "eth-mainnet",
  "owner": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
  "spender": "0xef1c6e67703c7bd7107eed8303fbe6ec2554bf6b",
  "symbol": "USDC",
  "token_contract": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
}

Get token balance

Get how much of one ERC-20 token a wallet holds, in whole tokens as well as the exact raw figure, together with the token's name, symbol and decimals. The step behind 'how much USDC does this wallet have'.

Inputs

Wallet addressownertextRequired
The wallet whose balance to read.
Token contract addresstoken_contracttextRequired
The ERC-20 token's contract address, for example 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 for USDC on Ethereum.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.

Outputs

balancenumber
Balance in whole tokens, with the decimals applied
balance_rawtext
Balance in the token's smallest unit, exact
balance_stringtext
Balance in whole tokens as an exact decimal string
decimalsnumber
Decimal places the token uses, e.g. 6 for USDC
logotext
URL of the token's logo, or null
nametext
Token name, e.g. 'USD Coin'
networktext
Network the answer came from, e.g. eth-mainnet
ownertext
Wallet the balance is for
symboltext
Ticker symbol, e.g. 'USDC'
token_contracttext
The token
Example output
{
  "balance": 1250.45,
  "balance_raw": "1250450000",
  "balance_string": "1250.45",
  "decimals": 6,
  "logo": "https://static.alchemyapi.io/images/assets/3408.png",
  "name": "USD Coin",
  "network": "eth-mainnet",
  "owner": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
  "symbol": "USDC",
  "token_contract": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
}

Get token metadata

Get an ERC-20 token's name, symbol, decimals and logo from its contract address. The decimals are what turn a raw on-chain amount into a number a person reads.

Inputs

Token contract addresstoken_contracttextRequired
The ERC-20 token's contract address, for example 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 for USDC on Ethereum.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.

Outputs

decimalsnumber
Decimal places the token uses, e.g. 6 for USDC
is_knowntrue/false
False when the contract reports neither a name nor a symbol, which usually means it is not a token
logotext
URL of the token's logo, or null
nametext
Token name, e.g. 'USD Coin'
networktext
Network the answer came from, e.g. eth-mainnet
symboltext
Ticker symbol, e.g. 'USDC'
token_contracttext
The token
Example output
{
  "decimals": 6,
  "is_known": true,
  "logo": "https://static.alchemyapi.io/images/assets/3408.png",
  "name": "USD Coin",
  "network": "eth-mainnet",
  "symbol": "USDC",
  "token_contract": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
}

Get token prices by address

Get the current USD price of up to 25 tokens by contract address on one network, for tokens whose symbol is ambiguous or unknown. Returns one row per token plus an address-to-price lookup.

Inputs

Token contractsaddresseslistRequired
The tokens' contract addresses, up to 25.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.

Outputs

addresseslist
Contracts asked for
by_addressobject
Contract to USD price, for the tokens that have one
countnumber
Number of rows returned
networktext
Network the answer came from, e.g. eth-mainnet
priceslist
One row per token asked for
Example output
{
  "addresses": [
    "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "0xdac17f958d2ee523a2206206994597c13d831ec7"
  ],
  "by_address": {
    "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48": 1.0026,
    "0xdac17f958d2ee523a2206206994597c13d831ec7": 0.9998
  },
  "count": 2,
  "network": "eth-mainnet",
  "prices": [
    {
      "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "currency": "usd",
      "error": null,
      "last_updated_at": "2026-10-06T10:39:50Z",
      "network": "eth-mainnet",
      "price_usd": 1.0026
    },
    {
      "address": "0xdac17f958d2ee523a2206206994597c13d831ec7",
      "currency": "usd",
      "error": null,
      "last_updated_at": "2026-10-06T10:39:50Z",
      "network": "eth-mainnet",
      "price_usd": 0.9998
    }
  ]
}

Get token prices by symbol

Get the current USD price of up to 25 tokens by ticker symbol: ETH, BTC, SOL, USDC and so on. Returns one row per symbol plus a symbol-to-price lookup for the next step.

Inputs

SymbolssymbolslistRequired
The tokens' ticker symbols, up to 25.

Outputs

by_symbolobject
Symbol to USD price, for the tokens that have one
countnumber
Number of rows returned
priceslist
One row per token asked for
symbolslist
Symbols asked for
Example output
{
  "by_symbol": {
    "BTC": 64231.17,
    "ETH": 1958.4
  },
  "count": 2,
  "prices": [
    {
      "currency": "usd",
      "error": null,
      "last_updated_at": "2026-10-06T10:39:50Z",
      "price_usd": 1958.4,
      "symbol": "ETH"
    },
    {
      "currency": "usd",
      "error": null,
      "last_updated_at": "2026-10-06T10:39:50Z",
      "price_usd": 64231.17,
      "symbol": "BTC"
    }
  ],
  "symbols": [
    "ETH",
    "BTC"
  ]
}

Get transaction

Get a transaction by hash together with its receipt: whether it succeeded, when it landed, who sent what to whom, and the fee it paid. Use it to confirm a payment went through and for how much.

Inputs

Transaction hashtransaction_hashtextRequired
The 66-character transaction hash an explorer or 'Get transfer history' shows.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.

Outputs

block_hashtext
Hash of that block
block_numbernumber
Block it landed in
contract_addresstext
Contract it created, if it was a deployment
effective_gas_price_gweinumber
Gas price actually paid in gwei
effective_gas_price_weitext
Gas price actually paid in wei, exact, as a string
feenumber
Fee paid (gas used x effective gas price) in whole coins (ETH, POL, BNB...)
fee_stringtext
Fee paid (gas used x effective gas price) in whole coins as an exact decimal string
fee_weitext
Fee paid (gas used x effective gas price) in wei, exact, as a string
fromtext
Sender
gas_limitnumber
Gas limit set
gas_price_gweinumber
Gas price offered in gwei
gas_price_weitext
Gas price offered in wei, exact, as a string
gas_usednumber
Gas actually used
inputtext
The call data, as hex
is_contract_calltrue/false
Whether it carried call data
log_countnumber
Events it emitted
logslist
The events it emitted
max_fee_per_gas_gweinumber
Max fee per gas (EIP-1559) in gwei
max_fee_per_gas_weitext
Max fee per gas (EIP-1559) in wei, exact, as a string
max_priority_fee_per_gas_gweinumber
Max priority fee (EIP-1559) in gwei
max_priority_fee_per_gas_weitext
Max priority fee (EIP-1559) in wei, exact, as a string
method_idtext
First four bytes of the call data (which function)
networktext
Network the answer came from, e.g. eth-mainnet
noncenumber
Sender's nonce
pendingtrue/false
True while the transaction is not yet in a block
statustext
'succeeded', 'failed' or 'pending'
succeededtrue/false
Whether it ran without reverting; null while pending
symboltext
The coin the value is in
timestampnumber
Block time as seconds since the Unix epoch
timestamp_isotext
Block time as ISO 8601 UTC
totext
Recipient, or null when it created a contract
transaction_hashtext
The hash
transaction_indexnumber
Position in the block
typenumber
Transaction type: 0 legacy, 2 EIP-1559
valuenumber
Value sent in whole coins (ETH, POL, BNB...)
value_stringtext
Value sent in whole coins as an exact decimal string
value_weitext
Value sent in wei, exact, as a string
Example output
{
  "block_hash": "0x5c1e6e7f2d9a3b4c8e1f0a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
  "block_number": 23491027,
  "contract_address": null,
  "effective_gas_price_gwei": 0.512345678,
  "effective_gas_price_wei": "512345678",
  "fee": 2.4701722173414e-05,
  "fee_string": "0.000024701722173414",
  "fee_wei": "24701722173414",
  "from": "0x28c6c06298d514db089934071355e5743bf21d60",
  "gas_limit": 90000,
  "gas_price_gwei": 0.512345678,
  "gas_price_wei": "512345678",
  "gas_used": 48213,
  "input": "0xa9059cbb000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045000000000000000000000000000000000000000000000000000000000ee6b280",
  "is_contract_call": true,
  "log_count": 1,
  "logs": [
    {
      "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "block_hash": "0x5c1e6e7f2d9a3b4c8e1f0a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d7e8f9a0b1c2d",
      "block_number": 23491027,
      "data": "0x000000000000000000000000000000000000000000000000000000000ee6b280",
      "event_signature": "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
      "log_index": 245,
      "removed": false,
      "timestamp": 1791283211,
      "timestamp_iso": "2026-10-06T10:40:11+00:00",
      "topics": [
        "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef",
        "0x00000000000000000000000028c6c06298d514db089934071355e5743bf21d60",
        "0x000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045"
      ],
      "transaction_hash": "0x9b1fc1dd4a1b0a2c6d30e9ab7c5e6f8d3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d",
      "transaction_index": 42
    }
  ],
  "max_fee_per_gas_gwei": 0.9,
  "max_fee_per_gas_wei": "900000000",
  "max_priority_fee_per_gas_gwei": 0.1,
  "max_priority_fee_per_gas_wei": "100000000",
  "method_id": "0xa9059cbb",
  "network": "eth-mainnet",
  "nonce": 1849211,
  "pending": false,
  "status": "succeeded",
  "succeeded": true,
  "symbol": "ETH",
  "timestamp": 1791283211,
  "timestamp_iso": "2026-10-06T10:40:11+00:00",
  "to": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
  "transaction_hash": "0x9b1fc1dd4a1b0a2c6d30e9ab7c5e6f8d3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d",
  "transaction_index": 42,
  "type": 2,
  "value": 0.0,
  "value_string": "0",
  "value_wei": "0"
}

Get transfer history

List the transfers into or out of an address: the chain's own coin, ERC-20 tokens, and ERC-721 and ERC-1155 NFTs, newest first, each with its amount, asset and time. This is how a workflow watches a wallet or a token contract: filter by sender, recipient or token, and page through with the page key.

Inputs

Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.
To addressto_addresstext
Only transfers received by this address. Give this, 'From address', or a token contract, or any mix.
From addressfrom_addresstext
Only transfers sent by this address.
Transfer typescategoriestext
Which kinds of transfer to include. Defaults to the chain's own coin plus ERC-20, ERC-721 and ERC-1155 tokens. Internal transfers are only indexed on Ethereum and Polygon mainnet.One or more of: external (Native coin transfers), erc20 (ERC-20 token transfers), erc721 (ERC-721 NFT transfers), erc1155 (ERC-1155 NFT transfers), internal (Internal transfers (Ethereum and Polygon only)), specialnft (Special NFTs (CryptoPunks, CryptoKitties)). Default: ["external", "erc20", "erc721", "erc1155"].
Token contractscontract_addresseslist
Only transfers of these tokens, by contract address. Leave blank for every asset.
Max resultsmax_countnumber
How many transfers to return, from 1 to 1000. Defaults to 25.From 1 to 1000. Default: 25.
Orderordertext
Newest first unless told otherwise.One of: desc (Newest first), asc (Oldest first). Default: desc.
From blockfrom_blocktext
First block to search, as a number. Leave blank to search from the chain's beginning.
To blockto_blocktext
Last block to search, as a number or 'latest'. Defaults to the latest block.
Exclude zero-value transfersexclude_zero_valuetrue/false
Leave out transfers of nothing, which are mostly spam. On by default.Default: true.
Page keypage_keytext
The 'page_key' a previous run of this step returned, to fetch the next page. Leave blank for the first page.

Outputs

categorieslist
Transfer types searched
countnumber
Number of rows returned
from_addresstext
Sender filter used
has_moretrue/false
Whether another page follows this one
networktext
Network the answer came from, e.g. eth-mainnet
ordertext
'desc' or 'asc'
page_keytext
Pass as 'page_key' to fetch the next page; null on the last one
to_addresstext
Recipient filter used
transferslist
The transfers, in the order asked for
Example output
{
  "categories": [
    "external",
    "erc20",
    "erc721",
    "erc1155"
  ],
  "count": 1,
  "from_address": null,
  "has_more": false,
  "network": "eth-mainnet",
  "order": "desc",
  "page_key": null,
  "to_address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
  "transfers": [
    {
      "asset": "USDC",
      "block_number": 23491027,
      "category": "erc20",
      "decimals": 6,
      "erc1155": [],
      "from": "0x28c6c06298d514db089934071355e5743bf21d60",
      "raw_value": "250000000",
      "timestamp": 1791283211,
      "timestamp_iso": "2026-10-06T10:40:11.000Z",
      "to": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
      "token_contract": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "token_id": null,
      "transaction_hash": "0x9b1fc1dd4a1b0a2c6d30e9ab7c5e6f8d3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d",
      "unique_id": "0x9b1fc1dd4a1b0a2c6d30e9ab7c5e6f8d3a2b1c0d9e8f7a6b5c4d3e2f1a0b9c8d:log:245",
      "value": 250.0
    }
  ]
}

Get wallet tokens

Get every token a wallet holds across up to five networks at once, each with its balance, current USD price and what the holding is worth, plus the wallet's total. The one-step portfolio view: the chain's own coin and its ERC-20 tokens, most valuable first.

Inputs

Wallet addressaddresstextRequired
The wallet to read. The same address is read on every network chosen.
Networksnetworkstext
Which networks to read, up to 5. Ethereum Mainnet unless told otherwise.One or more of: eth-mainnet (Ethereum Mainnet), base-mainnet (Base), arb-mainnet (Arbitrum One), opt-mainnet (OP Mainnet), polygon-mainnet (Polygon PoS), bnb-mainnet (BNB Smart Chain), avax-mainnet (Avalanche C-Chain), zksync-mainnet (ZKsync Era), linea-mainnet (Linea), scroll-mainnet (Scroll), and 9 more. Default: ["eth-mainnet"].
Include the chain's own coininclude_nativetrue/false
Include ETH, POL, BNB and so on. On by default.Default: true.
Include ERC-20 tokensinclude_erc20true/false
Include the wallet's tokens. On by default.Default: true.
Include empty balancesinclude_zero_balancestrue/false
Also list tokens the wallet once held but holds none of now. Off by default.Default: false.
Page keypage_keytext
The 'page_key' a previous run of this step returned, to fetch the next page. Leave blank for the first page.

Outputs

addresstext
Wallet read
countnumber
Number of rows returned
has_moretrue/false
Whether another page follows this one
networkslist
Networks read
page_keytext
Pass as 'page_key' to fetch the next page; null on the last one
tokenslist
Holdings, most valuable first
total_value_usdnumber
What everything listed is worth in USD
Example output
{
  "address": "0xd8da6bf26964af9d7eed9e03e53415d37aa96045",
  "count": 2,
  "has_more": false,
  "networks": [
    "eth-mainnet"
  ],
  "page_key": null,
  "tokens": [
    {
      "balance": 4.512345678901235,
      "balance_raw": "4512345678901234567",
      "balance_string": "4.512345678901234567",
      "decimals": 18,
      "is_native": true,
      "logo": null,
      "name": "ETH",
      "network": "eth-mainnet",
      "price_updated_at": "2026-10-06T10:39:50Z",
      "price_usd": 1958.4,
      "symbol": "ETH",
      "token_address": null,
      "value_usd": 8836.98
    },
    {
      "balance": 1250.45,
      "balance_raw": "1250450000",
      "balance_string": "1250.45",
      "decimals": 6,
      "is_native": false,
      "logo": "https://static.alchemyapi.io/images/assets/3408.png",
      "name": "USD Coin",
      "network": "eth-mainnet",
      "price_updated_at": "2026-10-06T10:39:50Z",
      "price_usd": 1.0026,
      "symbol": "USDC",
      "token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
      "value_usd": 1253.7
    }
  ],
  "total_value_usd": 10090.68
}

List NFTs in collection

List the NFTs a collection contains, in token id order, each with its name, image and traits. Page through a large collection with the page key.

Inputs

Collection contract addresscontract_addresstextRequired
The NFT collection's contract address, for example 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d for Bored Ape Yacht Club.
Networknetworktext
Which chain to read. Ethereum Mainnet unless told otherwise. The list holds the networks most workflows use; any other network Alchemy serves can be typed in by its slug, such as 'sei-mainnet'. One key reaches every network enabled on its Alchemy app.Default: eth-mainnet.
Page sizelimitnumber
How many NFTs per page, from 1 to 100. Defaults to 25.From 1 to 100. Default: 25.
Page keypage_keytext
The 'page_key' a previous run of this step returned, to fetch the next page. Leave blank for the first page.

Outputs

contract_addresstext
The collection
countnumber
Number of rows returned
has_moretrue/false
Whether another page follows this one
networktext
Network the answer came from, e.g. eth-mainnet
nftslist
The NFTs on this page
page_keytext
Pass as 'page_key' to fetch the next page; null on the last one
Example output
{
  "contract_address": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",
  "count": 1,
  "has_more": true,
  "network": "eth-mainnet",
  "nfts": [
    {
      "acquired_at": null,
      "attributes": [
        {
          "trait_type": "Mouth",
          "value": "Grin"
        },
        {
          "trait_type": "Clothes",
          "value": "Vietnam Jacket"
        },
        {
          "trait_type": "Background",
          "value": "Orange"
        },
        {
          "trait_type": "Eyes",
          "value": "Blue Beams"
        },
        {
          "trait_type": "Fur",
          "value": "Robot"
        }
      ],
      "balance": null,
      "collection_name": "Bored Ape Yacht Club",
      "collection_slug": "boredapeyachtclub",
      "collection_symbol": "BAYC",
      "contract_address": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",
      "description": null,
      "external_url": null,
      "floor_price_eth": 10.49,
      "image_url": "https://nft-cdn.alchemy.com/eth-mainnet/9c0b7f0b1a1b3a1a2c4d5e6f7a8b9c0d",
      "is_spam": false,
      "last_updated_at": "2026-09-30T08:15:42.117Z",
      "name": "Bored Ape #1",
      "network": "eth-mainnet",
      "thumbnail_url": "https://res.cloudinary.com/alchemyapi/image/upload/thumbnailv2/eth-mainnet/9c0b7f0b1a1b3a1a2c4d5e6f7a8b9c0d",
      "token_id": "1",
      "token_type": "ERC721",
      "token_uri": "https://ipfs.io/ipfs/QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq/1"
    }
  ],
  "page_key": "0x0000000000000000000000000000000000000000000000000000000000000002"
}

On this page