Logo
RPC Assistant

What is the Arbitrum RPC endpoint and how do you use it?

Summary

Arbitrum RPC endpoints let wallets and dApps read and write data on Arbitrum One, Arbitrum Nova, and Arbitrum Sepolia. This guide covers the official public endpoints, chain settings, how to connect with curl or ethers, and how to choose a reliable provider for production.

Quick reference: Arbitrum RPC endpoints and chain settings

If you just need the endpoint and chain details to configure a wallet or start coding, here is the short version. The official public RPC endpoints are rate-limited and do not support WebSocket, so they are fine for prototyping but not for production traffic.

NetworkRPC URLChain IDExplorer
Arbitrum Onehttps://arb1.arbitrum.io/rpc42161Arbiscan
Arbitrum Novahttps://nova.arbitrum.io/rpc42170Nova Explorer
Arbitrum Sepolia (testnet)https://sepolia-rollup.arbitrum.io/rpc421614Sepolia Arbiscan

For production applications, you will typically use a managed RPC provider that offers higher rate limits, WebSocket support, and archive data. OnFinality provides RPC endpoints for Arbitrum and other networks, with pricing that scales with your usage.

How to connect to Arbitrum with curl

Arbitrum is EVM-compatible, so you can use standard JSON-RPC methods. Here is a quick curl example to get the latest block number:

curl https://arb1.arbitrum.io/rpc \
  -X POST \
  -H "Content-Type: application/json" \
  --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

You should get a response like:

{"jsonrpc":"2.0","id":1,"result":"0x1d4c4b"}

The result is a hex-encoded block number. Convert it to decimal to get the current block height.

Using ethers.js or viem with Arbitrum

Most developers use a library like ethers.js or viem. Here is an example with ethers v6:

import { ethers } from "ethers";

const provider = new ethers.JsonRpcProvider("https://arb1.arbitrum.io/rpc");
const blockNumber = await provider.getBlockNumber();
console.log(blockNumber);

With viem, you can create a public client:

import { createPublicClient, http } from "viem";
import { arbitrum } from "viem/chains";

const client = createPublicClient({
  chain: arbitrum,
  transport: http("https://arb1.arbitrum.io/rpc"),
});

const blockNumber = await client.getBlockNumber();
console.log(blockNumber);

Adding Arbitrum to MetaMask or other wallets

If you want to add Arbitrum One to MetaMask manually, use these settings:

  • Network Name: Arbitrum One
  • New RPC URL: https://arb1.arbitrum.io/rpc
  • Chain ID: 42161
  • Currency Symbol: ETH
  • Block Explorer URL: https://arbiscan.io

For Arbitrum Nova, use chain ID 42170 and explorer https://nova.arbiscan.io. For Arbitrum Sepolia, use chain ID 421614 and explorer https://sepolia.arbiscan.io.

Official public endpoints vs. managed providers

The official public RPC endpoints are operated by the Arbitrum team and are free to use. However, they have limitations:

  • No WebSocket support: The public endpoints do not support wss:// connections. If your dApp needs real-time updates, you need a provider that offers WebSocket.
  • Rate limits: Public endpoints are shared and can be throttled under heavy load.
  • No archive data: They only serve recent state. If you need historical state, you need an archive node.
  • Sequencer endpoint: The sequencer endpoint (https://arb1-sequencer.arbitrum.io/rpc) only supports eth_sendRawTransaction and eth_sendRawTransactionConditional. It is not a general-purpose RPC endpoint.

For production, you should use a managed RPC provider that offers:

  • Higher rate limits and dedicated throughput
  • WebSocket support for subscriptions
  • Archive data and trace methods
  • Global edge caching for low latency
  • Failover and redundancy

OnFinality provides Arbitrum RPC endpoints as part of its supported networks, with flexible pricing for both shared and dedicated nodes.

How to choose an Arbitrum RPC provider

When evaluating an RPC provider for Arbitrum, consider these criteria:

CriterionWhat to checkWhy it matters
Rate limitsRequests per second (RPS) and daily quotaDetermines if your app can handle peak traffic
WebSocket supportDoes the provider offer wss:// endpoints?Needed for real-time data and subscriptions
Archive dataDoes the provider offer archive nodes?Required for historical queries and analytics
Trace methodsDoes the provider support debug_traceTransaction?Needed for debugging and indexing
Global coverageAre there endpoints in multiple regions?Reduces latency for users worldwide
Uptime SLAWhat is the reliability expectations?Ensures reliability for production apps
Pricing modelPay-as-you-go vs. subscriptionAffects cost predictability

For a deeper dive, see our guide on how to choose an RPC provider.

Common pitfalls and troubleshooting

1. Using the sequencer endpoint for general queries

The sequencer endpoint only accepts transaction submission. If you call eth_call or eth_getBalance on it, you will get an error. Use the regular RPC endpoint for reads.

2. WebSocket not supported on public endpoint

If you try to connect via wss://arb1.arbitrum.io/rpc, it will fail. Use a provider that supports WebSocket, or poll the HTTP endpoint instead.

3. Rate limiting

If you get 429 Too Many Requests, you are hitting the rate limit. Consider upgrading to a paid plan or using a dedicated node.

4. Chain ID mismatch

Make sure your wallet or dApp uses the correct chain ID: 42161 for Arbitrum One, 42170 for Nova, 421614 for Sepolia. A mismatch will cause transactions to be rejected.

5. Gas estimation issues

Arbitrum uses a different gas model than Ethereum. Use eth_estimateGas with the appropriate parameters, and be aware that L1 data fees are included in the gas price.

Monitoring your Arbitrum RPC health

To ensure your dApp stays healthy, monitor your RPC endpoint's latency and error rate. You can use a simple script to check the latest block number periodically:

while true; do
  curl -s -X POST https://arb1.arbitrum.io/rpc \
    -H "Content-Type: application/json" \
    --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}' \
    | jq -r '.result' \
    | xargs printf "Block: %d\n"
  sleep 10
done

If the block number does not increase over time, your endpoint may be stale. Consider using a provider with failover.

Key Takeaways

  • The official Arbitrum RPC endpoints are https://arb1.arbitrum.io/rpc (One), https://nova.arbitrum.io/rpc (Nova), and https://sepolia-rollup.arbitrum.io/rpc (Sepolia).
  • Public endpoints are rate-limited and do not support WebSocket, so they are not suitable for production.
  • Use a managed provider like OnFinality for higher rate limits, WebSocket, archive data, and reliability.
  • Always verify the chain ID and use the correct endpoint for the network you intend to interact with.

Frequently Asked Questions

What is the Arbitrum RPC endpoint?

The Arbitrum RPC endpoint is a URL that allows wallets and dApps to communicate with the Arbitrum blockchain via JSON-RPC. The mainnet endpoint is https://arb1.arbitrum.io/rpc.

Does Arbitrum support WebSocket?

The official public RPC does not support WebSocket. You need a third-party provider that offers WebSocket endpoints, such as OnFinality.

How do I get an Arbitrum RPC URL?

You can use the public endpoint https://arb1.arbitrum.io/rpc for testing, or sign up for a managed provider to get a private endpoint with higher limits.

What is the chain ID for Arbitrum One?

The chain ID for Arbitrum One is 42161. For Arbitrum Nova it is 42170, and for Arbitrum Sepolia it is 421614.

Can I use the sequencer endpoint for general RPC calls?

No, the sequencer endpoint only supports eth_sendRawTransaction and eth_sendRawTransactionConditional. Use the regular RPC endpoint for other methods.

RPC Knowledge Base

Related RPC details

Never Worry about Infrastructure Again

OnFinality takes away the heavy lifting of DevOps so you can build smarter and faster.

Get Started