Elke Solana explorer is een front-end bovenop een API. Zoek je een signature op in Solscan of Solana Explorer, dan roept de site de JSON-RPC-interface van Solana aan, vaak via een eigen indexer, en toont het resultaat. Wie zoekt op Solana explorer API, wil dus meestal een van drie dingen: ruwe on-chain data die je gratis kunt ophalen, een rijkere geïndexeerde API met labels en historie, of marktdata zoals prijzen en trading pairs. Deze gids vergelijkt alle drie zoals ze er in september 2026 voorstaan, met werkende code en de limieten die we zelf hebben gemeten.
Solana explorer API-opties in één oogopslag
Het korte antwoord: gebruik JSON-RPC voor ruwe data, een indexer voor historie en parsing, en markt-API’s voor prijzen. De tabel vat de opties samen die we hebben getest voor de eigen live zoektool van Solscanner.
| Provider | Sleutel nodig | Goed voor | Limieten |
|---|---|---|---|
| api.mainnet-beta.solana.com | Nee | Testen, lichte scripts | 100 req / 10 s per IP |
| solana-rpc.publicnode.com | Nee | Tx, signatures, saldi, blokken | Geen geïndexeerde token-calls |
| public.rpc.solanavibestation.com | Nee | Token accounts, holders, aanbod | Rate limits |
| Solscan Pro API | Ja | Labels, transfers, tokendata | Lite: $49/mnd, 20M CU |
| Helius | Ja | Geparste historie, DAS, archief | Gratis: 1M credits, 10 req/s |
| Jupiter lite-api | Nee | Tokenprijzen, metadata | Rate limits |
| DexScreener | Nee | DEX-pairs, liquiditeit | 60–300 req/min |
Nog een paar resultaten uit onze tests, zodat jij er geen middag aan kwijt bent. De anonieme toegang van Tatum stond maar 5 requests per minuut toe en veel methodes waren betaald. Ankr vroeg om een sleutel. Het gratis abonnement van dRPC bevatte geen Solana. BlockEden was alleen betaald. De openbare API’s van SolanaFM en Solana Beach gaven tijdens onze controles HTTP 502 terug.
De kern-JSON-RPC-methodes die elke explorer gebruikt
Vier methodes dekken het grootste deel van wat een explorerpagina toont. Elke methode krijgt een JSON-body met jsonrpc, id, method en params, via POST naar een willekeurig RPC-endpoint.
- getSignaturesForAddress geeft de transactie-signatures terug die een adres raakten, nieuwste eerst. Elk item bevat
signature,slot,err(null bij succes),memo,blockTimeenconfirmationStatus.limitloopt van 1 tot 1.000, met 1.000 als standaard. Dit is de “historie”-lijst op een walletpagina. - getTransaction geeft de volledige transactie voor één signature: instructies, accounts, kosten, verbruikte compute units, logs en saldi voor en na. Geef
"maxSupportedTransactionVersion": 0mee, anders mislukken versioned transacties. - getBalance geeft het SOL-saldo van een account in lamports (1 SOL = 1.000.000.000 lamports).
- getTokenAccountsByOwner geeft de SPL-token accounts van een wallet, gefilterd op mint of op tokenprogramma (legacy SPL Token of Token-2022). Gebruik de encoding
jsonParsedvoor leesbare saldi.
Dit zijn de bouwstenen van de weergaven in de wallet-explorer en de transactie-explorer. Holderlijsten, tokenaanbod en scans van accounts die bij een programma horen, gebruiken zwaardere methodes zoals getTokenLargestAccounts, getSupply en getProgramAccounts, die veel openbare nodes als “geïndexeerde” verzoeken zien en blokkeren.
Voorbeeld getSignaturesForAddress: fetch en curl
Hier is een minimaal voorbeeld voor de browser of Node 18+ dat de laatste 25 signatures voor een adres toont. Als voorbeeldadres gebruiken we de USDC-mint, maar elke wallet of elk programma werkt.
const RPC = 'https://solana-rpc.publicnode.com';
const address = 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v';
const res = await fetch(RPC, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'getSignaturesForAddress',
params: [address, { limit: 25, commitment: 'confirmed' }],
}),
});
const { result, error } = await res.json();
if (error) throw new Error(`${error.code}: ${error.message}`);
for (const s of result) {
console.log(s.signature, s.slot, s.err ? 'failed' : 'ok', s.blockTime);
}
Dezelfde aanroep vanuit een terminal:
curl -s https://solana-rpc.publicnode.com \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"getSignaturesForAddress",
"params":["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",{"limit":5}]}'
Wil je een van die transacties ophalen, verander de methode dan in getTransaction en geef [signature, { "encoding": "jsonParsed", "maxSupportedTransactionVersion": 0 }] mee. blockTime is een Unix-tijdstempel in seconden en kan null zijn bij heel oude of opgeschoonde data.
Paginering met before en until
getSignaturesForAddress bladert terug in de tijd. Geef before mee met de laatste signature van de vorige pagina om de volgende, oudere pagina te krijgen; geef until mee om te stoppen zodra een bekende signature is bereikt. Een lege array betekent dat je het einde hebt bereikt van de historie die de node bewaart.
async function allSignatures(address, max = 5000) {
const out = [];
let before;
while (out.length < max) {
const params = [address, { limit: 1000, ...(before && { before }) }];
const page = await rpc('getSignaturesForAddress', params); // je eigen POST-helper
if (!page.length) break;
out.push(...page);
before = page[page.length - 1].signature;
}
return out;
}
Voor incrementele synchronisatie bewaar je de nieuwste signature die je hebt gezien en geef je die de volgende keer mee als until. Je haalt dan alleen op wat nieuw is, en zo blijf je ruim binnen de openbare rate limits.
Diepte van de historie verschilt: niet elke RPC-node bewaart de volledige ledger. Een openbare node kan voor een oude wallet een korte historie teruggeven, terwijl een archiefprovider jaren teruggaat. Lijkt de historie van een wallet verdacht kort, probeer dan een geïndexeerde API voordat je concludeert dat het account nieuw is.
Commitment-niveaus: processed, confirmed, finalized
Commitment vertelt de node hoe definitief een blok moet zijn voordat hij antwoordt. De officiële RPC-documentatie kent drie niveaus, en finalized is de gebruikelijke standaard.
- processed: het laatste blok van de node. Het snelst, maar kan nog worden teruggedraaid.
- confirmed: gestemd door een supermeerderheid, meer dan twee derde van de actieve stake.
- finalized: maximale lockout; de sterkste garantie.
getSignaturesForAddress accepteert alleen confirmed of finalized. Voor pagina’s in explorerstijl is confirmed het gangbare compromis: een nieuwe signature verschijnt binnen een paar slots (slots duren sinds de verlagingen van aug.–sept. 2026 ~250–300 ms) en rollbacks op dat niveau zijn heel zeldzaam. Voor alles wat geld verplaatst of een leidende database bijwerkt, wacht je op finalized.
Netjes omgaan met rate limits op openbare endpoints
Openbare endpoints worden gedeeld, dus gedraag je als een beleefde gast. De officiële endpoints voor mainnet, devnet en testnet staan 100 requests per 10 seconden per IP toe, 40 per 10 seconden voor één methode en 40 gelijktijdige verbindingen, en zijn uitdrukkelijk niet bedoeld voor productie.
Praktische regels die we in de eigen client van Solscanner (rpc.ts) volgen:
- Rouleer, niet bombarderen. Onze zoektool gebruikt twee pools. “Lichte” calls (transacties, signatures, saldi, blokken, epoch) gaan eerst naar publicnode, dan naar Solana Vibe Station en dan naar het officiële endpoint. “Zware” geïndexeerde calls (
getTokenAccountsByOwner,getTokenLargestAccounts,getSupply,getProgramAccounts,getTokenSupply) gaan eerst naar Solana Vibe Station. Devnet en testnet gebruiken de officiële endpoints. - Zie rate-limitfouten als “probeer elders”. Codes als -32005, 429 en 403, of meldingen over limieten of abonnementen, sturen het verzoek door naar het volgende endpoint in plaats van te falen.
- Onthoud wat werkte. Het laatste endpoint dat antwoordde, wordt de volgende keer de eerste keuze.
- Time-out. Elk verzoek breekt na 14 seconden af, zodat een trage node de pagina niet kan bevriezen.
- Cache en bundel. Haal finalized transacties niet opnieuw op; die veranderen nooit.
Voor marktdata roepen we de sleutelloze lite-api.jup.ag van Jupiter aan voor tokenprijzen en metadata (in onze client tot 100 mints per verzoek), CoinGecko als terugvaloptie voor de SOL-prijs, en DexScreener voor trading pairs. DexScreener documenteert in zijn API-referentie 60 requests per minuut voor tokenprofiel-endpoints en 300 per minuut voor pair-endpoints. Onze gids voor DeFi-explorers legt uit wat die pair-cijfers betekenen.
Solscan Pro API, Helius en andere betaalde explorer-API’s
Betaalde API’s zijn het waard als je geïndexeerde data nodig hebt die gewone RPC niet goedkoop kan leveren: gelabelde transfers, ranglijsten van tokenholders, gedecodeerde DeFi-activiteit of jaren aan historie in één verzoek.
Solscan Pro API. Solscan, sinds januari 2024 eigendom van Etherscan, stelt zijn geïndexeerde data (accounts, transfers, tokens, NFT’s, markten) beschikbaar via de Pro API. Er is een gratis tier; het Lite-abonnement kost $49 per maand met 20 miljoen compute units en 1.000 requests per 60 seconden, en sluit multi-endpoints, Market/price-ohlcv, Account/metadata en Account/funded_by uit. Er zijn hogere tiers, maar hun actuele prijzen konden we niet verifiëren, dus kijk zelf op de prijspagina van Solscan. API-abonnementen worden niet terugbetaald.
Helius. Helius, het team achter de Orb-explorer, biedt een gratis abonnement met API-sleutel: op het moment van schrijven 1 miljoen credits per maand en 10 RPC-requests per seconde. De enhanced API’s geven geparste, leesbare transacties terug, en Orb zelf draait op archiefdata van Helius en de methode getTransactionsForAddress.
Solana Beach API. Solana Beach publiceert documentatie op solanabeach.io/docs en een GitHub-repo, gericht op validators en staking. In onze tests gaf die 502 terug, dus verifieer eerst de status.
Veelvoorkomende Solana API-fouten en wat ze betekenen
De meeste API-fouten vallen in een paar patronen, en de body van de fout vertelt meestal welk. Lees error.code en error.message voordat je iets opnieuw probeert.
HTTP 403 of 429. Het endpoint blokkeert je IP of knijpt het af. Wacht even, rouleer naar een ander endpoint of stap over op een abonnement met sleutel. Het officiële mainnet-endpoint gaf ons vanaf een datacenter-IP een 403, wat vaak gebeurt bij gedeelde cloudadressen.
Fout -32005 of meldingen over je “plan”. De provider levert die methode niet in jouw tier. Geïndexeerde calls zoals getTokenAccountsByOwner zijn op gratis nodes meestal de dupe.
CORS-fouten in de browserconsole. Het endpoint werkt vanuit curl maar weigert verzoeken van een webpagina. Elk sleutelloos endpoint in onze tabel accepteerde in september 2026 browserverzoeken; daarom kan een statische site zoals Solscanner zijn zoektool zonder back-end draaien. Voeg je een provider toe die een sleutel nodig heeft, roep die dan vanaf een server aan, zodat de sleutel nooit bij gebruikers terechtkomt.
Een null-resultaat. Bij getTransaction betekent null meestal dat die node de signature niet kent: verkeerd cluster, nog niet op jouw commitment-niveau of buiten de historie van de node. Onze client kan zulke calls op het volgende endpoint opnieuw proberen voordat hij “not found” meldt.
Wanneer heb je een indexer nodig in plaats van RPC?
Je hebt een indexer nodig zodra je vraag over veel accounts of lange periodes gaat. RPC beantwoordt “hoe staat dit account er nu voor?” en “wat deed deze transactie?” prima. Maar “elke USDC-transfer van deze wallet sinds 2023, met USD-waarden” gaat slecht, omdat je dan door duizenden signatures moet lopen en ze elk moet parsen.
Signalen dat je ruwe RPC bent ontgroeid:
- Je roept
getTransactionhonderden keren per paginaweergave aan. - Je hebt aantallen of ranglijsten van tokenholders nodig (openbare nodes blokkeren vaak
getTokenLargestAccountsengetProgramAccounts). - Je hebt menselijke labels nodig (exchanges, programma’s, bekende wallets) of historische USD-prijzen.
- Je hebt historie nodig die ouder is dan wat je node bewaart.
Op dat punt verdienen Helius, Solscan Pro of een eigen indexer (een Geyser-plug-in die een database vult) zichzelf terug. Ben je nog aan het prototypen, test dan eerst tegen de devnet-endpoints, en lees de gids voor de programma-explorer over het decoderen van instructies met een IDL. Voor een vergelijking vanuit gebruikersoogpunt van de explorers die op deze API’s zijn gebouwd, zie onze ranglijst van de beste Solana explorers.
Een laatste praktische tip voor ontwikkelaars in Nederland en België: veel teams hier draaien hun back-end in een Europese cloudregio. Openbare endpoints behandelen gedeelde datacenter-IP’s vaak strenger dan thuisverbindingen, dus test je rate limits vanaf de omgeving waar je code straks echt draait, niet alleen vanaf je laptop.
Door de researchdesk van SolscannerBijgewerkt · Reviewmethodiek