Relevant owners
curl --request GET \
--url https://api.neynar.com/v2/farcaster/fungible/owner/relevant/ \
--header 'x-api-key: <api-key>'import requests
url = "https://api.neynar.com/v2/farcaster/fungible/owner/relevant/"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.neynar.com/v2/farcaster/fungible/owner/relevant/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.neynar.com/v2/farcaster/fungible/owner/relevant/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.neynar.com/v2/farcaster/fungible/owner/relevant/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.neynar.com/v2/farcaster/fungible/owner/relevant/")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.neynar.com/v2/farcaster/fungible/owner/relevant/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"all_relevant_fungible_owners_dehydrated": [
{
"fid": 3,
"object": "user_dehydrated",
"custody_address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"display_name": "<string>",
"pfp_url": "<string>",
"score": 123,
"username": "<string>"
}
],
"top_relevant_fungible_owners_hydrated": [
{
"auth_addresses": [
{
"address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"app": {
"fid": 3,
"object": "user_dehydrated",
"custody_address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"display_name": "<string>",
"pfp_url": "<string>",
"score": 123,
"username": "<string>"
}
}
],
"custody_address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"fid": 3,
"follower_count": 123,
"following_count": 123,
"object": "user",
"profile": {
"bio": {
"text": "<string>",
"mentioned_channels": [
{
"id": "<string>",
"name": "<string>",
"object": "channel_dehydrated",
"image_url": "<string>",
"viewer_context": {
"following": true
}
}
],
"mentioned_channels_ranges": [
{
"end": 1,
"start": 1
}
],
"mentioned_profiles": [
{
"fid": 3,
"object": "user_dehydrated",
"custody_address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"display_name": "<string>",
"pfp_url": "<string>",
"score": 123,
"username": "<string>"
}
],
"mentioned_profiles_ranges": [
{
"end": 1,
"start": 1
}
]
},
"banner": {
"url": "<string>"
},
"live_at": {
"is_live": true,
"updated_at": "2023-11-07T05:31:56Z",
"url": "<string>"
},
"location": {
"latitude": 0,
"longitude": 0,
"address": {
"city": "<string>",
"country": "<string>",
"country_code": "<string>",
"state": "<string>",
"state_code": "<string>"
},
"radius": 1
}
},
"registered_at": "2023-11-07T05:31:56Z",
"username": "<string>",
"verifications": [
"0x5a927ac639636e534b678e81768ca19e2c6280b7"
],
"verified_accounts": [
{
"username": "<string>"
}
],
"verified_addresses": {
"eth_addresses": [
"0x5a927ac639636e534b678e81768ca19e2c6280b7"
],
"primary": {
"eth_address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"sol_address": "<string>"
},
"sol_addresses": [
"<string>"
]
},
"display_name": "<string>",
"experimental": {
"neynar_user_score": 123,
"deprecation_notice": "<string>"
},
"pfp_url": "<string>",
"pro": {
"expires_at": "2023-11-07T05:31:56Z",
"subscribed_at": "2023-11-07T05:31:56Z"
},
"score": 123,
"viewer_context": {
"blocked_by": true,
"blocking": true,
"followed_by": true,
"following": true
}
}
]
}{
"message": "<string>",
"code": "<string>",
"property": "<string>",
"status": 123
}Onchain
Relevant owners
Fetch a list of relevant owners for a on chain asset. If a viewer is provided, only relevant holders will be shown. This usually shows on a fungible asset page as āX, Y, Z and N others you know own this assetā.
GET
/
v2
/
farcaster
/
fungible
/
owner
/
relevant
/
Relevant owners
curl --request GET \
--url https://api.neynar.com/v2/farcaster/fungible/owner/relevant/ \
--header 'x-api-key: <api-key>'import requests
url = "https://api.neynar.com/v2/farcaster/fungible/owner/relevant/"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.neynar.com/v2/farcaster/fungible/owner/relevant/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.neynar.com/v2/farcaster/fungible/owner/relevant/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.neynar.com/v2/farcaster/fungible/owner/relevant/"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.neynar.com/v2/farcaster/fungible/owner/relevant/")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.neynar.com/v2/farcaster/fungible/owner/relevant/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"all_relevant_fungible_owners_dehydrated": [
{
"fid": 3,
"object": "user_dehydrated",
"custody_address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"display_name": "<string>",
"pfp_url": "<string>",
"score": 123,
"username": "<string>"
}
],
"top_relevant_fungible_owners_hydrated": [
{
"auth_addresses": [
{
"address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"app": {
"fid": 3,
"object": "user_dehydrated",
"custody_address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"display_name": "<string>",
"pfp_url": "<string>",
"score": 123,
"username": "<string>"
}
}
],
"custody_address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"fid": 3,
"follower_count": 123,
"following_count": 123,
"object": "user",
"profile": {
"bio": {
"text": "<string>",
"mentioned_channels": [
{
"id": "<string>",
"name": "<string>",
"object": "channel_dehydrated",
"image_url": "<string>",
"viewer_context": {
"following": true
}
}
],
"mentioned_channels_ranges": [
{
"end": 1,
"start": 1
}
],
"mentioned_profiles": [
{
"fid": 3,
"object": "user_dehydrated",
"custody_address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"display_name": "<string>",
"pfp_url": "<string>",
"score": 123,
"username": "<string>"
}
],
"mentioned_profiles_ranges": [
{
"end": 1,
"start": 1
}
]
},
"banner": {
"url": "<string>"
},
"live_at": {
"is_live": true,
"updated_at": "2023-11-07T05:31:56Z",
"url": "<string>"
},
"location": {
"latitude": 0,
"longitude": 0,
"address": {
"city": "<string>",
"country": "<string>",
"country_code": "<string>",
"state": "<string>",
"state_code": "<string>"
},
"radius": 1
}
},
"registered_at": "2023-11-07T05:31:56Z",
"username": "<string>",
"verifications": [
"0x5a927ac639636e534b678e81768ca19e2c6280b7"
],
"verified_accounts": [
{
"username": "<string>"
}
],
"verified_addresses": {
"eth_addresses": [
"0x5a927ac639636e534b678e81768ca19e2c6280b7"
],
"primary": {
"eth_address": "0x5a927ac639636e534b678e81768ca19e2c6280b7",
"sol_address": "<string>"
},
"sol_addresses": [
"<string>"
]
},
"display_name": "<string>",
"experimental": {
"neynar_user_score": 123,
"deprecation_notice": "<string>"
},
"pfp_url": "<string>",
"pro": {
"expires_at": "2023-11-07T05:31:56Z",
"subscribed_at": "2023-11-07T05:31:56Z"
},
"score": 123,
"viewer_context": {
"blocked_by": true,
"blocking": true,
"followed_by": true,
"following": true
}
}
]
}{
"message": "<string>",
"code": "<string>",
"property": "<string>",
"status": 123
}Related tutorial: Relevant holders for coins
Node.js SDK
š SDK Method: fetchRelevantFungibleOwners Use this API endpoint with the Neynar Node.js SDK for typed responses and better developer experience.Authorizations
API key to authorize requests
Query Parameters
Contract address of the fungible asset
Example:
"0x0db510e79909666d6dec7f5e49370838c16d950f"
Network of the fungible asset.
Available options:
ethereum, optimism, base, arbitrum If you provide a viewer_fid, the response will include token holders from the user's network, respecting their mutes and blocks and including viewer_context; if not provided, the response will show top token holders across the networkāboth sets can be combined to generate a longer list if desired.
Required range:
x >= 1Was this page helpful?
āI