Summary
An Ethereum RPC list is a collection of endpoints that let your dApp read and write data on Ethereum. Choosing the right one depends on your workload: public endpoints are fine for testing, while production apps need managed or dedicated infrastructure. This guide explains the types of RPC endpoints, how to evaluate them, and how to connect using popular tools.
When you search for an "Ethereum RPC list," you are likely looking for a set of endpoints you can plug into a wallet, a dApp, or a backend service. The list itself is only half the answer: the more important question is which type of endpoint fits your use case. This guide walks through the main categories of Ethereum RPC endpoints, what to check before you commit, and how to connect with common tools.
Quick Recommendation: Match the Endpoint to Your Workload
Before you copy a URL into your config, think about what your app actually needs. A public endpoint is fine for a hackathon or a local script, but it will not survive production traffic. A managed RPC service gives you reliability and scalability without the operational overhead. A dedicated node gives you full control and isolation for heavy or sensitive workloads.
| Workload | Recommended Endpoint Type | Why |
|---|---|---|
| Prototyping, testing, low volume | Public endpoint | Free, no setup, but rate-limited and often unreliable |
| Production dApp, moderate traffic | Managed RPC (shared) | Balanced performance, scalability, and support |
| High throughput, archive data, trace calls | Dedicated node | Full control, no noisy neighbors, custom configuration |
| Compliance, data privacy, custom logic | Dedicated node | You own the infrastructure and can audit everything |
If you are unsure, start with a managed RPC service like OnFinality's Ethereum RPC and scale to a dedicated node when you hit its limits. Check RPC pricing to understand what you pay for.
What Is an Ethereum RPC Endpoint?
Ethereum nodes expose a JSON-RPC API over HTTP or WebSocket. An RPC endpoint is simply the URL where that API is available. For example, OnFinality's public Ethereum endpoint is https://eth.api.onfinality.io/public. You send JSON-RPC requests to this URL to read blockchain data, estimate gas, or submit transactions.
The Ethereum JSON-RPC specification defines methods like eth_blockNumber, eth_getBalance, eth_call, and eth_sendRawTransaction. Every Ethereum node implements these methods, but the quality of the endpoint—its speed, reliability, and data depth—varies widely.
Types of Ethereum RPC Endpoints
Public Endpoints
Public endpoints are free and open to anyone. They are great for learning and quick tests, but they come with significant drawbacks:
- Rate limits: You may get throttled or blocked after a certain number of requests.
- Uptime: They can go down without notice.
- Data limitations: Often only recent state, not full archive data.
- No support: If something breaks, you are on your own.
Managed RPC Services
Managed services operate Ethereum nodes for you and expose them via a reliable API. They handle infrastructure, monitoring, and scaling. OnFinality, for example, offers a global network of Ethereum nodes with HTTP and WebSocket support. You get a stable endpoint, clear pricing, and access to supported networks.
Dedicated Nodes
A dedicated node gives you a private instance of an Ethereum node. You get exclusive access to the node's resources, which means clear rate limits from shared usage and no "noisy neighbor" effects. This is ideal for high-throughput applications, archive data needs, or when you require custom node configuration.
How to Evaluate an Ethereum RPC Provider
When comparing providers, look beyond the endpoint URL. Here are the key criteria:
| Criterion | What to Check | Why It Matters |
|---|---|---|
| Uptime and reliability | Historical uptime, SLAs | Downtime means your app is down |
| Throughput and latency | Response times, request limits | Slow RPC makes your UI sluggish |
| Data availability | Archive data, trace support | Needed for analytics and debugging |
| Transport support | HTTP, WebSocket | WebSocket needed for real-time updates |
| Security | Authentication, TLS | Protects your API keys and data |
| Support | Documentation, SLAs | Helps you resolve issues quickly |
| Pricing model | Free tier, pay-as-you-go, dedicated | Must fit your budget and scale |
OnFinality's Ethereum RPC provides a managed endpoint with global coverage, and you can upgrade to a dedicated node for full control.
Connecting to an Ethereum RPC Endpoint
Using curl
You can test any Ethereum RPC endpoint with a simple curl request. Here is an example that gets the latest block number:
curl -X POST https://eth.api.onfinality.io/public \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
Using ethers.js
In a JavaScript project, you can use ethers.js to connect to an Ethereum RPC endpoint:
const { ethers } = require("ethers");
const provider = new ethers.JsonRpcProvider("https://eth.api.onfinality.io/public");
async function getBlockNumber() {
const blockNumber = await provider.getBlockNumber();
console.log("Latest block:", blockNumber);
}
getBlockNumber();
Using viem
Viem is another popular library. Here is how you set up a public client:
import { createPublicClient, http } from 'viem';
import { mainnet } from 'viem/chains';
const client = createPublicClient({
chain: mainnet,
transport: http('https://eth.api.onfinality.io/public'),
});
const blockNumber = await client.getBlockNumber();
console.log(blockNumber);
Wallet Configuration
If you are adding Ethereum to a wallet like MetaMask, you need the chain ID (1) and an RPC URL. Use a reliable endpoint like https://eth.api.onfinality.io/public for the network.
Common Pitfalls and How to Avoid Them
Rate Limiting
Public endpoints often return 429 Too Many Requests when you exceed their limits. To avoid this, use a managed service with higher limits or implement retry logic with exponential backoff.
WebSocket vs. HTTP
If your app needs real-time updates (e.g., new blocks, pending transactions), you need a WebSocket endpoint. HTTP is fine for one-off requests. OnFinality supports both HTTP and WebSocket on Ethereum.
Archive Data
Many endpoints only keep recent state. If you need historical data (e.g., for analytics), you need an archive node. OnFinality offers archive data on its managed and dedicated nodes.
Security
Never expose your API key in client-side code. Use environment variables and proxy requests through a backend if necessary.
When to Move from Public to Managed or Dedicated
If you are building a production app, you should not rely on a public endpoint. Signs that you need to upgrade include:
- Your app experiences frequent rate limit errors.
- You need consistent low latency for a global user base.
- You require archive data or trace methods.
- You need a WebSocket connection for real-time features.
- You want a service-level agreement and support.
OnFinality's managed RPC is a good middle ground. For maximum performance and control, consider a dedicated node.
Key Takeaways
- An Ethereum RPC list is just a starting point; the real decision is which type of endpoint to use.
- Public endpoints are fine for testing but not for production.
- Managed RPC services offer a balance of reliability, scalability, and support.
- Dedicated nodes provide full control and are best for high-throughput or specialized needs.
- Evaluate providers on uptime, throughput, data availability, transport, security, and support.
- Always use secure connections and protect your API keys.
Frequently Asked Questions
What is the difference between HTTP and WebSocket RPC endpoints?
HTTP endpoints are request-response based, suitable for one-off queries. WebSocket endpoints maintain a persistent connection, allowing the server to push updates, which is essential for real-time applications.
Can I use a public Ethereum RPC endpoint for production?
It is not recommended. Public endpoints are rate-limited and may be unreliable. For production, use a managed service or a dedicated node.
What is an archive node?
An archive node stores the entire history of the blockchain, allowing you to query historical state at any block. This is useful for analytics, debugging, and compliance.
How do I get a dedicated Ethereum node?
You can get a dedicated node from a provider like OnFinality. Visit the dedicated node page to learn more and request one.
What is the chain ID for Ethereum?
The chain ID for Ethereum mainnet is 1. This is used to prevent replay attacks between different networks.
How do I test an Ethereum RPC endpoint?
You can use curl or a library like ethers.js to send a simple request, such as eth_blockNumber, to verify the endpoint is working.
Does OnFinality support Ethereum testnets?
Yes, OnFinality supports Ethereum Sepolia. You can find the endpoint on the Sepolia network page.