TL;DR
Jupiter’s Price API is the standard way to get token prices on Solana. One API call returns real-time USD prices for up to 50 tokens. The same pricing data powers jup.ag and is used by Phantom, Solflare, and most Solana apps. Base URL:https://api.jup.ag
Prerequisites
- Get an API key at portal.jup.ag
- All requests require the
x-api-keyheader
Quick start
When you need this
You’re building something that needs Solana token prices:- Wallet — Show portfolio value in USD
- Trading interface — Display current token prices
- DeFi app — Calculate swap values, collateral ratios
- Trading bot — Price-based execution logic
- Analytics — Track token performance
- “solana token price api”
- “get sol price usd”
- “crypto price api solana”
- “jupiter price feed”
Why Jupiter
Getting accurate on-chain prices is hard:- Liquidity fragmented across 20+ DEXs
- Low-liquidity tokens have unreliable prices
- Wash trading and price manipulation are common
- Aggregating swap data across all Solana DEXs
- Using heuristics to filter manipulated prices
- Validating against organic trading activity
- Providing the same prices used on jup.ag
API Reference
Base URL:https://api.jup.ag
| Endpoint | Description |
|---|---|
GET /price/v3?ids={mints} | Get prices for up to 50 tokens |
ids(required): Comma-separated mint addresses
Code examples
Get price for a single token
Get prices for multiple tokens
Calculate portfolio value
Response format
TypeScript types
Example response
usdPrice— Current price in USDdecimals— Token decimals (for display formatting)priceChange24h— 24h price change as percentageblockId— Solana block ID (verify price recency)
Error responses
Token not found or no price available:How pricing works
- Jupiter tracks the last swap price across all Solana transactions
- Prices chain outward from trusted tokens (SOL, USDC) with oracle data
- Multiple heuristics filter unreliable prices:
- Asset origin and launch method
- Market liquidity depth
- Holder distribution
- Trading patterns
- Organic score validation
Limitations
| Limit | Value |
|---|---|
| Max tokens per request | 50 |
| Price availability | Tokens traded in last 7 days |
| Historical prices | Not available (current only) |
Common questions
Why is a token returning no price?
Why is a token returning no price?
The token is missing from the response when:
- It hasn’t been traded in 7+ days
- It fails reliability heuristics (suspicious activity)
- It’s flagged via organic score validation
audit.isSus field.How fresh are the prices?
How fresh are the prices?
Prices update in real-time based on swap activity. The
blockId field tells you exactly which Solana block the price was computed from.Can I get historical prices?
Can I get historical prices?
No, Price API V3 provides current prices only. For historical data, poll the API and store results yourself.
What about price for token pairs (not USD)?
What about price for token pairs (not USD)?
Price API returns USD only. To get token-pair prices (e.g., JUP/SOL), fetch both USD prices and divide.
How do I handle missing prices in my app?
How do I handle missing prices in my app?
Need token metadata too? Get token names, logos, and verification status with the Token Information API.
Next steps
- Price API Reference — Full endpoint schema
- Get Token Information — Metadata, verification, organic score
- Jupiter Developer Portal — Get your API key
- Jupiter Dev Notifications — API updates and announcements
