Rate Limits and Call Limitations
Understanding SpeedyNodes rate limits is crucial for optimizing your application's performance and ensuring uninterrupted service. All plans include access to all 22+ blockchain networks - the difference is in the rate limits.
Rate Limits by Plan
Each SpeedyNodes plan comes with specific request rate limits (RPS = Requests Per Second):
| Plan | Total RPS | HTTP RPS | WebSocket RPS | Burst |
|---|---|---|---|---|
| FREE | 2 | 1 | 1 | 0 |
| Starter | 60 | 30 | 30 | 5 |
| Advanced | 150 | 75 | 75 | 5 |
| Scale | 350 | 175 | 175 | 5 |
| Pro | 500 | 250 | 250 | 5 |
| Dedicated | Unlimited | Unlimited | Unlimited | Unlimited |
| Enterprise | Custom | Custom | Custom | Custom |
WebSocket Connection Limits
WebSocket connections are limited per API key:
| Plan | Max WS Connections | Handshake Limit/sec | Idle Timeout |
|---|---|---|---|
| FREE | 2 | 2 | 30 min |
| Starter | 20 | 50 | 30 min |
| Advanced | 50 | 140 | 30 min |
| Scale | 100 | 250 | 30 min |
| Pro | 200 | 400 | 30 min |
| Dedicated | 1000 | 1000 | 30 min |
| Enterprise | Custom | Custom | Custom |
Archive Node Limits
Archive nodes count at double RPS cost to ensure stability for resource-intensive historical queries:
| Plan | Archive RPS Cost | Example (if Total = 100 RPS) |
|---|---|---|
| FREE - Pro | 2x (double RPS cost) | Each archive request costs 2 RPS |
| Dedicated | 1x (normal) | Unlimited |
| Enterprise | 2x (double RPS cost) | Custom |
What Happens When You Exceed Limits
When you exceed your plan's rate limits:
- HTTP 429 Response: Excess requests receive a 429 (Too Many Requests) response
- Retry-After Header: The response includes a
Retry-Afterheader indicating when to retry - Burst Buffer: Paid plans have burst capacity that absorbs short spikes
- Graceful Degradation: The system queues requests briefly before rejecting them
Avoid Repeated Violations
Consistently exceeding rate limits may result in temporary IP throttling. Implement proper backoff strategies in your application.
Handling Heavy Calls
Some RPC methods are more resource-intensive than others. These "heavy calls" consume more resources:
eth_getBlockReceiptseth_getLogs(with wide block ranges)debug_traceTransactiontrace_transactiondebug_traceBlockByNumbertrace_block
Best Practices
To optimize performance and avoid rate limiting:
- Use Compression: Implement gzip compression for all requests
- Batch Requests: Combine multiple requests into a single JSON-RPC batch call
- Paginate Requests: For
eth_getLogs, break large block ranges into smaller chunks - Implement Caching: Cache responses for immutable blockchain data
- Use WebSockets for Subscriptions: For real-time data, use WebSocket subscriptions instead of polling
- Implement Exponential Backoff: When rate limited, wait progressively longer before retrying
Using Gzip Compression
Using gzip compression can reduce data transfer by up to 90%:
Example with curl
curl -H "Accept-Encoding: gzip" \
-H "Content-Type: application/json" \
-X POST https://gateway-1.speedynodes.net/http/eth-1?apikey=YOUR_API_KEY \
--data '{"jsonrpc":"2.0","method":"eth_getBlockReceipts","params":["0x2e60d60"],"id":1}' \
--compressed
Real-World Results
When retrieving block receipts:
- Uncompressed size: 364,219 bytes
- Gzipped size: 34,175 bytes
- Bandwidth saved: ~90%
JavaScript/Node.js Example
const axios = require('axios');
async function compressedRequest() {
const response = await axios.post(
'https://gateway-1.speedynodes.net/http/eth-1?apikey=YOUR_API_KEY',
{
jsonrpc: '2.0',
method: 'eth_getBlockReceipts',
params: ['0x2e60d60'],
id: 1
},
{
headers: {
'Content-Type': 'application/json',
'Accept-Encoding': 'gzip'
},
decompress: true
}
);
console.log(response.data);
}
Python Example
import requests
url = 'https://gateway-1.speedynodes.net/http/eth-1?apikey=YOUR_API_KEY'
headers = {
'Content-Type': 'application/json',
'Accept-Encoding': 'gzip'
}
payload = {
'jsonrpc': '2.0',
'method': 'eth_getBlockReceipts',
'params': ['0x2e60d60'],
'id': 1
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
Need Higher Limits?
If you consistently need higher rate limits, consider upgrading your plan. Visit the Pricing page or contact us via Telegram or Discord.