Pricing: every method priced in public, pay as you go
Supported eth_call requests cost $1.50 per million before free credits; calculate the complete workload using current method weights and limits.
1 USD = 10,000,000 CU. Pay as you go with a minimum top-up of $0.01 in USDC / USDT / USDG. No subscriptions, no credit card; every method priced in public. Rejected requests are not billed.
Plans
Get started free
30,000,000 CU on sign-up. After your first billed call, each 30-day cycle ends with a top-up to 30,000,000 CU if your balance is below it (no rollover). 25 calls per second on average across all keys in your account. No credit card.
Pay as you go
Minimum top-up $0.01. Your first paid top-up removes the account-wide calls-per-second cap; each key is raised to at least 2,000 CU/s (burst 10,000 CU), and higher custom limits are kept. Remaining free credits stay.
Common methods (per 1M calls)
- eth_call $1.50
- eth_getLogs $3.00
- address balances $2.50
- daily DEX prices $1.50
Full method weight table
Sorted by CU, lowest first.
| Method | CU |
|---|---|
| eth_blockNumber | 1 |
| eth_chainId | 1 |
| eth_getBlockByNumber | 5 |
| eth_blobBaseFee | 10 |
| eth_feeHistory | 10 |
| eth_gasPrice | 10 |
| eth_getBalance | 10 |
| eth_getBlockByHash | 10 |
| eth_getBlockReceipts | 10 |
| eth_getBlockTransactionCountByHash | 10 |
| eth_getBlockTransactionCountByNumber | 10 |
| eth_getCode | 10 |
| eth_getHeaderByHash | 10 |
| eth_getHeaderByNumber | 10 |
| eth_getProof | 10 |
| eth_getRawTransactionByBlockHashAndIndex | 10 |
| eth_getRawTransactionByBlockNumberAndIndex | 10 |
| eth_getRawTransactionByHash | 10 |
| eth_getStorageAt | 10 |
| eth_getTransactionByBlockHashAndIndex | 10 |
| eth_getTransactionByBlockNumberAndIndex | 10 |
| eth_getTransactionByHash | 10 |
| eth_getTransactionCount | 10 |
| eth_getTransactionReceipt | 10 |
| eth_getUncleByBlockHashAndIndex | 10 |
| eth_getUncleByBlockNumberAndIndex | 10 |
| eth_getUncleCountByBlockHash | 10 |
| eth_getUncleCountByBlockNumber | 10 |
| eth_maxPriorityFeePerGas | 10 |
| eth_syncing | 10 |
| net_version | 10 |
| web3_clientVersion | 10 |
| web3_sha3 | 10 |
| eth_call | 15 |
| eth_createAccessList | 20 |
| eth_estimateGas | 20 |
| eth_simulateV1 | 20 |
| eth_getLogs | 30 |
| eth_sendRawTransaction | 30 |
| debug_traceBlockByHash | 100 |
| debug_traceBlockByNumber | 100 |
| debug_traceCall | 100 |
| debug_traceTransaction | 100 |
| trace_block | 100 |
| trace_call | 100 |
| trace_get | 100 |
| trace_replayTransaction | 100 |
| trace_transaction | 100 |
Data API operations
| Method | CU |
|---|---|
| data.chains | 1 |
| data.status_freshness | 1 |
| data.block | 5 |
| data.block_by_hash | 5 |
| data.nft | 5 |
| data.token | 5 |
| data.transaction | 5 |
| data.block_transactions | 10 |
| data.tokens_batch | 10 |
| data.dex_prices | 15 |
| data.stock | 15 |
| data.stocks | 15 |
| data.address_balances | 25 |
| data.address_transactions | 25 |
| data.address_transfers | 25 |
| data.dex_swaps | 25 |
| data.nfts_by_owner | 25 |
| data.token_holders | 25 |
| data.token_transfers | 25 |
| data.block_traces | 200 |
| data.transaction_trace | 200 |
Webhook push
CU weights from GET /v1/plans. Automatic retries are free.
Free addresses per account per UTC day: 1000
Free address allowance per account per UTC day, shared by all subscription groups regardless of plan. For each group, count its maximum address count while online during that day; allocate the allowance in ascending group ID order. The same address in two groups counts twice; the number of chains in a group does not multiply its address count. A group offline or deleted for the entire day contributes nothing. For each group, the remaining count after its share of the allowance is multiplied by the `push.address_day` CU weight in `method_weights`. The current configured allowance comes from the same pricing policy used for the address-day charge; it is not an account capacity limit or a separate allowance per group.
| Method | Billing unit | CU |
|---|---|---|
| push.address_day | Billable address-day | 33 |
| push.history | Successful history request | 25 |
| push.log | Delivered data event | 150 |
| push.native_transfer | Delivered data event | 150 |
| push.token_transfer | Delivered data event | 150 |
- Self-service
Up to 1,000,000 addresses per subscription. Available on sign-up.
Standard usage rates
- Enterprise
10,000,000 / 100,000,000 addresses per subscription.
Contact us
Both tiers use the same address-day and delivered-event rates.
Chain-specific operations that are unavailable (e.g. unsupported chain or outside trace coverage) return HTTP 422 and are not billed.
These weights are also available as JSON from GET /v1/plans.
All methods and CU weights
Each row is a method and each column is a chain. CU weights come from the public pricing endpoint.
| Method | CU per call | Arbitrum One | Base | BNB Smart Chain | Ethereum | Ethereum Sepolia | HyperEVM | Polygon | Robinhood Chain | Robinhood Chain Testnet |
|---|---|---|---|---|---|---|---|---|---|---|
| Data API | Supported | Supported | Supported | Supported | Supported | Supported | Supported | Supported | Not supported | |
| WebSocket Support | Supported | Supported | Supported | Supported | Supported | Supported | Supported | Supported | Supported | |
| Webhook push | Supported · Confirmations 1–120 (default 120) | Supported · Confirmations 1–519 (default 1) | Supported · Confirmations 1–2 (default 1) | Supported · Confirmations 1–82 (default 6) | Supported · Confirmations 1–67 (default 6) | Supported · Confirmations 1–1 (default 1) | Supported · Confirmations 1–200 (default 200) | Supported · Confirmations 1–1 (default 1) | Supported · Confirmations 1–1 (default 1) | |
| Send Transactions | Supported | Supported | Supported | Supported | Supported | Supported | Supported | Supported | Supported | |
| Send Transactions (Keyless Public Endpoint) | Supported | Supported | Supported | Supported | Supported | Not supported | Supported | Supported | Supported | |
| State History Window | Historical state for the most recent 5,000 blocks | Historical state for the most recent 10,000 blocks | Historical state for the most recent 100 blocks | Historical state for the most recent 250,000 blocks | Unknown | Unknown | Historical state for the most recent 126 blocks | Historical state for the most recent 900 blocks | Historical state for the most recent 1,023 blocks | |
| eth_getLogs Max Block Range | 1,000 blocks | 1,000 blocks | 1,000 blocks | 1,000 blocks | 1,000 blocks | 1,000 blocks | 1,000 blocks | 1,000 blocks | 1,000 blocks | |
| Data API Datasets | Blocks, Transactions, Address Transactions, Transfers, Token Metadata, Data Freshness | Blocks, Transactions, Address Transactions, Transfers, Token Metadata, Data Freshness | Blocks, Transactions, Address Transactions, Transfers, Token Metadata, Data Freshness | Blocks, Transactions, Address Transactions, Transfers, Token Metadata, Data Freshness | Blocks, Transactions, Address Transactions, Transfers, Token Metadata, Data Freshness | Blocks, Transactions, Address Transactions, Transfers, Token Metadata, Balances, Holders, NFTs, Data Freshness | Blocks, Transactions, Address Transactions, Transfers, Token Metadata, Data Freshness | Blocks, Transactions, Address Transactions, Transfers, Token Metadata, Balances, Holders, NFTs, DEX Swaps, DEX Prices, Tokenized Stocks, Traces, Data Freshness | Not supported | |
| debug_traceBlockByHash | 100 | ✓Supported | —Not supported | —Not supported | ✓Supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| debug_traceBlockByNumber | 100 | ✓Supported | —Not supported | —Not supported | ✓Supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| debug_traceCall | 100 | ✓Supported | —Not supported | —Not supported | ✓Supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| debug_traceTransaction | 100 | ✓Supported | —Not supported | —Not supported | ✓Supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_blobBaseFee | 10 | ✓Supported | ✓Supported | —Not supported | ✓Supported | ✓Supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_blockNumber | 1 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_call | 15 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_chainId | 1 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_createAccessList | 20 | ✓Supported | ✓Supported | —Not supported | ✓Supported | ✓Supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_estimateGas | 20 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_feeHistory | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_gasPrice | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getBalance | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getBlockByHash | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getBlockByNumber | 5 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getBlockReceipts | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getBlockTransactionCountByHash | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getBlockTransactionCountByNumber | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getCode | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getHeaderByHash | 10 | ✓Supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getHeaderByNumber | 10 | ✓Supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getLogs | 30 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getProof | 10 | ✓Supported | ✓Supported | —Not supported | ✓Supported | ✓Supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getRawTransactionByBlockHashAndIndex | 10 | ✓Supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getRawTransactionByBlockNumberAndIndex | 10 | ✓Supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getRawTransactionByHash | 10 | ✓Supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getStorageAt | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getTransactionByBlockHashAndIndex | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getTransactionByBlockNumberAndIndex | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getTransactionByHash | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getTransactionCount | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getTransactionReceipt | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getUncleByBlockHashAndIndex | 10 | ✓Supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getUncleByBlockNumberAndIndex | 10 | ✓Supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getUncleCountByBlockHash | 10 | ✓Supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_getUncleCountByBlockNumber | 10 | ✓Supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_maxPriorityFeePerGas | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_sendRawTransaction | 30 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| eth_simulateV1 | 20 | ✓Supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
| eth_syncing | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| net_version | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| trace_block | 100 | —Not supported | —Not supported | —Not supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | —Not supported |
| trace_call | 100 | —Not supported | —Not supported | —Not supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | —Not supported |
| trace_get | 100 | —Not supported | —Not supported | —Not supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | —Not supported |
| trace_replayTransaction | 100 | —Not supported | —Not supported | —Not supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | —Not supported |
| trace_transaction | 100 | —Not supported | —Not supported | —Not supported | ✓Supported | —Not supported | —Not supported | —Not supported | —Not supported | —Not supported |
| web3_clientVersion | 10 | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported | ✓Supported |
| web3_sha3 | 10 | ✓Supported | ✓Supported | —Not supported | ✓Supported | ✓Supported | —Not supported | ✓Supported | ✓Supported | ✓Supported |
Common unsupported requests
- For trace methods: use debug_traceTransaction with {"tracer":"callTracer"} only when the target chain supports debug_traceTransaction.
- Filter methods (such as eth_newFilter): poll eth_getLogs instead. Calling eth_subscribe over HTTP returns -32601; on chains where ws is true in /v1/chains, eth_subscribe is available over WebSocket (see Supported Chains in the documentation); otherwise, poll eth_getLogs.
- For historical queries, check the target chain’s Data API datasets and coverage; see the dataset catalog.
Usage estimator
Pick methods and calls per day to estimate CU usage per cycle, the share of the free-plan quota, and cost at list price.
- Total CU per 30-day cycle
- 9M CU
- Share of free-plan cycle quota
- 30% (free quota 30M CU)
- Estimated at list price
- $0.90
- Average calls per second
- 0.23 calls/s (free-plan cap 25 calls/s, short bursts allowed)
Allowed & denied methods
Billing details (settlement, rounding and carry-over, balance checks)
Usage is metered in CUs (Compute Units): each JSON-RPC method consumes a set number of CUs based on its weight. Usage is totaled across all chains, JSON-RPC and Data API combined. Testnet requests use the same CU weights as mainnet and draw from the same balance and free credits.
JSON-RPC methods not listed in the weight table are billed at 10 CU.
Every 1,000 CU settles as 1 billing unit.
Settlement
Usage is charged per account per hourly period, rounded down to whole billing units (1 unit = 1,000 CU), with the remainder carrying over to the next period (across periods the total charged is floor(total CU / 1,000)); settlement runs about 15 minutes after the period ends. For example: 508 CU carried over + 2557 CU consumed = 3065 CU charges 3 billing units, with 65 CU carried over.
Balance & admission
Each request is checked against your balance in real time, including usage not yet billed. Once your balance runs out, new requests are rejected with HTTP 402.
Free plan
Includes 30,000,000 CU sign-up credits. Each 30-day cycle starts on first billed usage and automatically refills up to 30,000,000 CU at the end of the period (no accumulation). All keys share an average of 25 calls per second, and short bursts are allowed; each key keeps its default 100 CU/s limit (burst 400 CU).
No credit card required — sign up instantly with GitHub, Google, or your wallet.
Pay with USDC / USDT / USDG
Minimum top-up is $0.01. Each account has a dedicated deposit address; humans and AI agents follow the same workflow.
Supported networks & tokens
Ethereum (USDC, USDT), BNB Smart Chain (USDT, USDC), Polygon (USDC, USDT), HyperEVM (USDC, USDT), Robinhood Chain (USDG), Base (USDC), Arbitrum One (USDC, USDT)
Real-time availability is subject to GET https://api.blockvectra.com/v1/topup/status.
Sign in, open Billing, and use the deposit address and token details shown for your account.
Once the first paid top-up is credited, free cycle refills stop, unused free credits remain available, and the account-level call-rate cap is removed; each non-revoked key is raised to at least the paid-account floor (a lower bound, not a cap), and higher custom limits are kept.
We will never ask for your private key or seed phrase; deposit addresses are only provided within your account.
FAQ
Can one API key be used on all chains?
Yes. One API key works for JSON-RPC on every supported chain and for the Data API on chains that offer it; a key belongs to the account, not to a specific chain. Read the one key, many chains guide →
Are rejected requests billed?
No. Section 8 (Metering and billing) of the Terms of Service says: requests the Service rejects, for example for insufficient Credits, exceeded rate limits, a temporarily unavailable network or a malformed request, are not billed. Requests outside our data coverage are not billed but may count toward rate limits. Read Section 8 of the Terms →
How do I pay?
Pay-as-you-go: 1 USD = 10,000,000 CU, minimum top-up $0.01. Supported networks and minimum amounts are in the Pay with USDC / USDT / USDG section.