Ethereum Sepolia Price Feeds Not Updating For Weeks

Hello, I am a developer about to launch a testnet application on Ethereum Sepolia. I am using 0xDd24F84d36BF92C65F92307595335bdFab5Bbd21 oracle contract and the following price feeds:

BTC 0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43

ETH 0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace

NVDA 0xb1073854ed24cbc755dc527418f52b7d271f6cc967bbf8d8129112b18860a593

NVDA has not had a price update in 14 days showing $180, BTC in 9 days showing $66,994 and ETH in only 11 hours at $2319

For the purposes of my application, which trades volatility between users, I would more frequent liveness on these price feeds. I understand this is a test net environment and there’s probably more overhead to keep these price feeds updating more frequently that I’m aware of, but is there anything that can be done to help me out in this situation?

BTC unix time = Sun Mar 08 2026 18:07:52 GMT+0000

[ queryPriceFeed(bytes32) method Response ]

{

id (bytes32) : 0xe62df6c8b4a85fe1a67db44dc12de5db330f7ac66b72dc658afedf0f4a415b43

price {

price (int64) : 6699474451986

conf (uint64) : 1684380812

expo (int32) : -8

publishTime (uint256) : 1772993272

}

emaPrice {

price (int64) : 6705890900000

conf (uint64) : 1877621000

expo (int32) : -8

publishTime (uint256) : 1772993272

}

}

ETH unix time = Tue Mar 17 2026 20:15:38 GMT+0000

[ queryPriceFeed(bytes32) method Response ]

{

id (bytes32) : 0xff61491a931112ddf1bd8147cd1b641375f79f5825126d665480874634fd0ace

price {

price (int64) : 231995236972

conf (uint64) : 111478428

expo (int32) : -8

publishTime (uint256) : 1773778538

}

emaPrice {

price (int64) : 232964792000

conf (uint64) : 104679897

expo (int32) : -8

publishTime (uint256) : 1773778538

}

}

NVDA unix time = Tue Mar 03 2026 21:00:19 GMT+0000

[ queryPriceFeed(bytes32) method Response ]

{

id (bytes32) : 0xb1073854ed24cbc755dc527418f52b7d271f6cc967bbf8d8129112b18860a593

price {

price (int64) : 18000389

conf (uint64) : 19641

expo (int32) : -5

publishTime (uint256) : 1772571619

}

emaPrice {

price (int64) : 18006678

conf (uint64) : 10552

expo (int32) : -5

publishTime (uint256) : 1772571619

}

}

Hey @hollowgrahm, welcome!

The behavior you’re seeing is expected — Pyth is a pull oracle, meaning prices on-chain only update when someone explicitly pushes them. On testnets like Sepolia, there are no sponsored price pushers running, so the on-chain data goes stale unless your app (or someone else) updates it.

The fix: Instead of relying on queryPriceFeed() (which reads potentially stale on-chain state), you need to implement the pull model:

  1. Fetch fresh price data from Hermes (https://hermes.pyth.network/)
  2. Call updatePriceFeeds() on the Pyth contract with that data
  3. Then read the price

The SDK handles this seamlessly — check out the EVM integration guide (How to Use Real-Time Data in EVM Contracts | Pyth Developer Hub).

For your testnet development, you can also run the Price Pusher (Using Price Pusher | Pyth Developer Hub) yourself to keep feeds updated at your desired frequency.

Note: NVDA is an equity feed, so it only updates during US market hours (9:30am-4pm ET, Mon-Fri). Outside those hours, no new prices are published.

Let me know if you need help with the integration!