The explanation for what Compute Units are and how we use them.
Compute units are a measure of the total computational resources your apps are using on Alchemy. You can think of this as how you would pay Amazon for compute usage on AWS. Some queries are lightweight and fast to run (e.g., eth_blockNumber) and others can be more intense (e.g., large eth_getLogs queries). Each method is assigned a quantity of compute units, derived from global average durations of each method.
We're obsessed with providing the most developer-friendly experience across our platform, and this doesn't stop at pricing. Pricing on compute units allows us to provide developers with the most fair and transparent pricing possible. No more over-paying for simple requests, you only pay for what you use, period.
Pricing Plans
Raw Method Costs for EVM Chains (Ethereum, Polygon, Optimism, Arbitrum)
Method | CU |
---|---|
get_nftMetadata |
|
getContractMetadata |
|
isSpamContracts |
|
getSpamContracts |
|
getFloorPrice |
|
get_nfts |
|
getNFTsForCollection |
|
getOwnersForToken |
|
getOwnersForCollection |
|
reingestContract |
|
net_version | 0 |
eth_chainId | 0 |
eth_syncing | 0 |
eth_protocolVersion | 0 |
net_listening | 0 |
eth_uninstallFilter | 10 |
eth_accounts | 10 |
eth_blockNumber | 10 |
eth_subscribe | 10 |
eth_unsubscribe | 10 |
eth_feeHistory | 10 |
eth_maxPriorityFeePerGas | 10 |
eth_createAccessList | 10 |
bor_getAuthor | 10 |
bor_getCurrentProposer | 10 |
bor_getCurrentValidators | 10 |
bor_getRootHash | 10 |
bor_getSignersAtHash | 10 |
eth_getTransactionReceipt | 15 |
eth_getUncleByBlockHashAndIndex | 15 |
eth_getUncleByBlockNumberAndIndex | 15 |
eth_getTransactionByBlockHashAndIndex | 15 |
eth_getTransactionByBlockNumberAndIndex | 15 |
eth_getUncleCountByBlockHash | 15 |
eth_getUncleCountByBlockNumber | 15 |
web3_clientVersion | 15 |
web3_sha3 | 15 |
alchemy_getTokenMetadata | 16 |
eth_getBlockByNumber | 16 |
eth_getStorageAt | 17 |
eth_getTransactionByHash | 17 |
trace_get | 17 |
alchemy_getTokenAllowance | 19 |
eth_gasPrice | 19 |
eth_getBalance | 19 |
eth_getCode | 19 |
eth_getFilterChanges | 20 |
eth_newBlockFilter | 20 |
eth_newFilter | 20 |
eth_newPendingTransactionFilter | 20 |
eth_getBlockTransactionCountByHash | 20 |
eth_getBlockTransactionCountByNumber | 20 |
eth_getProof | 21 |
eth_getBlockByHash | 21 |
trace_block | 24 |
erigon_forks | 24 |
erigon_getHeaderByHash | 24 |
erigon_getHeaderByNumber | 24 |
erigon_getLogsByHash | 24 |
erigon_issuance | 24 |
eth_getTransactionCount | 26 |
eth_call | 26 |
alchemy_getTokenBalances | 26 |
trace_transaction | 26 |
eth_getFilterLogs | 75 |
eth_getLogs | 75 |
trace_call | 75 |
trace_callMany | 75 |
trace_rawTransaction | 75 |
trace_filter | 75 |
eth_estimateGas | 87 |
alchemy_getAssetTransfers | 150 |
alchemy_getTransactionReceipts | 250 |
eth_sendRawTransaction | 250 |
eth_sendPrivateTransaction | 250 |
eth_cancelPrivateTransaction | 250 |
debug_traceTransaction | 309 |
parity_getBlockReceipts | 500 |
eth_getBlockReceipts | 500 |
trace_replayTransaction | 2983 |
trace_replayBlockTransactions | 2983 |
batch** | CU of method * # of times the method is called |
Raw Method Costs for Solana
Method | CU |
---|---|
getLeaderSchedule | 5 |
requestAirdrop | 5 |
getVoteAccounts | 5 |
getBlockCommitment | 5 |
getBlocksWithLimit | 5 |
getHealth | 5 |
getIdentity | 5 |
getLatestBlockhash | 7 |
getSlot | 7 |
getInflationRate | 8 |
getMaxRetransmitSlot | 8 |
getRecentPerformanceSamples | 8 |
getEpochInfo | 9 |
getTokenAccountBalance | 9 |
getBlockTime | 9 |
getHighestSnapshotSlot | 9 |
sendTransaction | 10 |
getEpochSchedule | 10 |
getStakeActivation | 10 |
getMaxShredInsertSlot | 10 |
getVersion | 10 |
isBlockhashValid | 10 |
getAccountInfo | 10 |
getFeeForMessage | 10 |
getFees | 10 |
getConfirmedBlocks | 10 |
getTokenLargestAccounts | 10 |
getInflationGovernor | 10 |
getSlotLeader | 11 |
getMultipleAccounts | 11 |
minimumLedgerSlot | 11 |
getBlockHeight | 11 |
simulateTransaction | 11 |
getFeeCalculatorForBlockhash | 11 |
getSignatureStatuses | 11 |
getRecentBlockhash | 12 |
getBlocks | 12 |
getTokenAccountsByOwner | 12 |
getMinimumBalanceForRentExemption | 12 |
getBalance | 12 |
getGenesisHash | 13 |
getBlockProduction | 13 |
getTokenSupply | 14 |
getTransactionCount | 16 |
getSlotLeaders | 16 |
getClusterNodes | 23 |
getSignaturesForAddress | 28 |
getFirstAvailableBlock | 33 |
getConfirmedTransaction | 35 |
getConfirmedSignaturesForAddress2 | 38 |
getTransaction | 59 |
getBlock | 66 |
getProgramAccounts | 117 |
getConfirmedBlock | 151 |
getInflationReward | 341 |
getSupply | 822 |
getLargestAccounts | 3000 |
batch** | CU of method * # of times the method is called |
*In an effort to help grow the NFT ecosystem and support developers, all NFT APIs are free to use for a limited time
**To view the batch request breakdown in the dashboard click on "raw request"&
WebSocket and Webhook Costs
Webhook and WebSocket subscriptions on Alchemy are priced based on bandwidth: the amount of data delivered as part of the subscription.
Each subscription type is priced identically, per byte:
Bandwidth | CU |
---|---|
1 byte | .04 |
On average, a typical webhook or WebSocket subscription event is about 1000 bytes, so would consume 40 compute units. Note that this can vary significantly based on the specific event delivered Subscription API Quickstart
(alchemy_newFullPendingTransactions subscription type has a much higher compute unit cost than others).
Auto-Scale Compute (Growth Tier Only)
Turning on autoscale gives you instant access to on-demand compute at volume discounts. No more worrying about your node going down due to a spike in traffic, or even waiting days for new nodes to sync. Autoscale gives you infinite scalability at affordable prices.
Monthly Compute Units (CU) | Price |
---|---|
400,000,000 | $49.00 |
Every 1,000,000 over 400M | $1.20 |
Throughput (CUPS)
Each application has reserved dedicated Throughput, measured in Compute Units per Second. Applications can greatly exceed their dedicated throughputs based off of elastic demand in our system.
Since each request is weighted differently, we base this on the total compute units used rather than the number of requests. For example, if you send one eth_blockNumber
(10 CUs), two eth_getLogs
(75 CUs), and two eth_call
(26 CUs) requests in the same second, you will have a total of 212 CUPS. _Note that even if your application limit is 200 CUPS, this throughput will likely be allowed still by the system
User | CUPS |
---|---|
Free | 330 |
Growth | 660 |
Enterprise | Custom |
If you are experiencing throughput errors, or want create a more robust and reliable experience for your users, we recommend implementing retries.