Links
💐

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 (free)
  • Basic knowledge of GraphQL

Get Started

JavaScript/TypeScript/Python
If you are using JavaScript/TypeScript or Python, Install the Airstack SDK:
npm
yarn
pnpm
pip
React
npm install @airstack/airstack-react
Node
npm install @airstack/node
React
yarn add @airstack/airstack-react
Node
yarn add @airstack/node
React
pnpm install @airstack/airstack-react
Node
pnpm install @airstack/node
pip install airstack
Then, add the following snippets to your code:
React
Node
Python
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>;
}
};
import { init, fetchQuery } from "@airstack/node";
init("YOUR_AIRSTACK_API_KEY");
const query = `YOUR_QUERY`; // Replace with GraphQL Query
const { data, error } = await fetchQuery(query);
console.log("data:", data);
console.log("error:", error);
import asyncio
from airstack.execute_query import AirstackClient
api_client = AirstackClient(api_key="YOUR_AIRSTACK_API_KEY")
query = """YOUR_QUERY""" # Replace with GraphQL Query
async def main():
execute_query_client = api_client.create_execute_query_object(
query=query)
query_response = await execute_query_client.execute_query()
print(query_response.data)
asyncio.run(main())
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.
Airstack AI (Demo)

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, Lens profile name or Lens profile ID (decimal or hex):

Try Demo

https://app.airstack.xyz/query/XTj0vyFSrL
Show me the Lens following of lens/@stani, lens_id:0x024, vitalik.eth, 0xeaf55242a90bb3289dB8184772b0B98562053559

Code

Query
Response
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
}
}
}
{
"data": {
"SocialFollowings": {
"Following": [
{
"followingAddress": {
"addresses": [
"0x008b1ffe244bf31896c833bff4ad9009e7a0f4eb"
],
"socials": [
{
"profileName": "lens/@yummy",
"profileTokenId": "47982",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@abertog",
"profileTokenId": "3568",
"profileTokenIdHex": ""
}
]
},
"followingProfileId": "3568",
"followerAddress": {
"addresses": [
"0x8ec94086a724cbec4d37097b8792ce99cadcd520"
],
"domains": [
{
"name": "tiktoktopmoments.eth"
},
{
"name": "crimsonchin.eth"
},
{
"name": "levelsdigital.eth"
},
{
"name": "saintevie.eth"
},
{
"name": "bradorbradley.eth"
}
],
"socials": [
{
"profileName": "lens/@westlakevillage",
"profileTokenId": "99755",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@brad",
"profileTokenId": "116598",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@bradorbradley",
"profileTokenId": "36",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@hanimourra",
"profileTokenId": "116239",
"profileTokenIdHex": ""
}
]
},
"followerProfileId": "36",
"followerTokenId": "245"
},
// more following
]
}
}
}

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

https://app.airstack.xyz/query/PycMq2SXq7
Show me if a group of users is following lens/@shnoodles on Lens

Code

Query
Response
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
}
}
}
}
}
}
{
"data": {
"Wallet": {
"socialFollowings": {
"Following": [
{
"dappName": "lens",
"dappSlug": "lens_polygon",
"followingProfileId": "27561",
"followerProfileId": "122312",
"followerAddress": {
"addresses": [
"0x0964256674e42d61f0ff84097e28f65311786ccb"
],
"socials": [
{
"profileName": "lens/@dawufi" // lens/@dawufi is following ipeciura.eth's on Lens
},
{
"profileName": "dawufi"
}
],
"domains": [
{
"name": "cantos.testbrand.eth"
},
{
"name": "dawufi.eth"
}
]
}
}
]
}
}
}
}
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, Lens profile name or Lens profile ID (decimal or hex):

Try Demo

https://app.airstack.xyz/query/bck3CGCmqN
Show me the most recent Lens following of lens/@stani, lens_id:0x024, vitalik.eth, 0xeaf55242a90bb3289dB8184772b0B98562053559

Code

Query
Response
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
}
}
}
{
"data": {
"SocialFollowings": {
"Following": [
{
"followingAddress": {
"addresses": ["0x6db4d0682d7d7bb68bd00c774dbdd05b91925c13"],
"socials": [
{
"profileName": "lens/@unlonely",
"profileTokenId": "120779",
"profileTokenIdHex": ""
}
]
},
"followingProfileId": "120779",
"followerAddress": {
"addresses": ["0x8ec94086a724cbec4d37097b8792ce99cadcd520"],
"domains": [
{
"name": "tiktoktopmoments.eth"
},
{
"name": "crimsonchin.eth"
},
{
"name": "levelsdigital.eth"
},
{
"name": "saintevie.eth"
},
{
"name": "bradorbradley.eth"
}
],
"socials": [
{
"profileName": "lens/@westlakevillage",
"profileTokenId": "99755",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@brad",
"profileTokenId": "116598",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@bradorbradley",
"profileTokenId": "36",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@hanimourra",
"profileTokenId": "116239",
"profileTokenIdHex": ""
}
]
},
"followerProfileId": "36",
"followerTokenId": "68"
}
// more following
]
}
}
}

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, Lens profile name or Lens profile ID (decimal or hex):

Try Demo

https://app.airstack.xyz/query/K0IH6CK0kT
Show me the earliest Lens following of lens/@stani, lens_id:0x024, vitalik.eth, 0xeaf55242a90bb3289dB8184772b0B98562053559

Code

Query
Response
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
}
}
}
{
"data": {
"SocialFollowings": {
"Following": [
{
"followingAddress": {
"addresses": ["0x6db4d0682d7d7bb68bd00c774dbdd05b91925c13"],
"socials": [
{
"profileName": "lens/@unlonely",
"profileTokenId": "120779",
"profileTokenIdHex": ""
}
]
},
"followingProfileId": "120779",
"followerAddress": {
"addresses": ["0x8ec94086a724cbec4d37097b8792ce99cadcd520"],
"domains": [
{
"name": "tiktoktopmoments.eth"
},
{
"name": "crimsonchin.eth"
},
{
"name": "levelsdigital.eth"
},
{
"name": "saintevie.eth"
},
{
"name": "bradorbradley.eth"
}
],
"socials": [
{
"profileName": "lens/@westlakevillage",
"profileTokenId": "99755",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@brad",
"profileTokenId": "116598",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@bradorbradley",
"profileTokenId": "36",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@hanimourra",
"profileTokenId": "116239",
"profileTokenIdHex": ""
}
]
},
"followerProfileId": "36",
"followerTokenId": "68"
}
// more following
]
}
}
}

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, Lens profile name or Lens profile ID (decimal or hex):

Try Demo

https://app.airstack.xyz/query/EZRlf8y3Ar
Show me all the Lens following of lens/@stani, lens_id:0x024, vitalik.eth, 0xeaf55242a90bb3289dB8184772b0B98562053559 and their ENS domains

Code

Query
Response
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
}
}
}
{
"data": {
"SocialFollowings": {
"Following": [
{
"followingAddress": {
"addresses": ["0x008b1ffe244bf31896c833bff4ad9009e7a0f4eb"],
"domains": [
{
"name": "abertog.eth",
"isPrimary": true
},
{
"name": "bertomeu.eth",
"isPrimary": false
}
],
"socials": [
{
"profileName": "lens/@yummy",
"profileTokenId": "47982",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@abertog",
"profileTokenId": "3568",
"profileTokenIdHex": ""
}
]
},
"followingProfileId": "3568",
"followerAddress": {
"addresses": ["0x8ec94086a724cbec4d37097b8792ce99cadcd520"],
"domains": [
{
"name": "tiktoktopmoments.eth"
},
{
"name": "crimsonchin.eth"
},
{
"name": "levelsdigital.eth"
},
{
"name": "saintevie.eth"
},
{
"name": "bradorbradley.eth"
}
],
"socials": [
{
"profileName": "lens/@westlakevillage",
"profileTokenId": "99755",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@brad",
"profileTokenId": "116598",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@bradorbradley",
"profileTokenId": "36",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@hanimourra",
"profileTokenId": "116239",
"profileTokenIdHex": ""
}
]
},
"followerProfileId": "36",
"followerTokenId": "245"
}
// more following
]
}
}
}
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, Lens profile name or Lens profile ID (decimal or hex):

Try Demo

https://app.airstack.xyz/query/pJYpYdO13X
Show me all the Lens following of lens/@stani, lens_id:0x024, vitalik.eth, 0xeaf55242a90bb3289dB8184772b0B98562053559 and check if their XMTP is enabled

Code

Query
Response
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
}
}
}
{
"data": {
"SocialFollowings": {
"Following": [
{
"followingAddress": {
"addresses": [
"0x008b1ffe244bf31896c833bff4ad9009e7a0f4eb"
],
"socials": [
{
"profileName": "lens/@yummy",
"profileTokenId": "47982",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@abertog",
"profileTokenId": "3568",
"profileTokenIdHex": ""
}
],
"xmtp": [
{
"isXMTPEnabled": true // have XMTP enabled
}
]
},
"followingProfileId": "3568",
"followerAddress": {
"addresses": [
"0x8ec94086a724cbec4d37097b8792ce99cadcd520"
],
"domains": [
{
"name": "tiktoktopmoments.eth"
},
{
"name": "crimsonchin.eth"
},
{
"name": "levelsdigital.eth"
},
{
"name": "saintevie.eth"
},
{
"name": "bradorbradley.eth"
}
],
"socials": [
{
"profileName": "lens/@westlakevillage",
"profileTokenId": "99755",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@brad",
"profileTokenId": "116598",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@bradorbradley",
"profileTokenId": "36",
"profileTokenIdHex": ""
},
{
"profileName": "lens/@hanimourra",