Search code examples
pythonpython-requestssolana

Read JSON metadata for a token from Solscan


I'm using python and trying to read the metadata from a token on solscan. I am looking for the name, image, etc from metadata.

I am currently using JSON request which seems to work (ie not fail), but it only returns me:

{"holder":0}

Process finished with exit code 0

I am doing several other requests to website, so I think my request is correct. I tried looking at the documentation on https://public-api.solscan.io/docs and I believe I am requesting the correct info, but I dont get it.

Here is my current code:

import requests

headers = {
    'accept': 'application/jsonParsed',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
}

params = (
    ('tokenAddress', 'EArf8AxBi44QxFVnSab9gZpXTxVGiAX2YCLokccr1UsW'),
)

response = requests.get('https://public-api.solscan.io/token/meta', headers=headers, params=params)

#response = requests.get('https://arweave.net/viPcoBnO9OjXvnzGMXGvqJ2BEgl25BMtqGaj-I1tkCM', headers=headers)

print(response.content.decode())

Any help appreciated!


Solution

  • This code sample works:

    import requests
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'
    }
    
    params = {
        'address': 'EArf8AxBi44QxFVnSab9gZpXTxVGiAX2YCLokccr1UsW',
    }
    
    response = requests.get('https://api.solscan.io/account', headers=headers, params=params)
    
    print(response.content.decode())
    

    I use another URL and parameters in my sample: https://api.solscan.io/account used instead of https://public-api.solscan.io/token/meta and address param instead of tokenAddress.