Free Ethereum RPC (ETH)
Explore Ethereum, the decentralized blockchain platform with RPC gateway and comprehensive documentation. Powering smart contracts, dApps, DeFi, and NFTs.
Connect to Ethereum
Access reliable, enterprise-grade endpoints that power your dApp with ultra-low latency and 99.9% uptime.
Connect to Ethereum Gateway
Make your first RPC call on Ethereum's Blockchain Gateway.
Sepolia
TestnetHoodi
Testnet* Rate limit enabled - perfect for testing and development. For production, we recommend to Upgrade.
Get 200 requests/second, priority support and advanced blockchain features.
Global Load Balancer
Route to nearest node
Batch RPC Calls
Multiple requests at once
Archive Nodes
Historical blockchain data
Debug & Trace
Advanced debugging
Advanced Analytics
Usage & performance
Bring Your Own RPC
Custom RPC gateways
Increase your limit and access all network features in Tatum Development Platform.
Testnet Faucets for Ethereum
Get free testnet tokens for development on Ethereum.
Estimate Gas on Ethereum
Calculate the optimal gas fee for any transaction on Ethereum.
MEV Protection on Ethereum
Protect your transactions from MEV attacks on Ethereum.
Smart Contract Tools on Ethereum
Deploy, create, and interact with smart contracts on Ethereum.
No signup. No paywalls. Just RPC that works. Great ideas come from everywhere.
With love by Tatum
Ethereum methods
Every method the Ethereum gateway accepts, grouped by interface. 79 in total, read live from the node rather than kept by hand.
Mainnet is the live Ethereum network. Every transaction it
accepts is final, and every ETH balance it
reports is real money.
Ethereum runs 2 test networks here, Sepolia and Hoodi. All of them answer the same methods as Mainnet, so pick whichever your tooling already targets and switch the URL when you go live.
Ethereum answers over 3 interfaces: JSON-RPC, WebSocket and REST. Each is listed once below with every method it accepts. The endpoints differ per network, and all of them are in the gateway list above.
What sits between you and Ethereum
A node is a machine running Ethereum with a copy of the chain. Your code cannot ask the chain directly, it asks a node. The gateway picks a healthy one for every call, so you point at one URL instead of one machine.
- One URL, nothing to run or keep patched yourself.
- Calls routed to a node that is up and in sync.
- A failing node is skipped rather than returned to you as an error.
JSON-RPC
52 methodsThe default. Every wallet, library and framework speaks it, and it is what you want unless you specifically need something else.
One POST carries a method name, its parameters and an id, and the response comes back on the same connection carrying that same id. Requests are independent, so there is no session to keep alive and nothing to reconnect, which is why it runs unchanged behind a load balancer or inside a serverless function. Send an array instead of a single object and the node works through the whole batch in one round trip.
Where it fits
- Anything your library already does for you. ethers, web3.js, viem and their equivalents all target this.
- Batching reads. One array of twenty calls costs one round trip instead of twenty.
- Stateless and serverless deployments, because nothing has to stay connected between calls.
- Historical queries, by passing a block number where you would otherwise pass latest.
Trade-offs
- It cannot push. Finding out that a block landed means polling for it, or moving to WebSocket.
- Wide log queries get refused. Page through in fixed block windows and merge the results yourself.
- Batch responses may come back in any order. Match them on id, never on position.
Enabled and tested methods
Read live from the endpoint, so this is what it actually serves today rather than what the protocol allows in principle. Anything not on this list returns a method-not-found error.
- debug_getBadBlocks
- Returns blocks the node rejected as invalid.
- debug_storageRangeAt
- Walks a range of a contract storage, starting from a given key.
- debug_traceBlock
- Replays every transaction in an RLP-encoded block and returns execution traces.
- debug_traceBlockByHash
- Replays every transaction in a block, located by hash, returning execution traces.
- debug_traceBlockByNumber
- Replays every transaction in a block, located by height, returning execution traces.
- debug_traceCall
- Executes a call and returns a full execution trace, without submitting it.
- debug_traceTransaction
- Replays one transaction and returns its step-by-step execution trace.
- eth_blockNumber
- Returns the height of the most recent block.
- eth_call
- Executes a read-only call against current state, without sending a transaction or spending gas.
- eth_callMany
- Executes several calls in sequence against the same state snapshot.
- eth_chainId
- Returns the chain ID used for replay-protected transaction signing.
- eth_estimateGas
- Estimates how much gas a transaction would consume, without submitting it.
- eth_feeHistory
- Returns base fee and priority fee percentiles across a range of recent blocks.
- eth_gasPrice
- Returns the current gas price in wei.
- eth_getBalance
- Returns the native token balance of an address at a given block.
- eth_getBlockByHash
- Returns a block identified by its hash.
- eth_getBlockByNumber
- Returns a block identified by its height.
- eth_getBlockReceipts
- Returns the receipts for every transaction in a block, in a single call.
- eth_getBlockTransactionCountByHash
- Returns how many transactions a block contains, located by hash.
- eth_getBlockTransactionCountByNumber
- Returns how many transactions a block contains, located by height.
- eth_getCode
- Returns the contract bytecode deployed at an address.
- eth_getLogs
- Returns event logs matching a filter of address, topics and block range.
- eth_getProof
- Returns a Merkle proof for an account and any of its storage slots.
- eth_getStorageAt
- Reads a single storage slot from a contract.
- eth_getTransactionByBlockHashAndIndex
- Returns a transaction by its position in a block, located by hash.
- eth_getTransactionByBlockNumberAndIndex
- Returns a transaction by its position in a block, located by height.
- eth_getTransactionByHash
- Returns a transaction identified by its hash.
- eth_getTransactionCount
- Returns how many transactions an address has sent, which is its next nonce.
- eth_getTransactionReceipt
- Returns the receipt of a mined transaction: status, gas used, and emitted logs.
- eth_getUncleByBlockHashAndIndex
- Returns an uncle (ommer) block by parent hash and index.
- eth_getUncleByBlockNumberAndIndex
- Returns an uncle (ommer) block by parent height and index.
- eth_getUncleCountByBlockHash
- Returns how many uncles a block has, located by hash.
- eth_getUncleCountByBlockNumber
- Returns how many uncles a block has, located by height.
- eth_maxPriorityFeePerGas
- Suggests a priority fee (tip) per gas for timely inclusion.
- eth_sendRawTransaction
- Broadcasts an already signed, serialized transaction to the network.
- eth_signTypedData
- Signs EIP-712 structured data.
- eth_signTypedData_v3
- Signs EIP-712 structured data using the v3 encoding.
- eth_syncing
- Reports whether the node is still syncing, and how far behind it is.
- net_listening
- Reports whether the node is accepting new peer connections.
- net_peerCount
- Returns how many peers the node is currently connected to.
- net_version
- Returns the network ID the node is connected to.
- trace_block
- Returns Parity-style call traces for every transaction in a block.
- trace_call
- Runs a call and returns Parity-style traces, without submitting it.
- trace_callMany
- Runs several calls in sequence and returns Parity-style traces for each.
- trace_rawTransaction
- Traces a signed, serialized transaction without broadcasting it.
- trace_replayBlockTransactions
- Replays a block and returns traces, state diffs and VM output.
- trace_replayTransaction
- Replays one transaction and returns traces, state diffs and VM output.
- trace_transaction
- Returns Parity-style call traces for a single transaction.
- txpool_content
- Lists the pending and queued transactions currently held in the mempool.
- txpool_inspect
- Summarises the mempool in a human-readable form.
- txpool_status
- Returns counts of pending and queued transactions in the mempool.
- web3_clientVersion
- Returns the node client name and version string.
Common JSON-RPC errors
What you are most likely to hit calling this interface, and what to do about it.
- -32700
- Parse error. The request body was not valid JSON. Check that the body is serialised JSON and that Content-Type is application/json.
- -32600
- Invalid request. The JSON parsed, but it is not a well-formed JSON-RPC call. Include jsonrpc, method and id fields. A batch must be a non-empty array.
- -32601
- Method not found. This node does not expose the method you called. Check the spelling and the namespace, and confirm the method is in the list above for this network. Tracing methods in particular are not enabled everywhere.
- -32602
- Invalid params. The method exists but the arguments are wrong. Check argument order and types. Most EVM methods want hex-encoded quantities, and a block parameter such as latest or a hex height.
- -32603
- Internal error. The node failed while handling an otherwise valid request. Retry with backoff. If it persists on one method, it is usually that method rather than the node.
- -32000
- Server error. A catch-all the node uses for execution failures, most often a reverted call or a request over a limit. Read the accompanying message. Execution reverted means your call failed on chain, not in transport. Narrow the block range if you are querying logs.
- HTTP 429
- Rate limited. You have exceeded the free tier request allowance. Back off and retry, batch reads into single calls, or move to a dedicated endpoint for production traffic.
- HTTP 413
- Payload too large. The request body exceeded what the node accepts. Split large batches into smaller ones.
WebSocket
22 methodsOne connection held open, so the node pushes events to you instead of waiting to be asked.
You subscribe once and the node sends a message every time the thing you asked about happens: a new head, a log matching your filter, a transaction hitting the pool. Each subscription hands back an id you later pass to unsubscribe. It replaces the polling loop outright, and it is the only way to hear about something in the same second it occurs.
Where it fits
- Live data: new blocks, contract logs, pending transactions, confirmations.
- Cutting request volume, since one subscription replaces a method polled on a timer forever.
- Reacting fast, because you hear about an event as the node sees it rather than on your next poll.
Trade-offs
- Nothing is replayed. Whatever was emitted while the socket was down is gone for good.
- Keep the last block you handled, and after reconnecting backfill the gap over JSON-RPC before trusting the stream again.
- Idle connections get dropped by proxies. Send periodic pings, and reconnect with backoff rather than in a tight loop.
- Endpoints cap subscriptions per connection, so share one connection instead of opening several.
Enabled and tested methods
Read live from the endpoint, so this is what it actually serves today rather than what the protocol allows in principle. Anything not on this list returns a method-not-found error.
- eth_blockNumber
- Returns the height of the most recent block.
- eth_call
- Executes a read-only call against current state, without sending a transaction or spending gas.
- eth_chainId
- Returns the chain ID used for replay-protected transaction signing.
- eth_estimateGas
- Estimates how much gas a transaction would consume, without submitting it.
- eth_feeHistory
- Returns base fee and priority fee percentiles across a range of recent blocks.
- eth_gasPrice
- Returns the current gas price in wei.
- eth_getBalance
- Returns the native token balance of an address at a given block.
- eth_getBlockByHash
- Returns a block identified by its hash.
- eth_getBlockByNumber
- Returns a block identified by its height.
- eth_getBlockReceipts
- Returns the receipts for every transaction in a block, in a single call.
- eth_getCode
- Returns the contract bytecode deployed at an address.
- eth_getLogs
- Returns event logs matching a filter of address, topics and block range.
- eth_getStorageAt
- Reads a single storage slot from a contract.
- eth_getTransactionByHash
- Returns a transaction identified by its hash.
- eth_getTransactionCount
- Returns how many transactions an address has sent, which is its next nonce.
- eth_getTransactionReceipt
- Returns the receipt of a mined transaction: status, gas used, and emitted logs.
- eth_maxPriorityFeePerGas
- Suggests a priority fee (tip) per gas for timely inclusion.
- eth_sendRawTransaction
- Broadcasts an already signed, serialized transaction to the network.
- eth_subscribe
- Opens a WebSocket subscription to new heads, logs, or pending transactions.
- eth_unsubscribe
- Cancels an existing WebSocket subscription.
- net_version
- Returns the network ID the node is connected to.
- web3_clientVersion
- Returns the node client name and version string.
Common WebSocket errors
What you are most likely to hit calling this interface, and what to do about it.
- 1006
- Connection closed abnormally, with no close frame. Usually an idle timeout, a network change, or a proxy dropping the connection. Reconnect with exponential backoff and re-establish every subscription. Send periodic pings to keep the connection from idling out.
- 1013
- Try again later. The server is shedding load or you have opened too many connections. Back off before reconnecting, and reuse one connection for many subscriptions rather than opening one each.
- -32601
- Method not found. Subscriptions use a different method name from the HTTP interface. Use eth_subscribe and eth_unsubscribe on EVM chains, or the chain-specific subscribe methods listed above.
- Missed events
- Not an error code. Anything emitted while the socket was down is gone, because subscriptions are not replayed on reconnect. Record the last block you processed, and after reconnecting backfill the gap over JSON-RPC before trusting the live stream again.
- HTTP 429
- Rate limited during the upgrade handshake, or too many concurrent subscriptions. Reduce concurrent connections and consolidate subscriptions, or move to a dedicated endpoint.
REST
5 methodsEvery resource has its own URL, so a request is just an address you can open.
Paste it into a browser, curl it, or bookmark it. There is no body to construct and no method name to look up, and because a read is a plain GET, ordinary HTTP caching applies at the CDN and in your own client. Responses are JSON, and the path itself usually tells you what you are getting.
Where it fits
- Getting oriented on an unfamiliar chain without writing any code first.
- Caching, because a GET can be cached by anything sitting between you and the node.
- Debugging, since the request that failed is a URL you can paste to a colleague.
Trade-offs
- You get exactly what the endpoint returns. There is no way to ask for less, or for more.
- Building a full picture takes several round trips where one batched JSON-RPC call would do.
- Paths carry version prefixes and shift between node releases more readily than method names do.
Enabled and tested methods
Read live from the endpoint, so this is what it actually serves today rather than what the protocol allows in principle. Anything not on this list returns a method-not-found error.
- GET /beacon/*
- Beacon chain state and block endpoints: validators, committees, finality and blocks.
- GET /config/spec
- Returns the consensus specification constants this network runs.
- GET /node/*
- Beacon node endpoints covering identity, peers, sync status and health.
- POST /beacon/states/{state_id}/validator_balances
- Returns balances for a list of validators at a given state.
- POST /beacon/states/{state_id}/validators
- Returns status and balance for a list of validators at a given state.
Common REST errors
What you are most likely to hit calling this interface, and what to do about it.
- 400
- Bad request. A path or query parameter is malformed. Check the parameter format, and that path values are URL-encoded.
- 404
- Not found. Either the path is wrong, or the resource genuinely does not exist at that height. Confirm the path against the list above. A valid path can still 404 for pruned history on a non-archive node.
- 429
- Rate limited. You have exceeded the free tier request allowance. Back off and retry. REST responses cache well, so caching on your side removes most repeat traffic.
- 500
- Internal server error. The node failed while handling the request. Retry with backoff.
- 503
- Service unavailable. The node is starting, resyncing, or temporarily out of rotation. Retry with backoff; this is normally short-lived.
Indexed Ethereum Data Insights
Complete on-chain data access, no infrastructure to run yourself. Query wallets, tokens, NFTs, and transaction history with lightning-fast APIs.
Get Wallet Portfolio
Fetch all token balances for a wallet on Ethereum.
Get Token Exchange Rates
Check exchange rates for tokens and fiat on Ethereum.
Check Ethereum Malicious Address
Verify if an address on Ethereum is flagged as malicious.
NFT API on Ethereum
Query collections, get metadata, check ownership, and track balances on Ethereum.
Get Token Information
Fetch detailed information about a token on Ethereum.
Get Ethereum Wallet Transactions
Retrieve all Ethereum transactions for a wallet, including internal transfers.
Web3 Name Service on Ethereum
Resolve Web3 names to blockchain addresses instantly with a unified API.
Real-time Ethereum Alerts
Real-time webhooks for on-chain events. Stop polling the network - get instant alerts for transactions, smart contract events, and wallet activities.
Real-time Alerts for Ethereum
Receive instant webhooks for any event on Ethereum.
Notification Types on Ethereum
Discover incoming and outgoing transaction events for Ethereum addresses.
About Ethereum
What it is, and guides for building on it.
The Ethereum RPC (Remote Procedure Call) documentation provides developers with the tools needed to programmatically interact with the Ethereum blockchain. This comprehensive guide includes API endpoints for querying blockchain data, managing smart contracts, submitting transactions, and accessing network statistics. Ethereum's highly decentralized architecture, powered by a proof-of-stake (PoS) consensus, supports the development of robust decentralized applications (dApps) across DeFi, NFTs, and more. The documentation is designed to ensure seamless integration with Ethereum’s scalable ecosystem, offering best practices and code examples for developers.
From the Tatum blog
Can AI Break Bitcoin? What an Exposed Public Key Means
No public attack recovers Bitcoin or Ethereum keys from this week’s AI math drop. How likely Drake’s ECDSA warning is...
What's new
Stream Blockchain Data: WebSockets Are Here
Stop polling. Start streaming. Tatum WebSocket subscriptions push on-chain events to your app the instant they happen...
Data API Expansion: Avalanche, Gnosis, zkSync, Rootstock, Ethereum Classic, L...
We’re excited to announce expanded Data API support across 8 additional blockchain networks! 🚀
Data API: Liquid Staking APIs
We’re introducing the Tatum Liquid Staking API, enabling developers to retrieve liquid staking balances and supported...
Hegotá Is Coming: The Ethereum Upgrade Wallets and DeFi Devs Can’t Ignore
Hegotá could rewrite how Ethereum includes transactions and how wallets authorize them. Here’s the bullish builder ta...
Tatum WebSocket: Stream Blockchain Data in Real Time
Learn how Tatum WebSocket subscriptions stream real time blockchain data from Ethereum, Polygon, and Solana without p...
The Next Era of Web3: Every Major Chain Upgrade Coming in H2 2026
Prepare your infrastructure for the major blockchain upgrades of late 2026. Explore how Ethereum, Cardano, BSC, Base....
Ethereum Glamsterdam Upgrade: What Builders Need to Know (and Do)
Discover how the Ethereum Glamsterdam upgrade introduces parallel execution, enshrined PBS, and native ETH logs, and ...
Staking API Explained: Native Staking vs Liquid Staking
Learn how native and liquid staking work on Ethereum and Solana, and how to build with a Staking API to track rewards...
Building on Ethereum: Optimizing RPC Performance and On-Chain Data Access
Scale Ethereum dApps using high-performance RPC gateways and specialized data APIs for real-time access to on-chain N...
Frequently Asked Questions
Everything you need to know about Ethereum RPC endpoints
Quick Answer: What is Ethereum RPC?
RPC (Remote Procedure Call) is the standard way to interact with the network programmatically - reading on-chain data, submitting transactions, and deploying smart contracts through JSON-RPC calls. The free tier ships 5 requests per minute with no registration required, which covers most learning and testing workflows. Production applications typically move to Tatum Premium for 200 requests per second and enterprise-grade reliability.
What is Ethereum RPC?
How do I connect to Ethereum using these RPC endpoints?
What are the rate limits for the free RPC tier?
Is Ethereum RPC free forever?
What happens if I exceed the free tier rate limit?
Can I use these Ethereum RPC endpoints with MetaMask?
Are these RPC endpoints secure?
What's the difference between mainnet and testnet RPC endpoints?
How do I troubleshoot RPC connection errors?
Can I use these endpoints in production?
Explore Other Blockchains
Discover RPC endpoints for other popular blockchain networks