- Category
- Provider comparison
- Reading time
- 11 minutes
- Published
- Updated
Best RPC provider for indexers
The best RPC provider for an indexer is not always the provider with the nicest dashboard, the biggest free tier, or the lowest headline price.
Indexers stress RPC infrastructure in specific ways. They scan logs, backfill historical data, retry failed calls, read old blocks, process reorgs, and often run across multiple chains. They need consistency and predictable throughput more than a generic “fast RPC” claim.
If you are choosing an RPC provider for an indexer, compare providers based on the workload your indexer actually runs.
Indexers are not normal dApps
A normal dApp usually follows user traffic. An indexer follows chain history.
That means indexers often generate:
- sustained RPC method volume
- large
eth_getLogsranges - historical block reads
- archive state calls
- backfills after deployment changes
- retries after provider errors
- reprocessing after bugs or schema changes
- multi-chain synchronization pressure
This makes the RPC provider part of the data pipeline, not just an external API.
What does “best RPC provider” mean for an indexer?
There is no best endpoint independent of the indexer's output contract. Start by recording the chains, methods, oldest required blocks, confirmation policy, sustained and backfill rates, transport, response sizes, and recovery objective. A log indexer, trace indexer, portfolio indexer, and block explorer can need different data from the same chain.
Turn those needs into hard gates before comparing latency or price. A candidate is disqualified if it cannot serve a required chain-method-block combination, if its fallback loses that capability, or if its limits prevent the indexer from meeting the catch-up objective. Archive state, receipt and log history, historical proofs, and trace namespaces must be tested separately; the archive RPC decision guide explains why one archive label cannot prove all four.
Only score providers that pass the capability gates. This prevents a fast current-state endpoint or a low headline estimate from winning an evaluation it cannot complete.
Key criteria for indexer RPC
1. Reliable eth_getLogs and historical reads
For many indexers, eth_getLogs is the core method. Test narrow and wide topic filters, dense and sparse contracts, recent and historical ranges, response-size limits, adaptive range behavior, and realistic concurrency. An old block lookup does not prove old state or receipt retention, so probe each required data class independently.
2. Data correctness and reorg recovery
A provider should return block number, hash, parent hash, transactions, receipts, and logs consistently enough for the indexer to verify its own cursor. The Ethereum `eth_getLogs` specification exposes block and transaction identity plus a removed flag, but the application still needs idempotent writes and a rollback path. Store the committed block number and hash, detect parent-hash discontinuity, and replay from the common ancestor.
Treat null and empty arrays according to method semantics rather than rotating providers blindly. Compare hashes at a common block when freshness or fork disagreement matters. A provider cannot remove the indexer's responsibility for canonical data.
3. Sustained throughput and catch-up time
Measure useful blocks or events committed per minute, not only requests per second. Separate live traffic from backfills and test the time required to recover a realistic outage. Record p50, p95, p99, timeouts, 429s, response bytes, range reductions, and retry amplification. A provider that keeps up at the head but cannot close a backlog may fail the real service objective.
4. Capability-preserving failover
Force the preferred path out of service and repeat the oldest-state, log, receipt, and trace tests. The secondary must satisfy the same history, method, tracer, freshness, and response-shape requirements. The RPC failover guide covers block pinning and stale-upstream checks.
5. Predictable cost and operational support
Model normal sync, backfill, reprocessing after a schema change, and an incident month from the same method mix. Include retries and failed work. Then record who owns client upgrades, lag, corruption, capacity, and provider escalation, plus the response time available when the indexer falls behind.
Why teams choose SolidRPC for indexing workloads
SolidRPC is designed for heavy EVM workloads, including indexers and data pipelines. On selected networks it operates full or archive nodes behind method- and history-aware routing, while Dwellir supplies external fallback and chains or capabilities not served by the operated fleet. The current network catalog defines archive, debug_*, and Parity-style trace_* support per chain.
Its plans use response quotas rather than method-weighted compute units, and supported archive routes do not carry a separate archive surcharge. The service currently exposes HTTPS JSON-RPC rather than WebSockets. An indexer that requires subscriptions must keep another transport or use polling with a durable cursor; Geth's subscription documentation also notes that subscriptions deliver current rather than past events and disappear with the connection, so a range backfill remains necessary after disconnects.
SolidRPC manages node health, routing, upgrades, and recovery for the service boundary. The customer still owns filter correctness, idempotent storage, block-hash cursors, reorg rollback, and application-specific completeness checks. Evaluate it with the same pass/fail matrix as any provider rather than assuming operated nodes eliminate pipeline work.
How to benchmark RPC for an indexer
Use a benchmark that matches the indexer and produces an auditable dataset:
- Freeze a matrix of real chains, contracts, methods, tracers, block ranges, and expected results.
- Include sparse and dense intervals, the oldest required block, current sync, and a bounded backlog.
- Establish the canonical block hashes and known event counts for verification samples.
- Run at realistic concurrency with one total deadline and a bounded retry budget.
- Record every attempt's endpoint, latency, outcome, bytes, range, and returned block identity.
- Measure committed blocks or events per minute, p50/p95/p99, timeout and 429 rate, retries, and head distance.
- Disable the preferred upstream and repeat the capability and correctness samples.
- Restart the worker mid-page and confirm that idempotent writes plus the durable cursor create neither gaps nor duplicates.
- Inject or replay a reorg scenario and verify rollback to the common ancestor.
- Price the same completed workload under normal, backfill, and failure conditions.
Run long enough to expose throttling, cache effects, and degradation. The gap-free `eth_getLogs` backfill guide provides the paging and cursor design for log-driven benchmarks.
RPC provider scorecard for indexers
Apply hard gates first, then score the survivors with weights that reflect the product. A practical scorecard is:
- Capability: every required chain, method, tracer, transport, and oldest block passes on the normal and failover paths. Hard gate.
- Correctness: known results match, block identities are coherent, valid empty results are preserved, and reorg drills are recoverable.
- Live throughput: the indexer stays within its permitted head distance at sustained load.
- Backfill recovery: the measured catch-up rate meets the recovery objective without starving live traffic.
- Reliability: timeout, 429, stale response, and retry rates stay within predeclared thresholds.
- Cost predictability: normal, backfill, and incident estimates use the same completed workload and include retries.
- Operations and support: ownership, escalation, change notice, and recovery expectations are explicit.
- Portability: the application can export data, preserve its cursor, and move a workload without depending on a proprietary response shape.
Do not hide a failed hard gate inside a weighted average. Publish the test inputs, thresholds, raw observations, and date; client versions, provider policies, and chain support change, so a provider selection is evidence for a point in time rather than a permanent ranking.
Bottom line
For indexers, RPC is data infrastructure. Choose a provider based on logs, archive behavior, throughput, retries, failover, support, and cost predictability.