Token Data Retrieval
Fetch token data using Jupiter API and DexScreener
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.
Token Data Retrieval
Address-based lookup
Ticker symbol lookup
Multiple data sources
Comprehensive token info
API Integration
Jupiter API integration
DexScreener API support
Error handling
Data validation
Copy
// Using mint address
const tokenData = await getTokenDataByAddress(
new PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v")
);
// Returns JupiterTokenData
console.log(tokenData);
Copy
// Using ticker symbol
const tokenData = await getTokenDataByTicker("USDC");
// Returns JupiterTokenData or undefined
console.log(tokenData);
Copy
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;
};
}
Copy
"Get token data for USDC"
"Look up token info by address"
"Find token details for SOL"
"Get metadata for BONK token"
Copy
// Get by ticker
{
"ticker": "USDC"
}
// Direct ticker input
"SOL"
Copy
async function getTokenDataByAddress(
mint: PublicKey
): Promise<JupiterTokenData | undefined> {
const response = await fetch(
`https://tokens.jup.ag/token/${mint}`
);
return response.json();
}
Copy
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;
}
Copy
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
}
}
Data Validation
Validate addresses
Check ticker format
Handle missing data
Verify responses
API Management
Handle rate limits
Cache responses
Monitor errors
Implement retries
Response Processing
Filter results
Sort by relevance
Handle duplicates
Format data
Token Lookup
Unknown tokens
Invalid addresses
Missing data
API timeouts
Data Quality
Outdated information
Missing metadata
Incorrect symbols
Logo URL issues
API Issues
Rate limiting
Network errors
Service outages
Invalid responses
Copy
{
status: "success",
tokenData: {
address: "token-address",
symbol: "TOKEN",
name: "Token Name",
decimals: 6
// ... other fields
}
}
Copy
{
status: "error",
message: "Error message",
code: "ERROR_CODE"
}
Address Resolution
Validate format
Check checksum
Handle case sensitivity
Verify network
Ticker Resolution
Handle case sensitivity
Check aliases
Filter by chain
Sort by relevance
Data Management
Cache common tokens
Update periodically
Log resolutions
Monitor changes
Copy
const COMMON_TOKENS = {
USDC: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
SOL: "So11111111111111111111111111111111111111112",
BONK: "DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"
};
Last updated