> ## Documentation Index
> Fetch the complete documentation index at: https://docs.codex.io/llms.txt
> Use this file to discover all available pages before exploring further.

# onPriceUpdated

> Live-streamed price updates for a token.

<div data-generated>
  ## GraphQL

  ```
  type Subscription {
    # Requires a Growth or Enterprise plan.
    onPriceUpdated(
      address: String
      networkId: Int
      sourcePairAddress: String
      useWeightedPrices: Boolean
    ): Price
  }

  type Price {
    address: String!
    timestamp: Int
    networkId: Int!
    priceUsd: Float!
    blockNumber: Int
    priceChange24: Float
  }
  ```
</div>

### Example

<a href="/explore" target="_blank" rel="noopener noreferrer">Test this query in the Explorer →</a>

```graphql theme={null}
subscription {
  onPriceUpdated(
    address: "So11111111111111111111111111111111111111112"
    networkId: 1399811149
  ) {
    address
    networkId
    priceUsd
    timestamp
    blockNumber
  }
}
```

```json Example Response theme={null}
{
  "data": {
    "onPriceUpdated": {
      "address": "So11111111111111111111111111111111111111112",
      "networkId": 1399811149,
      "priceUsd": 126.7659247882934,
      "timestamp": 1769559478,
      "blockNumber": 396371407
    }
  }
}
```

### Usage Guidelines

* Provide `address` (token contract address) and `networkId` to subscribe to price updates for a specific token
* `priceUsd` returns the current USD price of the token, updated with every on-chain swap
* Optionally specify `sourcePairAddress` to get pricing from a specific liquidity pool instead of the default top pair
* Use `blockNumber` to track which block the price update originated from
* This subscription is ideal for simple price feeds — use `onBarsUpdated` if you need OHLCV candlestick data

### Troubleshooting Tips

<AccordionGroup>
  <Accordion title="How is the price determined?">
    By default, the price is derived from the token's top liquidity pair. You can override this by passing a `sourcePairAddress` to use a specific pool for pricing.
  </Accordion>

  <Accordion title="How often are updates sent?">
    Updates are sent in real-time with every swap that affects the token's price. High-volume tokens will produce more frequent updates.
  </Accordion>

  <Accordion title="When should I use onPriceUpdated vs onBarsUpdated?">
    Use `onPriceUpdated` for a simple, real-time price feed (e.g., displaying a live price ticker). Use `onBarsUpdated` when you need OHLCV candlestick data, volume breakdowns, or multiple time resolutions for charting.
  </Accordion>

  <Accordion title="What about the poolAddress and confidence fields?">
    These fields are deprecated. Pricing is no longer based on specific pools, so these values are no longer meaningful. Use `blockNumber` instead to track the source of price updates.
  </Accordion>
</AccordionGroup>
