# Discover Substreams

Source: https://docs.graphops.xyz/substreams/guides/discover-packages

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](https://platform.graphops.xyz/organizations/current/services/substreams/discover)

_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._

1. Find: Search or filter by network
2. Open a release: `<package>@<version>`
3. Inspect: Modules and output types
4. Run: Pinned URL and endpoint

## Choose a package

The catalog lists the most-downloaded packages on each supported Substreams network, ranked by
**Registry downloads** published by [substreams.dev](https://substreams.dev/packages).
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

* [Packages and modules](/substreams/concepts/packages-and-modules): Choose the output module and keep the version pinned.
* [Backfill a range](/substreams/guides/backfill-a-range): Run the package over historical blocks.
* [Run a sink](/substreams/guides/run-a-sink): Write the package's output to Postgres.