Solana Tracker Public API
Public API for Solana Tracker data.
Token and pool data for all Pumpfun, Raydium, Meteora, Raydium CPMM, Moonshot and Orca tokens. Including Market Cap, Price, Liquidity, Chart data, price changes, stats, wallet trades and total value, last trades and more
You can now buy and manage your package directly on Solana Tracker. Previously we used to sell access to our API using: https://nadles.com (opens in a new tab)
Authentication
Solana Tracker: Include your API Key (available after subscription) in the "x-api-key" header with each API call. Base url: https://data.solanatracker.io (opens in a new tab)
Nadles: Include your access key (available after subscription) in the "X-Billing-Token" header with each API call. Base url: https://solana.p.nadles.com (opens in a new tab)
Subscription Plans and Limits
Plan | Price | Requests/Month | Rate Limit | Additional Features |
---|---|---|---|---|
Free (opens in a new tab) | Free | 10,000 | 1/second | - |
Trial (opens in a new tab) | Free | 500 | None | - |
Starter (opens in a new tab) | €14.99/month | 50,000 | None | - |
Advanced (opens in a new tab) | €50/month | 200,000 | None | - |
Pro (opens in a new tab) | €200/month | 1,000,000 | None | - |
Premium (opens in a new tab) | €397/month | 10,000,000 | None | Websocket access |
Business (opens in a new tab) | €599/month | 25,000,000 | None | Websocket access |
Enterprise (opens in a new tab) | €1499/month | 100,000,000 | None | Websocket access |
Enterprise Plus | Custom | Unlimited | None | Custom package |
Note: For Websocket access (Premium and above), email [email protected] to get access to this endpoint.
Endpoints
Token Information
GET /tokens/{tokenAddress}
Retrieve all information for a specific token.
Response:
{
"token": {
"name": "Token Name",
"symbol": "SYMBOL",
"mint": "TokenAddress",
"uri": "URI",
"decimals": 9,
"image": "ImageURL",
"description": "Token description",
"extensions": {
"twitter": "TwitterURL",
"telegram": "TelegramURL"
},
"tags": ["Tag1", "Tag2"],
"creator": {
"name": "Creator Name",
"site": "CreatorWebsite"
},
"hasFileMetaData": true
},
"pools": [...],
"events": {...},
"risk": {...},
"buys": 0,
"sells": 0,
"txns": 0
}
GET /tokens/{tokenAddress}
/holders
Get the top 100 holders for a specific token.
Response:
{
"total": 1976,
"accounts": [
{
"wallet": "WalletAddress",
"amount": 29762511.787972,
"value": {
"quote": 731.5710758766651,
"usd": 106189.02499701138
},
"percentage": 2.9762545119795907
},
...
]
}
Do you want to receive all token holders? Use this example using your RPC.
const tokenAccounts = await connection.getParsedProgramAccounts(
new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),
{
filters: [{ dataSize: 165 }, { memcmp: { offset: 0, bytes: mintAddress } }],
}
);
const accounts = tokenAccounts.map((account) => ({
wallet: account.account.data.parsed.info.owner,
amount: account.account.data.parsed.info.tokenAmount.uiAmount,
}));
GET /tokens/{tokenAddress}/ath
Retrieve the all time high price of a token (since data api started recording)
Response:
{
"highest_price": 0.002399892080590551
}
GET /tokens/latest
Retrieve the latest 100 tokens.
Response:
[
{
"token": {
"name": "Jupiter Perps LP",
"symbol": "JLP",
"mint": "27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4",
"uri": "https://static.jup.ag/jlp/metadata.json",
"decimals": 6,
"image": "https://image.solanatracker.io/proxy?url=https%3A%2F%2Fstatic.jup.ag%2Fjlp%2Ficon.png",
"description": "JLP is the liquidity provider token for Jupiter Labs Perpetual.",
"hasFileMetaData": true
},
"pools": [...],
"events": {...},
"risk": {...}
},
...
]
GET /tokens/trending
Get the top 100 trending tokens based on transaction volume in the past hour.
Response:
[
{
"token": {
"name": "Jupiter Perps LP",
"symbol": "JLP",
"mint": "27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4",
"uri": "https://static.jup.ag/jlp/metadata.json",
"decimals": 6,
"image": "https://image.solanatracker.io/proxy?url=https%3A%2F%2Fstatic.jup.ag%2Fjlp%2Ficon.png",
"description": "JLP is the liquidity provider token for Jupiter Labs Perpetual.",
"hasFileMetaData": true
},
"pools": [...],
"events": {...},
"risk": {...}
},
...
]
GET /tokens/volume
Retrieve the top 100 tokens sorted by highest volume.
Response:
[
{
"token": {
"name": "Jupiter Perps LP",
"symbol": "JLP",
"mint": "27G8MtK7VtTcCHkpASjSDdkWWYfoqT6ggEuKidVJidD4",
"uri": "https://static.jup.ag/jlp/metadata.json",
"decimals": 6,
"image": "https://image.solanatracker.io/proxy?url=https%3A%2F%2Fstatic.jup.ag%2Fjlp%2Ficon.png",
"description": "JLP is the liquidity provider token for Jupiter Labs Perpetual.",
"hasFileMetaData": true
},
"pools": [...],
"events": {...},
"risk": {...}
},
...
]
GET /tokens/multi/all
Get an overview of latest, graduating, and graduated tokens (Pumpvision / Photon Memescope style).
Response:
{
"latest": [...],
"graduating": [...],
"graduated": [...]
}
Price Information
GET /price
Get price information for a single token.
Query Parameters:
token
(required): The token address
Response:
{
"price": 1.23,
"liquidity": 1000000,
"marketCap": 50000000,
"lastUpdated": 1628097600000
}
POST /price
Similar to GET /price, but accepts token address in the request body.
Request Body:
{
"token": "So11111111111111111111111111111111111111112"
}
Response: Same as GET /price
GET /price/multi
Get price information for multiple tokens (up to 100).
Query Parameters:
tokens
(required): Comma-separated list of token addresses
Response:
{
"So11111111111111111111111111111111111111112": {
"price": 1.23,
"liquidity": 1000000,
"marketCap": 50000000,
"lastUpdated": 1628097600000
},
"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R": {
"price": 0.45,
"liquidity": 500000,
"marketCap": 25000000,
"lastUpdated": 1628097600000
}
}
POST /price/multi
Similar to GET /price/multi, but accepts an array of token addresses in the request body.
Request Body:
{
"tokens": [
"So11111111111111111111111111111111111111112",
"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"
]
}
Response: Same as GET /price/multi
Wallet Information
GET /wallet/{owner}
Get all tokens in a wallet with current value in USD.
Response:
{
"tokens": [
{
"token": {
"name": "Wrapped SOL",
"symbol": "SOL",
"mint": "So11111111111111111111111111111111111111112",
"uri": "",
"decimals": 9,
"image": "https://image.solanatracker.io/proxy?url=https%3A%2F%2Fcoin-images.coingecko.com%2Fcoins%2Fimages%2F21629%2Flarge%2Fsolana.jpg%3F1696520989",
"hasFileMetaData": true
},
"pools": [...],
"events": {...},
"risk": {...},
"balance": 0.775167121,
"value": 112.31297732160377
}
],
"total": 228.41656975961473,
"totalSol": 1.5750283296373857,
"timestamp": "2024-08-15 12:49:06"
}
GET /wallet/{owner}
/trades
Get the latest trades of a wallet.
Query Parameters:
cursor
(optional): Cursor for pagination
Response:
{
"trades": [
{
"tx": "Transaction Signature here",
"from": {
"address": "So11111111111111111111111111111111111111112",
"amount": 0.00009999999747378752,
"token": {
"name": "Wrapped SOL",
"symbol": "SOL",
"image": "https://image.solanatracker.io/proxy?url=https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png",
"decimals": 9
}
},
"to": {
"address": "4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R",
"amount": 0.00815899996086955,
"token": {
"name": "Raydium",
"symbol": "RAY",
"image": "https://image.solanatracker.io/proxy?url=https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R/logo.png",
"decimals": 6
}
},
"price": {
"usd": 1.7136074522202307,
"sol": ""
},
"volume": {
"usd": 0.014018403988365319,
"sol": 0.00009999999747378752
},
"wallet": "WALLET_ADDRESS",
"program": "raydium",
"time": 1722759119596
}
],
"nextCursor": 1722759119596,
"hasNextPage": true
}
Trade Information
GET /trades/{tokenAddress}
Get the latest trades for a token across all pools.
GET /trades/{tokenAddress}
/{poolAddress}
Get the latest trades for a specific token and pool pair.
GET /trades/{tokenAddress}
/{poolAddress}
/{owner}
Get the latest trades for a specific token, pool, and wallet address.
GET /trades/{tokenAddress}
/by-wallet/{owner}
Get the latest trades for a specific token and wallet address.
Query Parameters for all trade endpoints:
cursor
(optional): Cursor for paginationshowMeta
(optional): Set to 'true' to add metadata for from and to tokensparseJupiter
(optional): Set to 'true' to combine all transfers within a Jupiter swap into a single transaction. By default, each transfer is shown separately.hideArb
(optional): Set to 'true' to hide arbitrage or other transactions that don't have both the 'from' and 'to' token addresses matching the token parameter.
Response for all trade endpoints:
{
"trades": [
{
"tx": "Transaction Signature",
"amount": 1000,
"priceUsd": 0.1,
"volume": 100,
"type": "buy",
"wallet": "WalletAddress",
"time": 1723726185254,
"program": "jupiter"
}
],
"nextCursor": 1723726185254,
"hasNextPage": true
}
Chart Data
GET /chart/{token}
GET /chart/{token}
/{pool}
Get OLCVH (Open, Low, Close, Volume, High) data for charts.
Available Intervals
Shorthand | Interval |
---|---|
1s | 1 SECOND |
5s | 5 SECOND |
15s | 15 SECOND |
1m | 1 MINUTE |
3m | 3 MINUTE |
5m | 5 MINUTE |
15m | 15 MINUTE |
30m | 30 MINUTE |
1h | 1 HOUR |
2h | 2 HOUR |
4h | 4 HOUR |
6h | 6 HOUR |
8h | 8 HOUR |
12h | 12 HOUR |
1d | 1 DAY |
3d | 3 DAY |
1w | 1 WEEK |
1mn | 1 MONTH |
Note: The shorthand "1mn" is used for 1 month to avoid confusion with "1m" (1 minute).
Query Parameters:
type
(optional): Time interval (e.g., "1s", "1m", "1h", "1d")time_from
(optional): Start time (Unix timestamp in seconds)time_to
(optional): End time (Unix timestamp in seconds)
Response:
{
"oclhv": [
{
"open": 0.011223689525154462,
"close": 0.011223689525154462,
"low": 0.011223689525154462,
"high": 0.011223689525154462,
"volume": 683.184501136,
"time": 1722514489
},
{
"open": 0.011223689525154462,
"close": 0.011257053686384555,
"low": 0.011257053686384555,
"high": 0.011257053686384555,
"volume": 12788.70421942799,
"time": 1722514771
}
]
}
Profit and Loss (PnL) Data
GET /pnl/{wallet}
Get Profit and Loss data for all positions of a wallet.
Response:
{
"tokens": {
"85tgA28eJCUwpTGkREdocDtkHCgZZySyrdv35w6opump": {
"holding": 0,
"held": 24608227.322611,
"sold": 24608227.322611,
"realized": 312.48840947,
"unrealized": 0,
"total": 312.48840947,
"total_invested": 153.64456248
},
"Fwjk3SQ4zpg68x9mQLKJm5W6DkisjFGn76jHvi7vb4wE": {
"holding": 0,
"held": 48082588.866329,
"sold": 48082588.866329,
"realized": 281.90913641,
"unrealized": 0,
"total": 281.90913641,
"total_invested": 293.27333422
}
},
"summary": {
"realized": 2418.42956164,
"unrealized": -634.74038817,
"total": 1783.68917347,
"totalInvested": 103020.70911717,
"totalWins": 222,
"totalLosses": 295,
"winPercentage": 34.8,
"lossPercentage": 46.24
}
}
GET /first-buyers/{token}
Retrieve the first 100 buyers of a token (since API started recording data) with Profit and Loss data for each wallet.
Response:
[
{
"wallet": "pumpZuAcJZwUwNmP84KZDNUMVYvCYdwSiUhYjyAhm7v",
"first_buy_time": 1721518521841,
"last_transaction_time": 1721519113069,
"held": 289393486.26179785,
"sold": 289393486.26179785,
"holding": 0,
"realized": 997.3821375,
"unrealized": 0,
"total": 997.3821375,
"total_invested": 1425.80360732
},
{
"wallet": "9345npSvXdmiD7SszgLuWvPAJ8edUR1F4bnNS5dUiFmU",
"first_buy_time": 1721518521860,
"last_transaction_time": 1721518582164,
"held": 138858105.00812,
"sold": 138858105.00812,
"holding": 0,
"realized": 984.56781931,
"unrealized": 0,
"total": 984.56781931,
"total_invested": 967.85402712
}
]
GET /pnl/{wallet}
/{token}
Get Profit and Loss data for a specific token in a wallet.
Response:
{
"holding": 0,
"held": 24608227.322611,
"sold": 24608227.322611,
"realized": 312.48840947,
"unrealized": 0,
"total": 312.48840947,
"total_invested": 153.64456248
}
GET /top-traders/{token}
Get top 100 traders by PnL for a token.
Response:
[
{
"wallet": "234JMcei3WcQWaMjyxVEcHZsGvz1m8A8hTtEnCJCYWRo",
"held": 50819020.99990307,
"sold": 17890408.81074299,
"holding": 32928612.18916008,
"realized": 1692.12014818,
"unrealized": 866.69739102,
"total": 2558.81753919,
"total_invested": 1651.25276018
},
{
"wallet": "BUyvzQp1v2kJ6sKR6qunhdSxypDUTEZS8dsTpQYkw6wQ",
"held": 7131355.76925302,
"sold": 7131355.76925302,
"holding": 0,
"realized": 761.7829419,
"unrealized": 0,
"total": 761.7829419,
"total_invested": 343.2357682
}
]
Other Endpoints
GET /stats/{token}
/{pool}
Get detailed stats for a token-pool pair over various time intervals.
Response:
{
"15m": {
"buyers": 2,
"sellers": 1,
"volume": {
"buys": 89.79106344165679,
"sells": 30.552815246574315,
"total": 120.34387868823111
},
"transactions": 3,
"buys": 2,
"sells": 1,
"wallets": 3,
"price": 0.0071557418245051675,
"priceChangePercentage": -0.11577995717539138
},
"30m": {
"buyers": 2,
"sellers": 2,
"volume": {
"buys": 89.79106344165679,
"sells": 32.13102111946917,
"total": 121.92208456112596
},
"transactions": 4,
"buys": 2,
"sells": 2,
"wallets": 4,
"price": 0.0071557418245051675,
"priceChangePercentage": 1.2607513942067863
},
"1h": {
"buyers": 6,
"sellers": 3,
"volume": {
"buys": 765.9732191952625,
"sells": 57.01803996753757,
"total": 822.9912591628001
},
"transactions": 11,
"buys": 8,
"sells": 3,
"wallets": 9,
"price": 0.0071557418245051675,
"priceChangePercentage": 1.9338808375656376
},
"24h": {
"buyers": 120,
"sellers": 136,
"volume": {
"buys": 68097.48716874808,
"sells": 18066013.49624886,
"total": 18134110.983417585
},
"transactions": 1003,
"buys": 512,
"sells": 491,
"wallets": 180,
"price": 0.007676764946610686,
"priceChangePercentage": -8.699677660415931
}
}
GET /stats/{token}
Get detailed stats for a token over various time intervals.
Response:
{
"15m": {
"buyers": 2,
"sellers": 1,
"volume": {
"buys": 89.79106344165679,
"sells": 30.552815246574315,
"total": 120.34387868823111
},
"transactions": 3,
"buys": 2,
"sells": 1,
"wallets": 3,
"price": 0.0071557418245051675,
"priceChangePercentage": -0.11577995717539138
},
"30m": {
"buyers": 2,
"sellers": 2,
"volume": {
"buys": 89.79106344165679,
"sells": 32.13102111946917,
"total": 121.92208456112596
},
"transactions": 4,
"buys": 2,
"sells": 2,
"wallets": 4,
"price": 0.0071557418245051675,
"priceChangePercentage": 1.2607513942067863
},
"1h": {
"buyers": 6,
"sellers": 3,
"volume": {
"buys": 765.9732191952625,
"sells": 57.01803996753757,
"total": 822.9912591628001
},
"transactions": 11,
"buys": 8,
"sells": 3,
"wallets": 9,
"price": 0.0071557418245051675,
"priceChangePercentage": 1.9338808375656376
},
"24h": {
"buyers": 120,
"sellers": 136,
"volume": {
"buys": 68097.48716874808,
"sells": 18066013.49624886,
"total": 18134110.983417585
},
"transactions": 1003,
"buys": 512,
"sells": 491,
"wallets": 180,
"price": 0.007676764946610686,
"priceChangePercentage": -8.699677660415931
}
}
Pagination
All trade endpoints use cursor-based pagination. Use the nextCursor
value from the response as the cursor
parameter in subsequent requests until hasNextPage
is false.
Example usage:
GET /trades/{tokenAddress}
GET /trades/{tokenAddress}?cursor=1723726185254
The cursor
is based on the time
field of the trades.