Skip to content

Choose a data service

Compare RPC, Subgraphs, and Substreams by interface, workload, data model, and operational ownership.

Pick the service that returns the data your application needs in the shape it can use, with the least state for you to maintain. Start from the job, check what each service leaves to you, then run that service's quickstart.

Match your need to a service

RPC

  • Read contract state or balances nowIt exposes native EVM node methods without an indexing layer.
  • Submit transactionsTransaction submission is part of the JSON-RPC interface.
Start with RPC

Subgraphs

  • Query an existing entity schema through GraphQLQuery indexed entities without building the indexing pipeline yourself.
Start with Subgraphs

Substreams

  • Process every block or event in orderIt streams deterministic package output with cursors and undo signals.
  • Backfill a stream into your own databaseYour consumer can replay ranges and materialize the result it needs.
Start with Substreams

What GraphOps runs and what you own

Every service shares organization API keys, metering and credits. The difference is how much state you keep: RPC leaves composition and history to you, Subgraphs keeps an indexed view for you, and Substreams hands you an ordered stream to store yourself.

How the services differ

ConcernRPCSubgraphsSubstreams
InterfaceEVM JSON-RPC over HTTPS and WebSocket.GraphQL over HTTPS.gRPC streams with cursors.
Data shapeNode request and response objects.GraphQL entities defined by a Subgraph schema.Block-scoped module output.
FreshnessChain head and explicit block references.Subgraph indexing progress.Selected start and stop blocks and finality mode.
Long-running stateYour application polls or subscribes.GraphOps keeps the indexed Subgraph view.Your consumer materializes state.
RecoveryRetry against an explicit block reference.Inspect _meta and indexing status.Resume from a committed cursor and process undo signals.

Combine services

One product often uses more than one service. Each needs its own API key, and all of them draw from your organization's credit balance.

  • Wallet or dapp: Subgraphs for read-heavy views such as balances and history, and RPC to submit transactions and read the latest contract state.
  • Analytics backend: Substreams to backfill and stream events into your database, and RPC for occasional point reads at a specific block.
  • Trading or monitoring bot: RPC WebSocket subscriptions for new blocks and logs, with a Subgraph for indexed context.

When a workload could fit more than one service, start with the smallest interface that completes the job: RPC for direct node calls, Subgraphs for an existing GraphQL entity model, and Substreams when you need an ordered data pipeline. If you are still unsure, ask GraphOps support with a short description of the workload.

Next steps