
SubscribePricessends the USD price of the tokens you list whenever one of them moves.SubscribePoolssends a tick for every price change on the pools you choose.
Why decode instead of reading an oracle
An oracle publishes a settled value after consensus, so every reader sees it at the same moment. Decoding the transaction stream gives you the move as it lands, including swaps the oracle has not reflected yet. Swap prices and oracle updates arrive in the same feed.Getting access
1
Claim a trial or buy a plan
Press Claim free trial on the Price Feeds page, or add the seat or Per GB data under Plans and check out. Trial requests are reviewed before they start. See Paying.
2
Bind your server's IP (seat only)
The seat admits one IP. Add your server’s public IP under Plans → Allowed IPs. Per GB works from any IP.
3
Connect
Point a gRPC client at the endpoint and send your API key as
x-token metadata. The endpoints and your key are on the Price Feeds page.API
price_feed.proto
SOL (or WSOL), USDC, USDT, JUP, BONK, JITOSOL, MSOL. Responses always carry mint addresses.
SubscribePrices
The first update carries the current price of every requested token that has one, so you do not wait for its next trade. After that, an update arrives whenever a token you watch moves.
How the price is made
The price is what a small swap would realise right now. Price Feeds routes $10 of USDC into the token across every pool it decodes and inverts the result, so the number includes pool fees and the price impact of that size. If $10 finds no sound route, it tries $100, then $1,000. USDC is fixed at exactly $1.00. It is not an oracle read or a time-weighted average, and it moves as soon as a pool that prices the token trades.SubscribePools
How the filters combine:
poolsandmintschoose pools: a pool in yourpoolslist, or a pool with one of yourmintson either side.dexnarrows that choice to the listed venues.dexon its own streams every pool on those venues.all: truestreams every pool, narrowed bydexif you give it.
With
interval_ms: 0, a subscription on SOL alone carries several hundred updates a second at busy times. Set an interval if you would rather receive fewer, larger updates.
Examples
Downloadprice_feed.proto next to your code.
ams.feeds.sodae.io:10401 with insecure credentials: grpc.credentials.createInsecure() in TypeScript, grpc.insecure_channel in Python, or -plaintext with grpcurl.
Errors
Access errors are the same as on the other gRPC products:UNAUTHENTICATED, NOT_ENTITLED, IP_NOT_ALLOWED and QUOTA_EXCEEDED. See Errors. The service itself returns:
Venues
dex on a tick is one of these names, and the dex filter accepts them written exactly as here:
1DEX, Alphaq, Aquifer, Archer, BisonFi, BisonFiPredict, Bonkswap, Boop, Byreal, CreatorFun, DefiTuna, Denali, Deriverse, DexLab, Dynamic Bonding Curve, Exponent CLMM, FluxBeam, Flint, Gavel, GoonFi V2, Goonfi, GooseFX GAMMA, Guacswap, Hadron, HeavenAmm, HumidiFi, Hylo Exchange, Invariant, Jupiter Lend Earn, Jupiter Perpetuals, JupLend AMM, Kipseli, Manifest, Mayhem, Mercurial, MetaDAO, Meteora, Meteora DAMM v2, Meteora DLMM, Moonit, MoonPay, Obric V2, Obsidian, Omnipair, OpenbookV2, Orca V1, PancakeSwap, Perena, Phoenix, PrintDex, Pump.fun, Pump.fun Amm, Quantum, Quay, Raydium AMM, Raydium CLMM, Raydium CP, Raydium Launchlab, Riptide, Saber, Sanctum, Sanctum Infinity, Saros, Saros DLMM, Scorch, SolFi, SolFi V2, Stabble Stable Swap, Stabble Weighted Swap, StepN, TaurusFi, TesseraV, TokenMill, VaultLiquidUnstake, WhaleStreet, Whirlpool, ZeroFi and Zora.