Deep Mind AI
  • Introduction
  • Examples
    • Getting Started with NextJS
    • Telegram Agent
    • Persistent Agent with PostgreSQL
    • AI Guided Market Making Agent
    • Discord Agent Integration
  • Guides
    • Add your own tool
    • Setup locally
    • Test it out
  • Features
    • Transfer Tokens
    • Stake SOL
    • Deploy SPL Token
    • Check Token Balances
    • Token Data Retrieval
    • Deploy NFT Collection
    • Mint NFT
    • Tensor NFT Marketplace
    • Jupiter Exchange Swaps
    • Solana Name Service (SNS)
    • Launch Token on Pump.fun
Powered by GitBook
On this page
  • ​Core Features
  • ​Usage
  • ​Data Structures
  • ​Example Prompts
  • ​Implementation Details
  • ​Error Handling
  • ​Best Practices
  • ​Common Issues
  • ​Response Format
  • ​Tips for Token Resolution
  • ​Common Token Addresses
  1. Features

Token Data Retrieval

Fetch token data using Jupiter API and DexScreener

PreviousCheck Token BalancesNextDeploy NFT Collection

Last updated 3 months ago

Fetch token data from Jupiter and DexScreener APIs. This implementation enables token lookup by both address and ticker symbol, providing comprehensive token information for Solana tokens.

Core Features

  1. Token Data Retrieval

    • Address-based lookup

    • Ticker symbol lookup

    • Multiple data sources

    • Comprehensive token info

  2. API Integration

    • Jupiter API integration

    • DexScreener API support

    • Error handling

    • Data validation

Usage

Get Token by Address

// Using mint address
const tokenData = await getTokenDataByAddress(
  new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v")
);

// Returns JupiterTokenData
console.log(tokenData);
// Using ticker symbol
const tokenData = await getTokenDataByTicker("USDC");

// Returns JupiterTokenData or undefined
console.log(tokenData);
interface JupiterTokenData {
  address: string;        // Token mint address
  chainId: number;        // Solana chain ID
  decimals: number;       // Token decimals
  name: string;          // Token name
  symbol: string;        // Token symbol
  logoURI?: string;      // Optional logo URL
  tags?: string[];       // Optional token tags
  extensions?: {         // Optional extensions
    [key: string]: any;
  };
}
"Get token data for USDC"

"Look up token info by address"

"Find token details for SOL"

"Get metadata for BONK token"
// Get by ticker
{
  "ticker": "USDC"
}

// Direct ticker input
"SOL"
async function getTokenDataByAddress(
  mint: PublicKey
): Promise<JupiterTokenData | undefined> {
  const response = await fetch(
    `https://tokens.jup.ag/token/${mint}`
  );
  return response.json();
}
async function getTokenAddressFromTicker(
  ticker: string
): Promise<string | null> {
  // Use DexScreener for address lookup
  const response = await fetch(
    `https://api.dexscreener.com/latest/dex/search?q=${ticker}`
  );
  
  // Filter and sort by FDV
  const pairs = data.pairs
    .filter(pair => pair.chainId === "solana")
    .sort((a, b) => (b.fdv || 0) - (a.fdv || 0));
    
  return pairs[0]?.baseToken.address;
}
try {
  const tokenData = await getTokenDataByTicker(ticker);
} catch (error) {
  if (error.message.includes("not found")) {
    // Handle unknown token
  } else if (error.message.includes("API")) {
    // Handle API issues
  }
}
  1. Data Validation

    • Validate addresses

    • Check ticker format

    • Handle missing data

    • Verify responses

  2. API Management

    • Handle rate limits

    • Cache responses

    • Monitor errors

    • Implement retries

  3. Response Processing

    • Filter results

    • Sort by relevance

    • Handle duplicates

    • Format data

  1. Token Lookup

    • Unknown tokens

    • Invalid addresses

    • Missing data

    • API timeouts

  2. Data Quality

    • Outdated information

    • Missing metadata

    • Incorrect symbols

    • Logo URL issues

  3. API Issues

    • Rate limiting

    • Network errors

    • Service outages

    • Invalid responses

{
  status: "success",
  tokenData: {
    address: "token-address",
    symbol: "TOKEN",
    name: "Token Name",
    decimals: 6
    // ... other fields
  }
}
{
  status: "error",
  message: "Error message",
  code: "ERROR_CODE"
}
  1. Address Resolution

    • Validate format

    • Check checksum

    • Handle case sensitivity

    • Verify network

  2. Ticker Resolution

    • Handle case sensitivity

    • Check aliases

    • Filter by chain

    • Sort by relevance

  3. Data Management

    • Cache common tokens

    • Update periodically

    • Log resolutions

    • Monitor changes

const COMMON_TOKENS = {
  USDC: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  SOL: "So11111111111111111111111111111111111111112",
  BONK: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
};

Get Token by Ticker

Data Structures

Jupiter Token Data

Example Prompts

Natural Language Prompts

LangChain Tool Prompts

Implementation Details

Address-based Lookup

Ticker-based Lookup

Error Handling

Best Practices

Common Issues

Response Format

Success Response

Error Response

Tips for Token Resolution

Common Token Addresses

​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​