Polygon is an EVM-based network that lets developers build fast, low-cost dApps. With zkEVM getting increasingly popular, the Polygon zkEVM network was added to the ecosystem for developers who want better EVM compatibility, ZK security, and even lower fees.
To help wallets and dApps onboard to the ecosystem quickly, the Polygon core team and validator operators spin up some public gateways – nodes. The Polygon RPC URL is labelled “public” when it provides access to these nodes.
Introduction to Public Polygon RPC URLs
Public Polygon RPC URLs are web addresses (for example: https://polygon-rpc.com/) where anyone can connect to a Polygon node and ask for blockchain data or send transactions. It’s free and ready to use; no password or API key is needed to connect.
However, being free, public RPCs are intentionally rate-limited so they remain reliable for light and medium traffic. That makes them perfect for quick prototyping, small dApps, or light testing, but less suitable for high-throughput production loads.
What is a Polygon RPC URL?
A Polygon RPC URL is simply the HTTP(S) address where a JSON-RPC interface for a Polygon node lives. In other words, it’s the network endpoint you point your wallet, dApp, or scripts to whenever you want to:
- Query account balances or contract state;
- Fetch block, transaction, or event data;
- Broadcast signed transactions onto the Polygon chain.
In practice, Polygon RPC nodes implement the same JSON-RPC 2.0 methods you know from Ethereum (e.g. eth_sendRawTransaction ) because Polygon is EVM-compatible.
When making an HTTP POST to a valid RPC URL, the node returns the requested data in JSON form.
Difference between Public and Private RPC URLs
Since public endpoints serve everyone for free, they can become congested or even experience downtime without warning. Polygon does not publish its rate limits for public nodes, but we performed our simple multi‐threaded test.
Hitting eth_blockNumber found that the Polygon public RPC started returning HTTP 429 (“Too Many Requests”) errors when the aggregate request rate reached ≈43 req/s. In practice, if you exceed roughly 40 calls per second, the public mainnet RPC will start returning errors. If you’re building anything beyond a casual project, it’s best to switch over to a private endpoint.
A Private RPC URL is an endpoint reserved for authorized users only. Because no one else competes on that same endpoint, private RPC can provide consistent latency and better throughput. In this case, the node is operated by users themselves or an infrastructure provider, while users only consume the API.
Private endpoint limits are much higher or even unlimited. If you self-host, you decide the limit based on your node’s hardware. Providers scale capacity to match various plans. For instance, GetBlock’s rate limits range from 25 req/second (RPS) to custom and unlimited requests.
Flexible pricing
Shared nodes
START
Popular
$ 29 / month
Get started5 000 000
Requests per month
200
Requests per second
Shared nodes
UNLIMITED
Best choice
$ 499 / month
Get startedUnlimited
Requests per day
300
Requests per second
List of Public Polygon RPC URLs
Below is a list of “official” publicly available Polygon RPC endpoints, organized by network. More URLs can be found online on resources like CompareNodes.
Polygon Mainnet RPC URL
Polygon Mainnet is the production live network. Think of it as the “real” blockchain where actual value is transferred and real dApps run.
Public RPC endpoint to query and send transactions on Mainnet:
https://polygon-rpc.com/
Any application that targets Polygon zkEVM must connect to a separate mainnet URL:
https://zkevm-rpc.com
Note: Polygon plans to retire the zkEVM Mainnet in 2026, so plan migrations to alternative compatible blockchain RPCs accordingly.
Polygon Amoy Testnet RPC URL
The Amoy network is designed as a testnet that mirrors mainnet behavior for testing contracts, wallets, or any interaction with the blockchain.
To query Polygon Amoy testnet data or send test transactions, point to this RPC URL:
https://rpc-amoy.polygon.technology
If you’re developing or testing smart contracts specifically on Polygon zkEVM rather than on the “classic” PoS Polygon, point your requests to this Cardona testnet URL instead.
https://rpc.cardona.zkevm-rpc.com
Like mainnet, it’s shared traffic, so requests will be rate‐limited.
How to Add a Polygon RPC URL to MetaMask
Below are step-by-step instructions for configuring MetaMask to use Polygon networks. You can use either the public RPC URLs or a private RPC URL. To get a private URL:
- Create a free account on GetBlock.
- Log in to your dashboard, locate “My endpoints” panel.
- “Protocol” dropdown shows a list of supported chains. Click “Polygon”.
- Set network to “Mainnet” or “Amoy”, and API to “JSON-RPC”.
- Clicking “Get” will regenerate a URL for you.
Source: GetBlock
You can copy and paste it into MetaMask or your dApp’s configuration. This way, you get a private RPC access point that provides more stable performance rather than a free public endpoint that anyone can use.
Adding Polygon Mainnet to MetaMask
To add Polygon Mainnet to MetaMask, follow these three steps:
- Open MetaMask and click the network dropdown (usually shows “Ethereum Mainnet”).
- Then select “Add a custom network”.
- In the form that opens, fill in the Polygon RPC URL with other network details as shown in the table:
Name | Polygon PoS Mainnet |
---|---|
Polygon New RPC URL | https://polygon-rpc.com/ OR https://go.getblock.io/<YOUR-ACCESS-TOKEN> |
Chain ID | 137 |
Currency Symbol | POL |
Block Explorer URL (optional) | https://polygonscan.com/ |
After clicking “Save”, MetaMask will switch your active network to Polygon Mainnet. You can now send and receive POL tokens or interact with smart contracts on Polygon through MetaMask.
Adding Polygon Testnets (Amoy & Mumbai) to MetaMask
For a short period, Polygon PoS operated two testnets – long-standing Mumbai and newer Amoy. Mumbai was deprecated in 2024 since it relied on Ethereum Goerli, which also shut down. Amoy is now the official PoS testnet (rooted to Sepolia) and is what is recommended for testing. The Polygon Mumbai testnet RPC URL is, therefore, no longer supported.
Set up Amoy in MetaMask exactly like you did for the mainnet:
- Open the network dropdown.
- Click “Add custom network.”
- Enter:
Name | Polygon Amoy |
---|---|
Amoy RPC URL | https://rpc-amoy.polygon.technology/ OR https://go.getblock.io/<YOUR-ACCESS-TOKEN> |
Chain ID | 80002 |
Currency Symbol | POL |
Block Explorer URL (optional) | https://amoy.polygonscan.com |
After confirmation, MetaMask will switch to Polygon Amoy Testnet, where you can request test POL from the public faucet and try out contracts without spending real tokens.
Note that using Amoy requires test POL. They can be obtained from free faucets. You can see some faucets or older tutorials still referencing MATIC as a native token, which was recently changed to POL – just mentally replace “MATIC” with “POL”.
How to use Polygon RPC for development
Once you have an RPC URL for Polygon, you can start making JSON-RPC calls to the network. This section will be useful for beginners, learning how to interact with the blockchain programmatically.
Connecting to Polygon via web3 libraries
Below are simple copy-and-paste code samples, showing how to connect to Polygon (Mainnet or Testnet) using two popular Web3 libraries, ethers.js and web3.js.
Before you begin, make sure you have one of these installed. For installation instructions and additional code examples, refer to our Web3 libraries guide.
An example script using ethers.js for interacting with Polygon:
const { ethers } = require("ethers"); // Choose your RPC URL here: const provider = new ethers.JsonRpcProvider("https://go.getblock.io/"); // Or using public URL: // const provider = new ethers.JsonRpcProvider("https://polygon-rpc.com"); (async () => { // Example request: fetching block number const blockNumber = await provider.getBlockNumber(); console.log("Current block number:", blockNumber); })();
A snippet for using Polygon with web3.js:
const { Web3 } = require('web3'); const web3 = new Web3('https://go.getblock.io/'); // Or using public URL for mainnet: // web3 = new Web3("https://polygon-rpc.com"); // for testnet: // web3 = new Web3("https://rpc-amoy.polygon.technology/"); // Calling methods: (async () => { const blockNumber = await web3.eth.getBlockNumber(); console.log("Latest block number:", blockNumber); })();
Functionally, your code looks exactly the same whether you point to a public or private URL. The difference lies entirely in what sits behind that “https://…”: a public URL routes you into a shared, rate‐capped pool, whereas a private URL gives you a higher‐throughput, lower latency, and dedicated support.
Best practices for using public Polygon RPCs
Polygon public RPC is made for learning, experimenting, or any use where request volumes stay low. To ensure reliable performance, follow these precautions:
Monitor your usage: If you exceed built-in usage limits, you may see HTTP 429 (“Too Many Requests”) errors; back off and retry after a short delay.
Watch on‐chain activity: At times when the entire Polygon network sees a surge, public RPC endpoints can get overwhelmed. Keep alternative options at the ready.
Shift to a dedicated RPC Provider when needed: If your dApp traffic grows – say, hundreds of users interacting simultaneously, or your scripts generate sufficient request volume, you’ll eventually outgrow public endpoints.
Providers like GetBlock not only offer the rate request limits each user needs but also offer dedicated Polygon nodes where you own your throughput, enjoy fast and consistent response times, and gain enterprise-grade features, monitoring, and security controls.
Whether you’re scaling a high-volume dApp, running intensive on-chain analytics, or simply requiring 24/7 real-time access for critical tasks, dedicated nodes remove the guesswork around availability and performance that public RPCs simply can’t guarantee.
Wrapping up
Public Polygon RPC URLs play a crucial role in lowering the barrier to entry for anyone looking to build, experiment, or simply interact with the Polygon ecosystem – developers can plug in a URL and be live within minutes.
However, public servers must serve everyone within their fixed resource pool, so each user only gets a small slice of that capacity. If your project really needs more than a few dozen requests per second, or you can’t tolerate random slowdowns, consider moving to a private or dedicated RPC.
Ready for guaranteed performance? Sign up for a free GetBlock account today and get your own dedicated Polygon network RPC URL.