Skip to content

Discover Substreams

Find a Substreams package, follow how data flows through its modules, check its output types, and get a query endpoint for it.

Choose a package to stream before you write a consumer, and leave with a pinned release you can run. Search by package or network name, and filter by network. You need membership in a GraphOps organization.

Discover Substreams(opens in a new tab)
Find a package, open an exact release, check its modules and output types, then copy the pinned package URL into your consumer or the endpoint wizard.

Choose a package

The catalog lists the most-downloaded packages on each supported Substreams network, ranked by Registry downloads published by substreams.dev(opens in a new tab). Each bar compares a package with the most-downloaded package in the catalog. Downloads measure registry popularity, not query volume or whether a package fits your application. To explore a release that is not listed, look it up.

To look up a release you already know, paste it into the same search box and apply it:

  • its name and version, <package>@<version>;
  • its substreams.dev release page, https://substreams.dev/packages/<package>/<version>;
  • its registry download URL, https://spkg.io/v1/packages/<package>/<version>.

The page offers Explore package for that release, even when it is not among the popular packages. Only releases published in the substreams.dev registry with an exact version can be explored. Other .spkg URLs, such as GitHub release downloads, and latest references cannot be explored; you can still run them with your Substreams client.

Inspect a package

Choose a package name, or View Substreams package in its row's actions menu, to open it. Package metadata shows the pinned package URL to copy into your consumer, the network the package declares and whether GraphOps Substreams serves it, its modules, earliest start block, block source, sink module and source repository. The package's modules and output types have their own sections.

A published release never changes, so a release that can't be read as a Substreams package, or one larger than the explorer can inspect, can't be explored, and retrying gives the same result. Inspect a large release locally with the substreams CLI, or choose another release.

README shows the documentation the package author published with the release, such as what it emits, the params it accepts and how to run it. A long README opens as a preview; choose Show full README to read the rest. Links open in a new tab. Images and links relative to the package's repository appear as text, so open the repository to see them.

Modules starts with a graph of how data flows through the package, so you can see what the module you plan to stream depends on. Data flows from left to right: block sources such as sf.ethereum.type.v2.Block and params feed the modules that read them, through to the sink module. Each module shows its kind, the update policy of a store, its output type and its start block when that differs from the package's earliest. A get connection reads a store's current values, and deltas reads each block's changes. A dashed filter connection comes from a block index that limits which blocks a module processes. Hover over or focus a module to highlight its inputs and the modules that consume it. Drag to pan, pinch or use Ctrl + scroll to zoom, or choose Fit to see the whole graph. Choose Full screen beside the zoom buttons to expand the graph to the whole window; choose Exit full screen or press Esc to return. Choose the eye icon beside a module's name to jump to its details below.

Below the graph, each module shows its kind, start block, output type, the update policy of a store, and its inputs and block filter. Choose an input module to jump to its details. Modules that come from a package this package imports are listed under that package's name and version. Stream a map module from your client; store modules hold intermediate state for other modules. Output types shows the fields of each map module's output message and the messages it contains, grouped by protobuf package, with each field's number, so you can generate or check your consumer's types before running the package. The sink module's output is marked Sink output. Select an output type in the graph or module details to open its fields in Output types when the package publishes its definition. The same links connect message fields to their types, including messages contained in lists or maps. Types without a displayed definition appear as plain text.

Get an endpoint

Choose Get query endpoint in a package row's actions menu or the package page's Actions menu. The wizard selects the package's network and package, and opens on choosing an API key; the summary at the top shows them, and Edit changes them. The example command uses the package. Replace the <OUTPUT_MODULE>, <MODULE_PARAMS> and <START_BLOCK> placeholders with values from the package page, then run the example.

When you start from Networks instead, the example and the wizard preselect the network's most downloaded package. Choose another package under Example package. In the wizard, paste another package URL, or clear the field to keep the package placeholder. A network without registry packages keeps the placeholders. The wizard's address keeps your choices, except the API key token, so you can reload it or share it with a teammate. Supply a saved API key, or create one if you are an Owner or Developer. Closing the wizard returns you to the page you started from, with its search and filters preserved.

Next steps

Last updated