The Solana Tracker Transfers API shipped on October 30, 2026. It is our first transfers API: one REST call loads any wallet's SOL, SPL and Token-2022 transfer history, and three new Datastream rooms push new transfers as they happen. Both come with token metadata, USD values and the identity of the wallets on each side.
This post covers what the Transfers API does, how it is billed, and everything else that shipped in the Data API and Raptor in October. The changelog has the full list.
Transfer history over REST
GET /account/{address}/transfers returns the transfers in and out of a wallet, newest first, with token metadata and known wallet identities on both sides.
GET https://data.solanatracker.io/account/{address}/transfers?mint=EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v&direction=in&historicPrices=true
x-api-key: YOUR_API_KEY
- Plain transfers by default. Transactions with DEX activity, such as swaps, liquidity adds and removes and pool fee claims, are left out. Set
dex=includeto keep them ordex=onlyto get only those. Failed transactions are left out too, unless you setstatus=failedorstatus=any. - Filters. Token (
mint),direction,type(solorspl), sender, receiver or counterparty (up to 5 addresses each, with exclude lists), a time or slot range, amount, USD value and transaction outcome. Time ranges take Unix seconds. - One name per parameter. An unknown parameter is a 400 that names the right one, so a typo never silently returns the wrong data.
- USD at the time.
historicPrices=trueadds each transfer's USD price and value at the moment it happened. - Grouped by transaction.
grouped=trueadds one row per transaction with in and out totals, USD totals when prices are on, and DEX and swap detection. - Cursor paging. Up to 1000 transfers per page (100 with a USD value filter). A page never splits a transaction. Filtered pages can be empty while
hasMoreis still true, so page untilhasMoreis false.
Cost. Each page is one Data API request, counted against your plan's monthly request allowance. The endpoint works on every plan, including Free.
Live transfer rooms on Datastream
| Room | What arrives |
|---|---|
transfer:wallet:{wallet} | Every transfer to or from a wallet, across all tokens |
transfer:{mint} | Every transfer of a token between any wallets (not available for SOL) |
transfer:{mint}:{wallet} | One token to or from one wallet, including SOL through the wrapped SOL mint |
Each message is one transaction with its transfers and the balance changes they caused. A transfer that is a leg of a swap is already in the trade rooms and is not sent twice; what remains of a swap, such as fees and tips, is marked swapTx. Append :enriched to any room for token name, symbol and image, USD price, value and market cap, and the identity of every wallet in the message: KOL, bot, platform, developer, pool or SNS name.
Live transfers are sent at processed commitment, so reconcile anything you act on with the REST history. Datastream is included in the Premium, Business and Enterprise plans, with unlimited messages and no usage-based fees.
SDK 0.6.0
@solana-tracker/data-api 0.6.0 adds getAccountTransfers and iterateAccountTransfers for the history, and subscribe.transfers.wallet, .token and .tokenWallet for the live rooms.
import { Client, Datastream } from '@solana-tracker/data-api';
const apiKey = process.env.SOLANA_TRACKER_API_KEY!;
const wallet = 'GachaNgyXTU3zFogQ8Z5jR2BLXs8215X2AtEH18VxJq3';
// History: USDC received by the wallet, with the USD value at the time
const client = new Client({ apiKey });
const page = await client.getAccountTransfers(wallet, {
mint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
direction: 'in',
historicPrices: true,
});
console.log(page.transfers.length, 'transfers, more:', page.pagination.hasMore);
// Live: every new transfer to or from the wallet, enriched
const ds = new Datastream({ wsUrl: `wss://datastream.solanatracker.io/${apiKey}` });
await ds.connect();
ds.subscribe.transfers.wallet(wallet, { enriched: true }).on((update) => {
for (const t of update.transfers) console.log(t.direction, t.uiAmount, t.token.symbol, update.signature);
});
0.6.0 also covers the trade history currency and marketCap options and the new search filters below.
Guides
Three new guides, each with a complete TypeScript script:
- Solana wallet transfer history API: every filter, the paging rules, grouped results and a per-token flow summary for a wallet.
- Stream Solana token transfers over WebSocket: every transfer of one mint, with dedupe, reconnects and net flow per wallet.
- Solana wallet transfer alerts: a live wallet stream with a REST backfill and catch-up after every reconnect.
Also new in October
Trades in SOL or EUR, with market cap
currency(usd,eurorsol) adds each trade's price in that currency at the time of the trade.marketCap=trueadds each trade's market cap, valued at the current supply.- Both work on all four token trade endpoints. Without them, responses are unchanged.
Search filters
- Migration speed.
minMigrationSecondsandmaxMigrationSecondsfilter by how long a token took to migrate after creation. Migrated tokens now includemigrationSeconds, and you can sort by it. - Token age.
minTokenCreatedAtandmaxTokenCreatedAtfilter on when the token was created, not the pool. - Quote token.
quoteTokenfilters by mint or symbol, for examplequoteToken=SOL,USDC. - Bundlers.
minBundlerBalanceandmaxBundlerBalancefilter on what bundler wallets hold. - Fixes. Social link filters match with or without
https://,www.and a trailing slash,launchpadis case-insensitive, and a token counts asgraduatedonly with an on-chain migration.
Charts
type=5hreturns real 5-hour candles, starting at 00:00, 05:00, 10:00, 15:00 and 20:00 UTC.currency=solconverts with the SOL chart's own cleaned prices and no longer falls back to USD on short windows.marketCap=falsereturns prices, not market cap, and a graduated token's chart keeps its launch curve history.
Coverage, prices and PnL
- StonkFun and Raydium LaunchLab.
deployeris now the wallet that paid for the token's creation, migrated Raydium pools keep the launchpad's name, and snipers and insiders are detected on LaunchLab tokens. - More trades parsed. Pump.fun v3 and PumpSwap v2 trades, with one trade per hop on multi-hop swaps, plus Pump.fun Mayhem trades and routed swaps that were previously dropped.
- Prop AMMs are back. HumidiFi, Tessera, BisonFi and SolFi pools feed prices, liquidity ranking, live price rooms and charts again.
- Faster PnL.
/pnl/{wallet}is much faster for large wallets and cached for up to 30 seconds. - Counter fix. Token and pool buy, sell and transaction counters were doubled from October 12 to October 16. They have been corrected.
Fewer Datastream reconnects
- Hubs can now be updated while you stay connected. Your rooms carry over, with no lost or repeated messages.
- A connection that falls more than 1 MiB behind is closed. Reconnect and join your rooms again; the SDK does both for you.
- Joining tens of thousands of rooms at once no longer stalls delivery, and
{"type":"pong"}replies are accepted.
Raptor V1
Raptor is out of beta. V1 routes across 71 DEXes, 47 of them new, and turns on JIT routing by default: a swap carries several candidate pools and picks between them on-chain at execution, while minAmountOut is still enforced. Quotes for Token-2022 tokens with a transfer fee now include the fees and the net output, and no-route errors return 422 instead of 500.
The hosted API moved from raptor-beta.solanatracker.io to raptor.solanatracker.io. Update your base URL; the program ID is unchanged.
Get started
Create a key on the Data API dashboard, then start from the docs: