💐Lens Following

Learn how to fetch Lens following data and its various use cases and combinations.

💐 Lens Following

Airstack provides easy-to-use APIs for enriching Lens applications and integrating on-chain and off-chain data with Lens.

Table Of Contents

In this guide you will learn how to use Airstack to:

Pre-requisites

  • An Airstack account

  • Basic knowledge of GraphQL

Get Started

JavaScript/TypeScript/Python

If you are using JavaScript/TypeScript or Python, Install the Airstack SDK:

React

npm install @airstack/airstack-react

Node

npm install @airstack/node

Then, add the following snippets to your code:

import { init, useQuery } from "@airstack/airstack-react";

init("YOUR_AIRSTACK_API_KEY");

const query = `YOUR_QUERY`; // Replace with GraphQL Query

const Component = () => {
  const { data, loading, error } = useQuery(query);

  if (data) {
    return <p>Data: {JSON.stringify(data)}</p>;
  }

  if (loading) {
    return <p>Loading...</p>;
  }

  if (error) {
    return <p>Error: {error.message}</p>;
  }
};

Other Programming Languages

To access the Airstack APIs in other languages, you can use https://api.airstack.xyz/gql as your GraphQL endpoint.

🤖 AI Natural Language​

Airstack provides an AI solution for you to build GraphQL queries to fulfill your use case easily. You can find the AI prompt of each query in the demo's caption or title for yourself to try.

Get Lens Following of Lens Profile(s)

You can get the list of Lens following of Lens profile(s) by inputting either their 0x address, or Lens profile ID ( or ):

Try Demo

Show me the Lens following of lens/@stani, lens_id:0x024, vitalik.eth, 0xeaf55242a90bb3289dB8184772b0B98562053559

Code

query MyQuery {
  SocialFollowings(
    input: {
      filter: {
        dappName: { _eq: lens }
        identity: {
          _in: [
            "lens/@stani"
            "lens_id:0x024"
            "vitalik.eth"
            "0xeaf55242a90bb3289dB8184772b0B98562053559"
          ]
        }
      }
      blockchain: ALL
      limit: 200
    }
  ) {
    Following {
      followingAddress {
        addresses
        socials(input: { filter: { dappName: { _eq: lens } } }) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followingProfileId
      followerAddress {
        addresses
        domains {
          name
        }
        socials(input: { filter: { dappName: { _eq: lens } } }) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followerProfileId
      followerTokenId
    }
  }
}

Check If User(s) is Following A Given Lens Profile on Lens

You can use Airstack to check if user(s) is following a given Lens profile on Lens protocol.

This can be done by providing the given Lens profile on the Wallet top-level query's identity input and the user(s) in the socialFollowings:

Try Demo

Show me if a group of users is following lens/@shnoodles on Lens

Code

query isFollowing {
  Wallet(input: {identity: "lens/@shnoodles", blockchain: ethereum}) {
    socialFollowings( # Check if these user identities is following lens/@shnoodles on Lens
      input: {filter: {identity: {_in: ["0xeaf55242a90bb3289dB8184772b0B98562053559", "betashop.eth", "yosephks.cb.id", "lens/@deepesh", "lens_id:100275", "fc_fname:dawufi", "fc_fid:602"]}, dappName: {_eq: lens}}}
    ) {
      Following {
        dappName
        dappSlug
        followingProfileId
        followerProfileId
        followerAddress {
          addresses
          socials {
            profileName
          }
          domains {
            name
          }
        }
      }
    }
  }
}

If any of the user is following lens/@shnoodles on Lens, then it will appear as a response in the Following array as shown in the sample response.

Get The Most Recent Lens Following of Lens Profile(s)

You can get the list of most recent Lens following of Lens profile(s) by inputting either their 0x address, or Lens profile ID ( or ):

Try Demo

Code

query MyQuery {
  SocialFollowings(
    input: {
      filter: {
        dappName: { _eq: lens }
        identity: {
          _in: [
            "lens/@stani"
            "lens_id:0x024"
            "vitalik.eth"
            "0xeaf55242a90bb3289dB8184772b0B98562053559"
          ]
        }
      }
      blockchain: ALL
      limit: 200
      order: { followingSince: DESC }
    }
  ) {
    Following {
      followingAddress {
        addresses
        socials(input: { filter: { dappName: { _eq: lens } } }) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followingProfileId
      followerAddress {
        addresses
        domains {
          name
        }
        socials(input: { filter: { dappName: { _eq: lens } } }) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followerProfileId
      followerTokenId
    }
  }
}

Get The Earliest Lens Following of Lens Profile(s)

You can get the list of the earliest Lens following of Lens profile(s) by inputting either their 0x address, or Lens profile ID ( or ):

Try Demo

Code

query MyQuery {
  SocialFollowings(
    input: {
      filter: {
        dappName: { _eq: lens }
        identity: {
          _in: [
            "lens/@stani"
            "lens_id:0x024"
            "vitalik.eth"
            "0xeaf55242a90bb3289dB8184772b0B98562053559"
          ]
        }
      }
      blockchain: ALL
      limit: 200
      order: { followingSince: ASC }
    }
  ) {
    Following {
      followingAddress {
        addresses
        socials(input: { filter: { dappName: { _eq: lens } } }) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followingProfileId
      followerAddress {
        addresses
        domains {
          name
        }
        socials(input: { filter: { dappName: { _eq: lens } } }) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followerProfileId
      followerTokenId
    }
  }
}

Get Lens Following of Lens Profile(s) that has ENS Domain

You can get the list of Lens following of Lens profile(s) and check if they have any ENS domain by inputting either their 0x address, or Lens profile ID ( or ):

Try Demo

Code

query MyQuery {
  SocialFollowings(
    input: {filter: {dappName: {_eq: lens}, identity: {_in: ["lens/@stani", "lens_id:0x024", "vitalik.eth", "0xeaf55242a90bb3289dB8184772b0B98562053559"]}}, blockchain: ALL, limit: 200}
  ) {
    Following {
      followingAddress {
        addresses
        domains { # Show all domains owned by followers
          name
          isPrimary
        }
        socials(input: {filter: {dappName: {_eq: lens}}}) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followingProfileId
      followerAddress {
        addresses
        domains {
          name
        }
        socials(input: {filter: {dappName: {_eq: lens}}}) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followerProfileId
      followerTokenId
    }
  }
}

You can use the followingAddress.domains that will return an array to see if there's any domain owned by the following.

If the length of the followingAddress.domains array is non-zero, then the following has at least one ENS domain. Otherwise, it does not have any ENS domain.

Get Lens Following of Lens Profile(s) that has XMTP Enabled

You can get the list of Lens following of Lens profile(s) and check if they have XMTP enabled by inputting either their 0x address, or Lens profile ID ( or ):

Try Demo

Code

query MyQuery {
  SocialFollowings(
    input: {filter: {dappName: {_eq: lens}, identity: {_in: ["lens/@stani", "lens_id:0x024", "vitalik.eth", "0xeaf55242a90bb3289dB8184772b0B98562053559"]}}, blockchain: ALL, limit: 200}
  ) {
    Following {
      followingAddress {
        addresses
        socials(input: {filter: {dappName: {_eq: lens}}}) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
        xmtp {
          isXMTPEnabled # Indicate if following have XMTP enabled
        }
      }
      followingProfileId
      followerAddress {
        addresses
        domains {
          name
        }
        socials(input: {filter: {dappName: {_eq: lens}}}) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followerProfileId
      followerTokenId
    }
  }
}

Get Lens Profiles that have a certain amount of Following

You can get all the Lens profiles that have a certain amount of following, e.g. more than or equal to 1000 following counts on Lens:

Try Demo

Code

query MyQuery {
  Socials(
    input: {filter: {followingCount: {_gte: 1000}, dappName: {_eq: lens}}, blockchain: ethereum, limit: 200}
  ) {
    Social {
      profileName
      profileTokenId
      profileTokenIdHex
      followingCount # Total following count
    }
  }
}

Get Lens and Farcaster Following of Lens Profile(s)

You can get the list of Lens and Farcaster following of Lens profile(s) by inputting either their 0x address, or Lens profile ID ( or ):

Try Demo

Code

query MyQuery {
  SocialFollowings(
    input: {
      filter: {
        identity: {
          _in: [
            "lens/@stani"
            "lens_id:0x024"
            "vitalik.eth"
            "0xeaf55242a90bb3289dB8184772b0B98562053559"
          ]
        }
      }
      blockchain: ALL
      limit: 200
    }
  ) {
    Following {
      followingAddress {
        addresses
        socials {
          dappName
          profileName
          profileTokenId
          profileTokenIdHex
          userId
        }
      }
      followingProfileId
      followerAddress {
        addresses
        domains {
          name
        }
        socials(input: { filter: { dappName: { _eq: lens } } }) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followerProfileId
      followerTokenId
    }
  }
}

Get Lens Following of Lens Profile(s) that Hold ERC20 Token(s)

You can get the list of Lens following of Lens profile(s) that also hold certain ERC20 token(s), e.g. USDC, by inputting either their 0x address, or Lens profile ID ( or ):

Try Demo

Code

query MyQuery {
  SocialFollowings(
    input: {filter: {identity: {_in: ["lens/@stani", "lens_id:0x024", "vitalik.eth", "0xeaf55242a90bb3289dB8184772b0B98562053559"]}, dappName: {_eq: lens}}, blockchain: ALL, limit: 200}
  ) {
    Following {
      followingAddress {
        addresses
        socials(input: {filter: {dappName: {_eq: lens}}}) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
        tokenBalances(
          input: {filter: {tokenAddress: {_in: ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]}, tokenType: {_eq: ERC20}}}
        ) {
          formattedAmount # Indicate if following have any USDC
        }
      }
      followerAddress {
        addresses
        domains {
          name
        }
        socials(input: {filter: {dappName: {_eq: lens}}}) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followerProfileId
      followerTokenId
    }
  }
}

Get Lens Following of Lens Profile(s) that Hold ERC721/1155 NFT(s)

You can get the list of Lens following of Lens profile(s) that also hold certain ERC721 or ERC1155 NFT(s), e.g. BAYC, by inputting either their 0x address, or Lens profile ID ( or ):

Try Demo

Code

 query MyQuery {
  SocialFollowings(
    input: {filter: {identity: {_in: ["lens/@stani", "lens_id:0x024", "vitalik.eth", "0xeaf55242a90bb3289dB8184772b0B98562053559"]}, dappName: {_eq: lens}}, blockchain: ALL}
  ) {
    Following {
      followingAddress {
        addresses
        socials {
          profileName
          profileTokenId
          profileTokenIdHex
        }
        tokenBalances(
          input: {filter: {tokenAddress: {_in: ["0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D"]}, tokenType: {_in: [ERC721, ERC1155]}}}
        ) {
          formattedAmount # Indicate if following have any BAYC
        }
      }
      followerAddress {
        addresses
        domains {
          name
        }
        socials(input: {filter: {dappName: {_eq: lens}}}) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followerProfileId
      followerTokenId
    }
  }
}

Get Lens Following of Lens Profile(s) that Hold POAP(s)

You can get the list of Lens following of Lens profile(s) that also hold certain POAP(s), e.g. EthCC [6] Attendee POAP, by inputting either their 0x address, or Lens profile ID ( or ):

Try Demo

Code

query MyQuery {
  SocialFollowings(
    input: {
      filter: {
        identity: {
          _in: [
            "lens/@stani"
            "lens_id:0x024"
            "vitalik.eth"
            "0xeaf55242a90bb3289dB8184772b0B98562053559"
          ]
        }
        dappName: { _eq: lens }
      }
      blockchain: ALL
      limit: 200
    }
  ) {
    Following {
      followingAddress {
        addresses
        socials {
          profileName
          profileTokenId
          profileTokenIdHex
        }
        poaps(input: { filter: { eventId: { _eq: "141910" } } }) {
          mintHash
          mintOrder
        }
      }
      followerAddress {
        addresses
        domains {
          name
        }
        socials(input: { filter: { dappName: { _eq: lens } } }) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followerProfileId
      followerTokenId
    }
  }
}

Get Lens Following of Lens Profile(s) that Hold Certain Amount of ERC20 Token(s)

You can get the list of Lens following of Lens profile(s) that also hold certain amount of ERC20 token(s), e.g. more than or equal to 1000 USDC, by inputting either their 0x address, or Lens profile ID ( or ):

Try Demo

Code

query MyQuery {
  SocialFollowings(
    input: {
      filter: {
        identity: {
          _in: [
            "lens/@stani"
            "lens_id:0x024"
            "vitalik.eth"
            "0xeaf55242a90bb3289dB8184772b0B98562053559"
          ]
        }
        dappName: { _eq: lens }
      }
      blockchain: ALL
      limit: 200
    }
  ) {
    Following {
      followingAddress {
        addresses
        socials {
          profileName
          profileTokenId
          profileTokenIdHex
        }
        tokenBalances(
          input: {
            filter: {
              tokenAddress: {
                _in: ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]
              }
              tokenType: { _eq: ERC20 }
              formattedAmount: { _gte: 1000 }
            }
          }
        ) {
          formattedAmount
        }
      }
      followerAddress {
        addresses
        domains {
          name
        }
        socials(input: { filter: { dappName: { _eq: lens } } }) {
          profileName
          profileTokenId
          profileTokenIdHex
        }
      }
      followerProfileId
      followerTokenId
    }
  }
}

Developer Support

If you have any questions or need help regarding fetching Lens Following data, please join our Airstack's Telegram group.

More Resources

Last updated

Was this helpful?