Skip to main content
Sodae Price Feeds
Price Feeds decodes every transaction and turns anything that moves a price into a price update: a swap on any pool, an oracle program writing a new value. Coverage follows from decoding rather than a curated list, so a new pool is priced from its first swap. One gRPC service carries two streams:
  • SubscribePrices sends the USD price of the tokens you list whenever one of them moves.
  • SubscribePools sends 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.
On Per GB, the bytes the stream delivers count against your data, as on Yellowstone gRPC. The seat has no data cap.

API

price_feed.proto
Both calls are server streams: send one request, then read updates until you close the call. To change what you follow, open a new call. Tokens can be given as mint addresses or as these symbols, in any letter case: 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:
  • pools and mints choose pools: a pool in your pools list, or a pool with one of your mints on either side.
  • dex narrows that choice to the listed venues.
  • dex on its own streams every pool on those venues.
  • all: true streams every pool, narrowed by dex if 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

Download price_feed.proto next to your code.
For the plaintext endpoint, connect to 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.