A pull oracle is an oracle that writes a price to a blockchain only when an application asks for it, instead of broadcasting every update to every chain on a timer. Pyth Network uses this design: its prices refresh several times per second off-chain, and a protocol "pulls" the latest signed price into its own transaction at the moment it needs one, paying a small fee for that single update.
The design is why Pyth can serve thousands of feeds across around 100 blockchains at sub-second freshness. It also moves responsibilities onto the applications that use it, which is where most of the interesting detail sits.
Following One Price From Trading Desk to Liquidation
Take a trader holding a leveraged SOL long on a decentralized perpetual exchange. SOL drops sharply, and a liquidation bot wants to close the position. Here is what happens with Pyth underneath.
On Pythnet, Pyth's own appchain, dozens of publishers are submitting their SOL/USD prices roughly every 400 milliseconds. Each submission includes a price and a confidence interval, and each is signed by the publisher. Pythnet combines them into an aggregate price with its own confidence band in every slot.
Those aggregates are packaged, and a Merkle root covering all feeds is signed by the guardian network of Wormhole, the cross-chain messaging protocol. Pyth's off-chain price service, called Hermes, serves the latest signed updates to anyone who asks.
The liquidation bot fetches the newest SOL/USD update from Hermes and includes it in its liquidation transaction. The perpetual exchange's contract calls the Pyth contract on that chain, which checks the Wormhole signatures and the Merkle proof, stores the new price and charges a small update fee. In the same transaction, the exchange reads the fresh price and executes the liquidation.

The entire price update exists on-chain only because someone needed it. Nobody paid to post the thousands of SOL prices that were never used. Pyth's pull update documentation walks through the integration from the developer's side.
Pull and Push Delivery Side by Side
| Question | Pull oracle (Pyth) | Push oracle (traditional model) |
|---|---|---|
| When is a price written on-chain? | Only when an app or user pulls one | On a heartbeat or when price moves past a threshold |
| Who pays the gas? | The transaction that needs the price | The oracle network or its sponsors |
| How fresh is the price? | As fresh as the latest pull, typically under a second old | As old as the last scheduled update |
| Can a contract read it without an update? | Yes, but it may be stale | Yes, always present |
| Best suited to | Trading, liquidations, derivatives | Lending, stablecoins, passive reads |
The trade-off is visible in the fourth row. A push feed is always sitting on-chain, while a pull feed is only as current as the last transaction that refreshed it. That is the core reason lending markets have leaned toward push oracles and derivatives venues toward pull, a split covered in more depth in Pyth vs Chainlink.
Update fees are paid in the chain's native gas token, such as SOL or ETH, and PYTH plays no part in them. The token's value rests on staking, governance and buybacks instead, as explained in the PYTH tokenomics guide.
Why Confidence Intervals Matter
Every Pyth price carries a confidence interval, and it is one of the most useful and least discussed parts of the design. The interval reflects how much publishers disagree and how uncertain each one is.
Suppose SOL/USD comes back as $150.00 with a confidence of ±$0.08. Markets are calm and publishers agree closely. During a crash the same feed might read $142.30 ±$1.90, telling the application that the true price could reasonably sit anywhere between about $140.40 and $144.20.
Well-built protocols use that band. A lending market can value collateral at the lower edge and debt at the upper edge, or pause liquidations if the band grows too wide. Pyth's best practices guide recommends exactly these checks. Protocols that ignore the interval and treat the midpoint as gospel are the ones most exposed to bad liquidations in fast markets.
Where Pull Oracles Can Go Wrong
Stale prices
Because a pull price only updates when someone pulls it, a contract can read an old value if the application forgets to require a fresh update. Integrations are supposed to reject prices older than a set age, typically a few seconds to a minute depending on the use.
Publisher and data errors
If several publishers send bad data at once, the aggregate can be wrong. Pyth's defense is economic: publishers stake PYTH in Oracle Integrity Staking, and delegators back them, with up to 5% of a pool at risk if the data harms a protocol. That system is covered in how to stake PYTH.
A third dependency sits in the bridge layer. Cross-chain delivery relies on Wormhole guardians signing each batch of updates, so an outage or compromise there would affect Pyth prices on every non-Solana chain. It is a concentrated point of trust that users should know about.
Finally, the ability to choose when to pull a price creates value for whoever acts first. Liquidation bots compete to pull and liquidate, and that competition historically leaked value to bots. Pyth's Express Relay auctions those opportunities so protocols can capture the value themselves.
What It Means for Traders
For traders, the pull model mostly shows up as tighter tracking between on-chain perpetual prices and the wider market, since venues can refresh prices at every trade. It also explains why PYTH trades partly as a bet on on-chain derivatives activity: more pulls mean more fees, and more fees fund the buybacks behind our PYTH price prediction scenarios.
Institutions that need even faster data can skip the on-chain path entirely. Pyth Pro and Pyth Lazer deliver millisecond-level prices off-chain by subscription, the business covered in Pyth Pro and the market data business.
Frequently Asked Questions
What is the difference between a push and a pull oracle?
A push oracle writes prices to the blockchain on a schedule or when prices move, so a value is always available. A pull oracle writes a price only when an application requests it, which allows faster and cheaper updates but requires the application to refresh the price itself.
Who pays for Pyth price updates?
The transaction that pulls a Pyth price pays a small update fee plus gas, in the chain's native token. That cost is usually covered by the protocol's users or by bots executing liquidations and trades. PYTH itself is not used to pay update fees.
How often does Pyth update prices?
Pyth aggregates prices on Pythnet about every 400 milliseconds, and Pyth Pro and Lazer offer updates down to about one millisecond. On a destination chain, a price updates whenever an application pulls it, which on busy trading venues can be many times per second.
The Design Behind the Speed
Pyth's pull model shifts gas costs and freshness checks onto the applications that use its prices, and in exchange it offers faster, cheaper and far broader coverage than a push network could afford. The trade-off suits trading protocols especially well, which is where Pyth has built its strongest position. Holders who want to take part in securing that system can keep their tokens in one of the best PYTH wallets and stake from there.
To trade the token behind the oracle, open a position in PYTH on the LeveX spot market or use PYTH perpetual futures to go long or short. Dig into more quick explainers at Crypto in a Minute.
