Skip to main content

Get Hourly Snapshots Of Certain Fan Token

In this tutorial, you will learn how to get the hourly snapshots of a certain fan token by calling the Moxie Protocol Subgraph API.

Pre-requisites

Install dependencies graphql and graphql-request to your project :
npm install graphql graphql-request 

Step 1: Add The API Query To Your Code

To get the hourly snapshots of a certain fan token, you can use the following query:

query MyQuery($fanTokenAddress: ID) {
subjectTokens(where: { id: $fanTokenAddress }) {
hourlySnapshots {
hourlyPriceChange
hourlyProtocolFeeChange
hourlyUniqueHoldersChange
hourlyVolumeChange
endPrice
endProtocolFee
endTimestamp
endUniqueHolders
endVolume
reserve
startPrice
startProtocolFee
startUniqueHolders
startVolume
totalSupply
}
}
}
With this GraphQL query, you can add it to your source code and call the API with the graphql-request library:
index.ts
import { gql, GraphQLClient } from "graphql-request";


const graphQLClient = new GraphQLClient(
"https://api.studio.thegraph.com/query/23537/moxie_protocol_stats_mainnet/version/latest"
);

const query = gql`
query MyQuery($fanTokenAddress: ID) {
subjectTokens(where: { id: $fanTokenAddress }) {
hourlySnapshots {
hourlyPriceChange
hourlyProtocolFeeChange
hourlyUniqueHoldersChange
hourlyVolumeChange
endPrice
endProtocolFee
endTimestamp
endUniqueHolders
endVolume
reserve
startPrice
startProtocolFee
startUniqueHolders
startVolume
totalSupply
}
}
}
`;

const variable = {
"fanTokenAddress": "0x0045214aa342f75ff65c0208002302b57ddb9c22"
}


try {
const data = await graphQLClient.request(query, variable);
console.log(data);
} catch (e) {
throw new Error(e);
}

Step 2: Execute Your Code

Once you have your code ready, you can execute it by running the following command:

ts-node index.ts

If it runs successfully, you should see the data returned in the terminal:

{
"data": {
"subjectTokens": [
{
"hourlySnapshots": [
{
"hourlyPriceChange": "0",
"hourlyProtocolFeeChange": "0",
"hourlyUniqueHoldersChange": "3",
"hourlyVolumeChange": "0",
"endPrice": "0",
"endProtocolFee": "0",
"endTimestamp": "1721239200",
"endUniqueHolders": "3",
"endVolume": "0",
"reserve": "0",
"startPrice": "0",
"startProtocolFee": "0",
"startUniqueHolders": "0",
"startVolume": "0",
"totalSupply": "10000000000000000000"
}
]
}
]
}
}

Congrats! 🥳🎉 You've just fetched the hourly snapshots of a certain fan token!

Developer Support

If you have any questions or need help with other use cases, feel free to join the /airstack Warpcast channel and ask your questions there.

Our team is always ready to help you with any questions you may have.