Skip to main content

TL;DR

Jupiter’s Tokens API is the most widely used token data source on Solana. Search any token by name, symbol, or mint address and get metadata, verification status, organic score, and trading stats. Used by Phantom, Solflare, and most Solana apps. Base URL: https://api.jup.ag

Prerequisites

  1. Get an API key at portal.jup.ag
  2. All requests require the x-api-key header

Quick start

curl -X GET "https://api.jup.ag/tokens/v2/search?query=JUP" \
  -H "x-api-key: YOUR_API_KEY"

When you need this

You’re building something that needs Solana token data:
  • Wallet — Display token names, symbols, icons
  • Trading interface — Token search, verification badges
  • Portfolio tracker — Metadata, holder count, market cap
  • Analytics dashboard — Trading volume, organic score, liquidity
  • Trading bot — Filter tokens by metrics, find new listings
Common searches that lead here:
  • “solana token metadata api”
  • “get token logo solana”
  • “token verification solana”
  • “trending tokens solana api”

Why Jupiter

Jupiter maintains the most comprehensive token database on Solana:
  • 580k+ tokens indexed with metadata
  • Verification system trusted by major Solana wallets
  • Organic Score distinguishes real trading from wash trading
  • Real-time stats across 5m, 1h, 6h, 24h windows
The same data powers jup.ag and is used by Phantom, Solflare, and most Solana apps.

API Reference

Base URL: https://api.jup.ag
EndpointDescription
GET /tokens/v2/search?query={query}Search by mint, symbol, or name
GET /tokens/v2/tag?query={tag}Get tokens by tag (verified, lst)
GET /tokens/v2/{category}/{interval}Get trending/top tokens
GET /tokens/v2/recentGet recently listed tokens

Code examples

Search by mint, symbol, or name

curl -X GET "https://api.jup.ag/tokens/v2/search?query=JUP" \
  -H "x-api-key: YOUR_API_KEY"
Query options:
  • Mint address: So11111111111111111111111111111111111111112
  • Symbol: SOL, JUP, USDC
  • Name: Jupiter, Wrapped SOL
  • Multiple (comma-separated): SOL,JUP,USDC (max 100)

Get all verified tokens

curl -X GET "https://api.jup.ag/tokens/v2/tag?query=verified" \
  -H "x-api-key: YOUR_API_KEY"
Available tags: verified, lst (liquid staking tokens)
curl -X GET "https://api.jup.ag/tokens/v2/toptrending/1h?limit=50" \
  -H "x-api-key: YOUR_API_KEY"
Categories:
  • toptrending — Most price movement
  • toptraded — Highest volume
  • toporganicscore — Highest organic (real) activity
Intervals: 5m, 1h, 6h, 24h

Get recently listed tokens

curl -X GET "https://api.jup.ag/tokens/v2/recent" \
  -H "x-api-key: YOUR_API_KEY"
Returns tokens ordered by first pool creation time (not mint time).

Response format

TypeScript types

interface TokenInfo {
  id: string;                    // Mint address
  name: string;
  symbol: string;
  icon: string;                  // Logo URL
  decimals: number;
  isVerified: boolean;
  organicScore: number;          // 0-100
  organicScoreLabel: 'high' | 'medium' | 'low';
  holderCount: number;
  mcap: number;                  // Market cap in USD
  liquidity: number;             // Total liquidity in USD
  usdPrice: number;
  audit: {
    mintAuthorityDisabled: boolean;
    freezeAuthorityDisabled: boolean;
    isSus: boolean;              // Flagged as suspicious
  };
  tags: string[];                // e.g., ["verified", "community"]
  stats24h: {
    priceChange: number;         // Percentage
    buyVolume: number;
    sellVolume: number;
    numTraders: number;
  };
}

Example response

{
  "id": "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
  "name": "Jupiter",
  "symbol": "JUP",
  "icon": "https://static.jup.ag/jup/icon.png",
  "decimals": 6,
  "isVerified": true,
  "organicScore": 95.2,
  "organicScoreLabel": "high",
  "holderCount": 523000,
  "mcap": 1234567890,
  "liquidity": 45000000,
  "usdPrice": 0.85,
  "audit": {
    "mintAuthorityDisabled": true,
    "freezeAuthorityDisabled": true,
    "isSus": false
  },
  "tags": ["verified", "community"],
  "stats24h": {
    "priceChange": 2.5,
    "buyVolume": 15000000,
    "sellVolume": 14500000,
    "numTraders": 8500
  }
}

Error responses

Token not found:
[]
Invalid API key (401):
{
  "error": "Unauthorized"
}
Rate limited (429):
{
  "error": "Rate limit exceeded"
}

Evaluating token safety

Use these fields to assess risk:
FieldSafeRisky
isVerifiedtruefalse
organicScoreLabel"high""low"
audit.mintAuthorityDisabledtruefalse (can mint more)
audit.freezeAuthorityDisabledtruefalse (can freeze)
audit.isSusfalsetrue

Common questions

Organic score (0-100) measures real trading activity vs wash trading. Higher = more legitimate trading. See Organic Score docs for methodology.
Token metadata updates continuously. Trading stats (stats5m, stats1h, etc.) reflect real-time market activity.
The token either doesn’t exist or hasn’t had a pool created yet. Use the mint address directly to verify.

Need token prices too? Once you have the token mint address, get its current USD price with the Price API.

Next steps