Skip to main content
Snapshot’s onchain data can be easily queried with open APIs known as subgraphs. Subgraphs are decentralized APIs powered by The Graph, a protocol for indexing & querying data from blockchains.

The Snapshot Subgraph

You can see an interactive query playground on the Snapshot subgraph’s page on The Graph Explorer, where you can test any query. Check out the following examples:
Example Query: Get the first 5 delegations from Snapshot
{
  delegations(first: 5) {
    id
    delegator
    space
    delegate
  }
}
Example output
{
  "data": {
    "delegations": [
      {
        "delegate": "0xde1e6a7ed0ad3f61d531a8a78e83ccddbd6e0c49",
        "delegator": "0x00000000005ef87f8ca7014309ece7260bbcdaeb",
        "id": "0x00000000005ef87f8ca7014309ece7260bbcdaeb-cvx.eth-0xde1e6a7ed0ad3f61d531a8a78e83ccddbd6e0c49",
        "space": 
      },
  //…
     ]}
}

Schema

The schema for this subgraph is defined here in Snapshot’s GitHub.

Snapshot Subgraph endpoint

https://gateway.thegraph.com/api/\[api-key]/subgraphs/id/4YgtogVaqoM8CErHWDK8mKQ825BcVdKB8vBYmb4avAQo This is visible from the Snapshot subgraph’s page on Graph Explorer.

How to obtain your own API key

  1. Go to thegraph.com/studio and connect your wallet.
  2. Go to https://thegraph.com/studio/apikeys/ to create an API key.
  3. You can use this API key on any subgraph on Graph Explorer, and it’s not limited to just Snapshot.

Other Snapshot Subgraphs

See all other subgraphs published by Snapshot Labs.

How to Query through the API

You can pass any GraphQL query to the Snapshot endpoint and receive data in JSON format. This following code example will return the exact same output as above.

Sample code (Node.js):

const axios = require('axios');

const graphqlQuery = `{
  delegations(first: 5) {
    id
    delegator
    space
    delegate
  }
}`;

const queryUrl = 'https://gateway.thegraph.com/api/[api-key]/subgraphs/id/4YgtogVaqoM8CErHWDK8mKQ825BcVdKB8vBYmb4avAQo';

const graphQLRequest = {
  method: 'post',
  url: queryUrl,
  data: {
    query: graphqlQuery,
  },
};

// Send the GraphQL query
axios(graphQLRequest)
  .then((response) => {
    // Handle the response here
    const data = response.data.data;
    console.log(data);
  })
  .catch((error) => {
    // Handle any errors
    console.error(error);
  });

How to use the Visual Query Editor

You can use the GraphiQL Explorer to compose your GraphQL queries by clicking on the fields you want.