đĢFarcaster Followers
Learn how to fetch Farcaster followers data and its various use cases and combinations.
Airstack provides easy-to-use APIs for enriching Farcaster applications and integrating on-chain and off-chain data with Farcaster.
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
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:
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.
Get Farcaster Followers of Farcaster User(s)
You can get the list of Farcaster followers of Farcaster user(s) by inputting , ENS domain, , or Farcaster ID:
Try Demo
Code
query MyQuery {
SocialFollowers(
input: {
filter: {
dappName: { _eq: farcaster }
identity: {
_in: [
"fc_fname:dwr.eth"
"fc_fid:602"
"varunsrin.eth"
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
]
}
}
blockchain: ALL
limit: 200
}
) {
Follower {
followerAddress {
addresses
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
}
followerProfileId
followerTokenId
followingAddress {
addresses
domains {
name
}
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
}
followingProfileId
}
}
}
{
"data": {
"SocialFollowers": {
"Follower": [
{
"followerAddress": {
"addresses": ["0x08f2ca269fc4ca7ec4f86c434dc13d120a116271"],
"socials": [
{
"profileName": "dian",
"userId": "9739",
"userAssociatedAddresses": [
"0x08f2ca269fc4ca7ec4f86c434dc13d120a116271"
]
}
]
},
"followerProfileId": "9739",
"followerTokenId": "",
"followingAddress": {
"addresses": [
"0x4114e33eb831858649ea3702e1c9a2db3f626446",
"0x182327170fc284caaa5b1bc3e3878233f529d741",
"0x91031dcfdea024b4d51e775486111d2b2a715871"
],
"domains": [
{
"name": "varunsrin.eth"
}
],
"socials": [
{
"profileName": "varunsrin.eth",
"userId": "2",
"userAssociatedAddresses": [
"0x4114e33eb831858649ea3702e1c9a2db3f626446",
"0x182327170fc284caaa5b1bc3e3878233f529d741",
"0x91031dcfdea024b4d51e775486111d2b2a715871"
]
}
]
},
"followingProfileId": "2"
}
// more Farcaster followers
]
}
}
}
Check A Given Farcaster User is A Follower of User(s) on Farcaster
You can use Airstack to check if user(s) is following a given Farcaster user on Farcaster.
This can be done by providing the given or ID on the Wallet
top-level query's identity
input and the user(s) in the socialFollowers
:
Try Demo
Code
query isFollowing {
Wallet(input: {identity: "fc_fname:ipeciura.eth", blockchain: ethereum}) {
socialFollowers( # Check if fc_fname:ipeciura.eth is a follower of these user identities 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: farcaster}}}
) {
Follower {
dappName
dappSlug
followingProfileId
followerProfileId
followingAddress {
addresses
socials {
dappName
profileName
}
domains {
name
}
}
}
}
}
}
{
"data": {
"Wallet": {
"socialFollowers": {
"Follower": [
{
"dappName": "farcaster", // follows on Farcaster
"dappSlug": "farcaster_optimism",
"followingProfileId": "602",
"followerProfileId": "2602",
"followingAddress": {
"addresses": [
"0x66bd69c7064d35d146ca78e6b186e57679fba249",
"0xeaf55242a90bb3289db8184772b0b98562053559"
],
"socials": [
{
"dappName": "farcaster",
"profileName": "betashop.eth" // ipeciura.eth is follower of betashop.eth
},
{
"dappName": "lens",
"profileName": "lens/@betashop9"
}
],
"domains": [
{
"name": "jasongoldberg.eth"
},
{
"name": "betashop.eth"
}
]
}
},
{
"dappName": "farcaster", // follows on Farcaster
"dappSlug": "farcaster_optimism",
"followingProfileId": "15971",
"followerProfileId": "2602",
"followingAddress": {
"addresses": [
"0xc6582cd12debdc9cbe4d972615589aba586550e7",
"0xc7486219881c780b676499868716b27095317416"
],
"socials": [
{
"dappName": "farcaster",
"profileName": "yosephks.eth" // ipeciura.eth is follower of yosephks.eth
},
{
"dappName": "lens",
"profileName": "lens/@yosephks"
}
],
"domains": [
{
"name": "yosephks.eth"
},
{
"name": "yosephks.cb.id"
}
]
}
},
{
"dappName": "farcaster", // follows on Farcaster
"dappSlug": "farcaster_optimism",
"followingProfileId": "6806",
"followerProfileId": "2602",
"followingAddress": {
"addresses": [
"0xe1b1e3bbf4f29bd7253d6fc1e2ddc9cacb0a546a",
"0x0964256674e42d61f0ff84097e28f65311786ccb"
],
"socials": [
{
"dappName": "lens",
"profileName": "lens/@dawufi"
},
{
"dappName": "farcaster",
"profileName": "dawufi" // ipeciura.eth is follower of dawufi.eth
}
],
"domains": [
{
"name": "cantos.testbrand.eth"
},
{
"name": "dawufi.eth"
}
]
}
},
// other followers
]
}
}
}
}
If ipeciura.eth
is a follower of any of the users on Lens, then it will appear as a response in the Follower
array as shown in the sample response.
Get Farcaster Followers of Farcaster User(s) that has XMTP Enabled
You can get the list of Farcaster followers of Farcaster user(s) and check if each followers have XMTP enabled or not by inputting , ENS domain, , or :
Try Demo
Code
query MyQuery {
SocialFollowers(
input: {
filter: {
dappName: { _eq: farcaster }
identity: {
_in: [
"fc_fname:dwr.eth"
"fc_fid:602"
"varunsrin.eth"
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
]
}
}
blockchain: ALL
limit: 200
}
) {
Follower {
followerAddress {
addresses
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
xmtp {
isXMTPEnabled
}
}
followerProfileId
followerTokenId
followingAddress {
addresses
domains {
name
}
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
}
followingProfileId
}
}
}
{
"data": {
"SocialFollowers": {
"Follower": [
{
"followerAddress": {
"addresses": [
"0xd28c2e920bb2e4f159c31ac052b2ed57390996e5",
"0xabc4f7d130d0c6be07b7ed23a315e3f60c4d5661"
],
"socials": [
{
"profileName": "schneller",
"userId": "12305",
"userAssociatedAddresses": [
"0xd28c2e920bb2e4f159c31ac052b2ed57390996e5",
"0xabc4f7d130d0c6be07b7ed23a315e3f60c4d5661"
]
}
],
"xmtp": [
{
"isXMTPEnabled": true // XMTP is enabled
}
]
},
"followerProfileId": "12305",
"followerTokenId": "",
"followingAddress": {
"addresses": [
"0x4114e33eb831858649ea3702e1c9a2db3f626446",
"0x182327170fc284caaa5b1bc3e3878233f529d741",
"0x91031dcfdea024b4d51e775486111d2b2a715871"
],
"domains": [
{
"name": "varunsrin.eth"
}
],
"socials": [
{
"profileName": "varunsrin.eth",
"userId": "2",
"userAssociatedAddresses": [
"0x4114e33eb831858649ea3702e1c9a2db3f626446",
"0x182327170fc284caaa5b1bc3e3878233f529d741",
"0x91031dcfdea024b4d51e775486111d2b2a715871"
]
}
]
},
"followingProfileId": "2"
},
// more followers
]
}
}
}
Get Farcaster Users that have a certain amount of Followers
You can get the list of all Farcaster users that have a certain amount of followers, e.g. at least 1000 followers:
Try Demo
Code
query MyQuery {
Socials(
input: {
filter: { followerCount: { _gte: 1000 }, dappName: { _eq: farcaster } }
blockchain: ethereum
limit: 200
}
) {
Social {
profileName
userId
userAssociatedAddresses
followerCount
}
}
}
{
"data": {
"Socials": {
"Social": [
{
"profileName": "pfista",
"userId": "451",
"userAssociatedAddresses": [
"0xd2344f892241e3a83c7eca8e586093714be8ca7f",
"0x8a95d5f9ac0eebd5880199ea8fcd0fae845bbbf2",
"0x92382f5c6ad39829a07537d18807462960025725"
],
"followerCount": 7620
},
{
"profileName": "jayme",
"userId": "373",
"userAssociatedAddresses": [
"0x1ca66c990e86b750ea6b2180d17fff89273a5c0d",
"0x9eab9d856a3a667dc4cd10001d59c679c64756e7"
],
"followerCount": 9554
},
{
"profileName": "macbudkowski",
"userId": "1048",
"userAssociatedAddresses": [
"0x66cc8f831f2a05fde7573f18ba6abfef8ad59d34",
"0x3e6c23cdaa52b1b6621dbb30c367d16ace21f760"
],
"followerCount": 5766
}
]
}
}
}
Get Farcaster and Lens Followers of Lens Profile(s)
You can get the list of Farcaster and Lens followers of Farcaster user(s) by inputting , ENS domain, , or :
Try Demo
Code
query MyQuery {
SocialFollowers(
input: {
filter: {
identity: {
_in: [
"fc_fname:dwr.eth"
"fc_fid:602"
"varunsrin.eth"
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
]
}
}
blockchain: ALL
limit: 200
}
) {
Follower {
followerAddress {
addresses
socials {
dappName
profileName
profileTokenId
profileTokenIdHex
userId
userAssociatedAddresses
}
}
followerProfileId
followingAddress {
addresses
domains {
name
}
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
}
followingProfileId
}
}
}
{
"data": {
"SocialFollowers": {
"Follower": [
{
"followerAddress": {
"addresses": ["0x08f2ca269fc4ca7ec4f86c434dc13d120a116271"],
"socials": [
{
"dappName": "farcaster",
"profileName": "dian",
"profileTokenId": "9739",
"profileTokenIdHex": "",
"userId": "9739",
"userAssociatedAddresses": [
"0x08f2ca269fc4ca7ec4f86c434dc13d120a116271"
]
}
]
},
"followerProfileId": "9739",
"followingAddress": {
"addresses": [
"0x4114e33eb831858649ea3702e1c9a2db3f626446",
"0x182327170fc284caaa5b1bc3e3878233f529d741",
"0x91031dcfdea024b4d51e775486111d2b2a715871"
],
"domains": [
{
"name": "varunsrin.eth"
}
],
"socials": null
},
"followingProfileId": "2"
}
// more followers
]
}
}
}
Get All Farcaster Followers That Also Have A Power Badge
You can fetch all Farcaster followers of a Farcaster user and check if they have a power badge by using the SocialFollowers
API:
Try Demo
Code
query MyQuery {
SocialFollowers(
input: {
filter: {
identity: {_eq: "betashop.eth"},
dappName: {_eq: farcaster}
},
blockchain: ALL,
order: {followerSince: DESC}
}
) {
Follower {
followerProfileId
followerAddress {
addresses
socials {
profileName
isFarcasterPowerUser
}
}
}
}
}
{
"data": {
"SocialFollowers": {
"Follower": [
{
"followerProfileId": "411529",
"followerAddress": {
"addresses": [
"0xbc0b2add51010730563159a84d613eddc7d21e4c"
],
"socials": [
{
"profileName": "defi-degen",
"isFarcasterPowerUser": false // This user have no power badge
}
]
}
},
// other followers
]
}
}
}
Get Farcaster Followers of Farcaster User(s) that Hold ERC20 Token(s)
You can get the list of Farcaster followers of Farcaster user(s) that also hold ERC20 token(s), e.g. USDC, by inputting , ENS domain, , or Farcaster ID:
Try Demo
Code
query MyQuery {
SocialFollowers(
input: {
filter: {
identity: {
_in: [
"fc_fname:dwr.eth"
"fc_fid:602"
"varunsrin.eth"
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
]
}
dappName: { _eq: farcaster }
}
blockchain: ALL
limit: 200
}
) {
Follower {
followerAddress {
addresses
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
tokenBalances(
input: {
filter: {
tokenAddress: {
_in: ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]
}
tokenType: { _eq: ERC20 }
}
}
) {
formattedAmount
}
}
followerProfileId
followerTokenId
followingAddress {
addresses
domains {
name
}
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
}
followingProfileId
}
}
}
{
"data": {
"SocialFollowers": {
"Follower": [
{
"followerAddress": {
"addresses": [
"0xd3c3228fa91ff3b2b146f4b4a1f6222e640ed559",
"0x7954aa7d63fc32203f23177e502871c4d1e7307b"
],
"socials": [
{
"profileName": "kevinli",
"userId": "11370",
"userAssociatedAddresses": [
"0xd3c3228fa91ff3b2b146f4b4a1f6222e640ed559",
"0x7954aa7d63fc32203f23177e502871c4d1e7307b"
]
}
],
"tokenBalances": [
{
"formattedAmount": 1494.378076 // hold USDC
}
]
},
"followingAddress": {
"addresses": [
"0x4114e33eb831858649ea3702e1c9a2db3f626446",
"0x182327170fc284caaa5b1bc3e3878233f529d741",
"0x91031dcfdea024b4d51e775486111d2b2a715871"
],
"domains": [
{
"name": "varunsrin.eth"
}
],
"socials": [
{
"profileName": "varunsrin.eth",
"userId": "2",
"userAssociatedAddresses": [
"0x4114e33eb831858649ea3702e1c9a2db3f626446",
"0x182327170fc284caaa5b1bc3e3878233f529d741",
"0x91031dcfdea024b4d51e775486111d2b2a715871"
]
}
]
},
"followingProfileId": "2"
}
// more followers
]
}
}
}
Get Farcaster Followers of Farcaster User(s) that Hold ERC721/1155 NFT(s)
You can get the list of Farcaster followers of Farcaster user(s) that also hold ERC721/1155 NFT(s), e.g. BAYC, by inputting , ENS domain, , or Farcaster ID:
Try Demo
Code
query MyQuery {
SocialFollowers(
input: {
filter: {
identity: {
_in: [
"fc_fname:dwr.eth"
"fc_fid:602"
"varunsrin.eth"
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
]
}
dappName: { _eq: farcaster }
}
blockchain: ALL
limit: 200
}
) {
Follower {
followerAddress {
addresses
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
tokenBalances(
input: {
filter: {
tokenAddress: {
_in: ["0xBC4CA0EdA7647A8aB7C2061c2E118A18a936f13D"]
}
tokenType: { _in: [ERC721, ERC1155] }
}
}
) {
formattedAmount
}
}
followerProfileId
followerTokenId
followingAddress {
addresses
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
}
followingProfileId
}
}
}
{
"data": {
"SocialFollowers": {
"Follower": [
{
"followerAddress": {
"addresses": [
"0x2bd2b6e88b6653bb3615961090d421ac58e44be4",
"0x980cd99311f3b3264f5dfdce33d204a8d6d492e4"
],
"socials": [
{
"profileName": "if",
"userId": "8151",
"userAssociatedAddresses": [
"0x2bd2b6e88b6653bb3615961090d421ac58e44be4",
"0x980cd99311f3b3264f5dfdce33d204a8d6d492e4"
]
}
],
"tokenBalances": [
{
"formattedAmount": 1 // Hold 1 BAYC
}
]
},
"followerProfileId": "8151",
"followerTokenId": "",
"followingAddress": {
"addresses": [
"0xadd746be46ff36f10c81d6e3ba282537f4c68077",
"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"
],
"socials": [
{
"profileName": "vitalik.eth",
"userId": "5650",
"userAssociatedAddresses": [
"0xadd746be46ff36f10c81d6e3ba282537f4c68077",
"0xd8da6bf26964af9d7eed9e03e53415d37aa96045"
]
}
]
},
"followingProfileId": "5650"
},
// more followers
]
}
}
}
Get Farcaster Followers of Farcaster User(s) that Hold POAP(s)
You can get the list of Farcaster followers of Farcaster user(s) that also hold POAP(s), e.g. EthCC[6] â Attendee POAP, by inputting , ENS domain, , or Farcaster ID:
Try Demo
Code
query MyQuery {
SocialFollowers(
input: {
filter: {
identity: {
_in: [
"fc_fname:dwr.eth"
"fc_fid:602"
"varunsrin.eth"
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
]
}
dappName: { _eq: farcaster }
}
blockchain: ALL
limit: 200
}
) {
Follower {
followerAddress {
addresses
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
poaps(input: { filter: { eventId: { _eq: "141910" } } }) {
mintHash
mintOrder
}
}
followerProfileId
followerTokenId
followingAddress {
addresses
domains {
name
}
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
}
followingProfileId
}
}
}
{
"data": {
"SocialFollowers": {
"Follower": [
{
"followerAddress": {
"addresses": [
"0xe79a8659fc91f07f80688a5fba034093a9a5412b",
"0xb32792a81085001713e571f3b5794409e587a258"
],
"socials": [
{
"profileName": "martinbreiten.eth",
"userId": "2792",
"userAssociatedAddresses": [
"0xe79a8659fc91f07f80688a5fba034093a9a5412b",
"0xb32792a81085001713e571f3b5794409e587a258"
]
}
],
"poaps": [
{
// This indicate that the follower has the EthCC[6] POAP
"mintHash": "0x97902dfac8b17aedd67a736d9a57b437e7da450e058ff58a377ba24e230990e2",
"mintOrder": 1235
}
]
},
"followerProfileId": "2792",
"followerTokenId": "",
"followingAddress": {
"addresses": [
"0x74232bf61e994655592747e20bdf6fa9b9476f79",
"0xb877f7bb52d28f06e60f557c00a56225124b357f",
"0xa14b4c95b5247199d74c5578531b4887ca5e4909",
"0xd7029bdea1c17493893aafe29aad69ef892b8ff2"
],
"domains": [
{
"name": "dwr.eth"
},
{
"name": "noun124.eth"
},
{
"name": "dwr.mirror.xyz"
},
{
"name": "danromero.eth"
}
],
"socials": [
{
"profileName": "dwr.eth",
"userId": "3",
"userAssociatedAddresses": [
"0x74232bf61e994655592747e20bdf6fa9b9476f79",
"0xb877f7bb52d28f06e60f557c00a56225124b357f",
"0xa14b4c95b5247199d74c5578531b4887ca5e4909",
"0xd7029bdea1c17493893aafe29aad69ef892b8ff2"
]
}
]
},
"followingProfileId": "3"
},
// more followers
]
}
}
}
Get Farcaster Followers of Farcaster User(s) that Hold Certain Amount of ERC20 Token(s)
You can get the list of Farcaster followers of Farcaster user(s) that also hold a certain amount of ERC20 token(s), e.g. at least 1000 USDC, by inputting , ENS domain, , or Farcaster ID:
Try Demo
Code
query MyQuery {
SocialFollowers(
input: {
filter: {
identity: {
_in: [
"fc_fname:dwr.eth"
"fc_fid:602"
"varunsrin.eth"
"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
]
}
dappName: { _eq: farcaster }
}
blockchain: ALL
limit: 200
}
) {
Follower {
followerAddress {
addresses
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
tokenBalances(
input: {
filter: {
tokenAddress: {
_in: ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]
}
tokenType: { _eq: ERC20 }
formattedAmount: { _gte: 1000 }
}
}
) {
formattedAmount
}
}
followingAddress {
addresses
domains {
name
}
socials(input: { filter: { dappName: { _eq: farcaster } } }) {
profileName
userId
userAssociatedAddresses
}
}
followingProfileId
}
}
}
{
"data": {
"SocialFollowers": {
"Follower": [
"followerAddress": {
"addresses": [
"0xd3c3228fa91ff3b2b146f4b4a1f6222e640ed559",
"0x7954aa7d63fc32203f23177e502871c4d1e7307b"
],
"socials": [
{
"profileName": "kevinli",
"userId": "11370",
"userAssociatedAddresses": [
"0xd3c3228fa91ff3b2b146f4b4a1f6222e640ed559",
"0x7954aa7d63fc32203f23177e502871c4d1e7307b"
]
}
],
"tokenBalances": [
{
"formattedAmount": 1494.378076 // hold at least 1000 USDC
}
]
},
"followingAddress": {
"addresses": [
"0x4114e33eb831858649ea3702e1c9a2db3f626446",
"0x182327170fc284caaa5b1bc3e3878233f529d741",
"0x91031dcfdea024b4d51e775486111d2b2a715871"
],
"domains": [
{
"name": "varunsrin.eth"
}
],
"socials": [
{
"profileName": "varunsrin.eth",
"userId": "2",
"userAssociatedAddresses": [
"0x4114e33eb831858649ea3702e1c9a2db3f626446",
"0x182327170fc284caaa5b1bc3e3878233f529d741",
"0x91031dcfdea024b4d51e775486111d2b2a715871"
]
}
]
},
"followingProfileId": "2"
},
// more followers
]
}
}
}
Developer Support
If you have any questions or need help regarding fetching Farcaster Followers data, please join our Airstack's Telegram group.
More Resources
Last updated
Was this helpful?