> ## 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.

# onPricesUpdated

> Live-streamed price updates for multiple tokens.

<div data-generated>
  ## GraphQL

  ```
  type Subscription {
    # Requires a Growth or Enterprise plan.
    onPricesUpdated(
      input: [OnPricesUpdatedInput!]!
      useWeightedPrices: Boolean
    ): Price!
  }

  type Price {
    address: String!
    timestamp: Int
    networkId: Int!
    priceUsd: Float!
    blockNumber: Int
    liquidityUsd: String
    priceChange24: Float
  }

  input OnPricesUpdatedInput {
    address: String!
    networkId: Int!
    sourcePairAddress: String
  }
  ```
</div>

### Example

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

```graphql theme={null}
subscription {
  onPricesUpdated(
    input: [
      { address: "So11111111111111111111111111111111111111112", networkId: 1399811149 }
      { address: "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn", networkId: 1399811149 }
    ]
  ) {
    address
    networkId
    priceUsd
    timestamp
    blockNumber
  }
}
```

```json Example Response theme={null}
{
  "data": {
    "onPricesUpdated": {
      "address": "So11111111111111111111111111111111111111112",
      "networkId": 1399811149,
      "priceUsd": 126.5510281931495,
      "timestamp": 1769560979,
      "blockNumber": 396375165
    }
  }
}
```

<Warning>
  We offer a monthly flat-rate option with unlimited requests to receive ALL price updates across an entire network. Supported on Solana, Base and more. [Contact us](https://t.me/CodexData) for more information.
</Warning>

### Usage Guidelines

* Pass an array of `{ address, networkId }` objects to subscribe to price updates for multiple tokens in a single subscription
* Tokens can span different networks — e.g., SOL on Solana and WETH on Ethereum in one subscription
* Each update delivers a single `Price` object for whichever token's price changed — not a batch of all tokens at once
* Optionally include `sourcePairAddress` per token to override the default pricing pool
* Up to 25 tokens per subscription (hard limit on the input array). You may have multiple `onPricesUpdated` subscriptions on a connection
* There is no hard limit on subscriptions per connection — what matters is the **total number of tokens being watched** across them. As a starting point, plan for up to \~100 tokens per connection. For high-volume tokens (SOL, top trending tokens, busy pairs), lower the per-connection density and open more connections instead
* Your internet connection, and geolocation (proximity to US-West), may affect connection health and speeds, especially with many subscriptions
* See our [Subscriptions](/concepts/subscriptions) concept for more information

### Troubleshooting Tips

<AccordionGroup>
  <Accordion title="Token prices are changing between API calls for the same timestamp">
    On chains with sub-second block times (like BSC), multiple price updates can occur within a single second. Since blockchain timestamps only have 1-second precision, multiple different prices can validly exist for the same timestamp.

    To workaround this, we've added a `blockNumber` input and response field. This will give you pricing accuracy down to the blocknumber if blockchain timestamps are causing unexpected pricing discrepancies.\
     
  </Accordion>

  <Accordion title="If I subscribe to multiple trading pairs, can I later cancel a certain trading pair?">
    Yes. You should be able to use shouldResubscribe for this. ([<u>https://www.apollographql.com/docs/react/data/subscriptions#options</u>](https://www.apollographql.com/docs/react/data/subscriptions#options))
  </Accordion>

  <Accordion title="When should I use onPricesUpdated vs onPriceUpdated?">
    Use `onPricesUpdated` when tracking multiple tokens — it lets you batch them into a single subscription instead of opening one subscription per token. Use `onPriceUpdated` if you only need a single token's price feed.
  </Accordion>

  <Accordion title="Do I get updates for all tokens at once?">
    No. Each message contains a single `Price` object for whichever token's price just changed. High-volume tokens will produce updates more frequently than low-volume ones.
  </Accordion>

  <Accordion title="Is there a subscription that streams every token's price across a network?">
    Not via the standard `onPricesUpdated` subscription — it caps at 25 tokens per `input` array. To watch a larger set, run multiple `onPricesUpdated` subscriptions on the same connection and add/remove tokens by closing and reopening individual subscriptions (you don't need to drop the connection).\
    \
    For network-wide price streams, we offer a monthly flat-rate option with unlimited requests on Solana, Base, and other supported networks — [contact us](https://t.me/CodexData) for details.
  </Accordion>
</AccordionGroup>
