Sismo Docs

Data Providers

In a GroupGenerator , the most interesting part is to query data. We have developed dataProviders for that. We currently support:
  • GraphQLProvider: allows to launch arbitrary graphQL queries
  • BigQueryProvider: allows to launch arbitrary BigQuery queries on the ethereum mainnet and polygon dataset
  • SnapshotProvider: allows to query all voters for a proposal or for an entire space
  • SubgraphHostedServiceProvider: allows to launch arbitrary queries on any subGraph.
  • PoapSubgraphProvider: allows to retrieve all attenders of any events.
  • LensProvider: allows to retrieve social informations on Lens Protocol (profiles, followers...)
  • GithubProvider: allows you to easily retrieve user informations from Github (commiters, organization members, stargazers...)
  • HiveProvider: allows you to easily retrieve data about Twitter influencers
  • TransposeProvider: allows you to launch arbitrary SQL request on the ethereum mainnet with Transpose (token holders, smart contracts interactions...)
You are very welcomed to modify or add your own provider by making a PR.
Let's use the SnapshotProvider provider to create your group:
const generator: GroupGenerator = {
generationFrequency: GenerationFrequency.Weekly,
generate: async (context: GenerationContext): Promise<GroupWithData[]> => {
// Instantiate your snapshot provider
const snapshotProvider = new dataProviders.SnapshotProvider();
// Query all voters
const voters = await snapshotProvider.queryAllVoters({
space: "ens.eth",
return [
name: "ens-voters",
timestamp: context.timestamp,
data: voters,
accountSources: [AccountSource.ETHEREUM],
valueType: ValueType.Info,
tags: [Tags.Mainnet, Tags.Vote, Tags.User],
export default generator;
You saw how you could use data from the "outside" (through API) now see how you could combine groups with each others using Data Operators.