Skip to main content
GET
/
{category}
/
{interval}
category
curl --request GET \
  --url https://api.jup.ag/tokens/v2/{category}/{interval} \
  --header 'x-api-key: <api-key>'
import requests

url = "https://api.jup.ag/tokens/v2/{category}/{interval}"

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.jup.ag/tokens/v2/{category}/{interval}', 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.jup.ag/tokens/v2/{category}/{interval}",
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.jup.ag/tokens/v2/{category}/{interval}"

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.jup.ag/tokens/v2/{category}/{interval}")
.header("x-api-key", "<api-key>")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.jup.ag/tokens/v2/{category}/{interval}")

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
[
  {
    "id": "So11111111111111111111111111111111111111112",
    "name": "Wrapped SOL",
    "symbol": "SOL",
    "decimals": 9,
    "usdPrice": 171.34,
    "stats24h": {
      "priceChange": 2.5,
      "volumeChange": 15000000,
      "numBuys": 50000,
      "numSells": 48000
    }
  }
]
{
"error": "<string>"
}
{
"error": "<string>"
}

Authorizations

x-api-key
string
header
required

Path Parameters

category
enum<string>
required
  • Top tokens in different trading categories
  • The result filters out generic top tokens like SOL, USDC, etc
  • Default to 50 mints in response
Available options:
toporganicscore,
toptraded,
toptrending
interval
enum<string>
required
  • Query by time interval for more accuracy
Available options:
5m,
1h,
6h,
24h

Query Parameters

limit
integer
  • Maximum number of results to return (default 50, max 100)
Required range: 1 <= x <= 100

Response

Successful response

id
string

The token's mint address

name
string
symbol
string
icon
string | null

URL to the token's logo image

decimals
number
tokenProgram
string

The token program address (SPL Token or Token-2022)

createdAt
string<date-time>

Token creation timestamp

twitter
string | null
telegram
string | null
website
string | null
discord
string | null
instagram
string | null
tiktok
string | null
otherUrl
string | null
dev
string | null

The token's developer wallet address

mintAuthority
string | null

Mint authority address (present when mint authority is not disabled)

freezeAuthority
string | null

Freeze authority address (present when freeze authority is not disabled)

circSupply
number | null
totalSupply
number | null
launchpad
string | null
partnerConfig
string | null
graduatedPool
string | null
graduatedAt
string | null
holderCount
number | null
fdv
number | null

Fully diluted valuation in USD

mcap
number | null

Market cap in USD

usdPrice
number | null
priceBlockId
number | null

Solana block number for the price data point

liquidity
number | null

Total liquidity in USD

apy
object | null

APY data, only present for assets listed on Jupiter Lend's Earn

stats5m
object | null
stats1h
object | null
stats6h
object | null
stats24h
object | null
firstPool
object | null
audit
object | null

Audit information. All sub-fields are conditional and vary per token.

organicScore
number

Organic trading activity score (0-100)

organicScoreLabel
enum<string>
Available options:
high,
medium,
low
isVerified
boolean | null
tags
string[] | null
updatedAt
string<date-time>

Last data update timestamp