NEW: Live arbitrage across 10+ prediction markets.Arbitrage →
← Index
APIOct 2, 2026

Polymarket Price to Beat API (2026): How to Get the Start Price

Polymarket Price to Beat API (2026): How to Get the Start Price

The Short Answer

On Polymarket's 5-minute, 15-minute and 4-hour crypto Up or Down markets, the price to beat is published in the Gamma API as eventMetadata.priceToBeat on each event, and a settled window also carries finalPrice. In every window we checked, the price to beat equaled the previous window's final price, and the market resolved Up exactly when the final price was at or above the price to beat. The catch is timing. Gamma fills in both values several minutes after the fact, so a bot trading a live window has to take the start price from Chainlink's stream at the window boundary instead.

Key Takeaways

  • Crypto Up or Down events have slugs like btc-updown-5m- plus the window's start time in Unix seconds.
  • Gamma's eventMetadata holds priceToBeat and, once settled, finalPrice, both from Chainlink's BTC/USD TWAP stream.
  • Across 22 consecutive 5-minute windows, each price to beat matched the previous window's final price, and every result followed final against start.
  • Gamma published the metadata minutes after each window, so it is a record, not a live signal.
  • Hourly Bitcoin Up or Down markets work differently: they compare the close and open of Binance's 1-hour BTC/USDT candle.

What is the price to beat on Polymarket?

It is the starting price a crypto Up or Down market measures against. Polymarket's rules for the 5-minute, 15-minute and 4-hour markets say the market resolves Up if the time-weighted average price of Bitcoin, generated by Chainlink, over the time range is greater than or equal to the price at the beginning of that range. The resolution source is Chainlink's BTC/USD TWAP data stream, not any exchange's spot price.

MarketEvent slugPrice to beatDecided by
5-minute Up or Downbtc-updown-5m-{start}Chainlink TWAP stream at the window's startChainlink TWAP stream
15-minute Up or Downbtc-updown-15m-{start}Chainlink TWAP stream at the window's startChainlink TWAP stream
4-hour Up or Downbtc-updown-4h-{start}Chainlink TWAP stream at the window's startChainlink TWAP stream
Hourly Bitcoin Up or DownDated, such as bitcoin-up-or-down-october-2-2pm-etThe open of the Binance BTC/USDT 1-hour candleThat candle's close

The same pattern covers other coins, with the ticker swapped in, such as sol-updown-5m- and xrp-updown-5m-. How the short markets work day to day is covered in how to track 5 minute Bitcoin markets.

How do you get the price to beat from the API?

Ask the Gamma API for the event by slug. No key is needed. A settled window returns both values:

curl -s "https://gamma-api.polymarket.com/events?slug=btc-updown-5m-1790965500"
"eventMetadata": {
  "finalPrice": 84595.45276441918,
  "priceToBeat": 84556.29882459581
}

This pulls the last ten settled 5-minute windows and the result each one produced, which is the raw material for a backtest:

const WINDOW = 300;
const now = Math.floor(Date.now() / 1000);
const latest = now - (now % WINDOW) - 3 * WINDOW;

for (let start = latest - 9 * WINDOW; start <= latest; start += WINDOW) {
  const [event] = await (await fetch(`https://gamma-api.polymarket.com/events?slug=btc-updown-5m-${start}`)).json();
  const { priceToBeat, finalPrice } = event?.eventMetadata ?? {};
  if (finalPrice == null) continue;
  const result = finalPrice >= priceToBeat ? 'Up' : 'Down';
  console.log(new Date(start * 1000).toISOString(), priceToBeat.toFixed(2), finalPrice.toFixed(2), result);
}

Window starts are multiples of 300 seconds for 5-minute markets, so the slug is easy to build from any time. Use 900 for 15-minute markets and 14,400 for 4-hour ones. The loop stops three windows back because the newest windows are not settled in Gamma yet.

When does the price to beat appear?

Later than most traders expect. In our checks on 2 October 2026, a 5-minute window had no eventMetadata at all while it was trading. The previous window's finalPrice appeared about five and a half minutes after that window closed, and the next window's price to beat had still not appeared seven minutes after it opened.

Gamma is a reliable record once the metadata lands. Across 22 consecutive 5-minute windows, every price to beat equaled the previous window's final price, and every market resolved Up exactly when its final price was at or above its price to beat. For backtests and settlement checks, Gamma is the source. For a live window, it is too slow.

How do you track the price to beat live?

Read the Chainlink TWAP stream yourself, and take its value at the window boundary as the start price. Polymarket streams reference prices through PolyBolt, its real-time data service, which replaces the older RTDS feeds:

  • prices.crypto.twap streams Chainlink-computed crypto TWAPs with a fixed 60-second window, the same kind of stream that settles these markets, with symbols such as btcusd.
  • prices.crypto streams crypto reference prices in US dollars.

Both need an authenticated secure client from @polymarket/client 0.11.0 or later. Each new subscription starts with a snapshot of the previous two minutes, so a bot that connects just after a boundary still sees the value it needs.

To see the market and the reference prices together, the Predictefy API streams Polymarket's Up and Down order books over one WebSocket alongside Binance's BTC/USDT price and Chainlink's on-chain BTC/USD price. That is a close reference rather than the TWAP stream that settles the market. We used exactly that setup to run our Claude vs GPT-6 trading test on these markets.

How do hourly Bitcoin Up or Down markets work?

They use a different source. Polymarket's hourly Bitcoin Up or Down markets resolve Up if the close of the Binance BTC/USDT 1-hour candle that begins at the stated time is greater than or equal to its open. The price to beat is that candle's open price, which Binance's public kline data provides, and those events carry no priceToBeat in Gamma.

Frequently Asked Questions

What is the price to beat on Polymarket?

It is the starting price a crypto Up or Down market measures against. On 5-minute, 15-minute and 4-hour markets it comes from Chainlink's BTC/USD TWAP stream at the start of the window, and the market resolves Up if the Chainlink TWAP over the window is at or above it.

How do I get the price to beat from the Polymarket API?

Request the event from the Gamma API by slug, such as btc-updown-5m- followed by the window's start in Unix seconds, and read eventMetadata.priceToBeat. Settled windows also carry eventMetadata.finalPrice. No API key is needed.

Why is the price to beat missing from the Gamma API?

Because Gamma fills it in after the fact. In our checks, 5-minute windows had no eventMetadata while trading, and the values appeared several minutes after the window. For a live window, take the start price from Chainlink's TWAP stream at the window boundary.

Is the price to beat the previous window's final price?

In our checks, yes. Across 21 consecutive pairs of 5-minute Bitcoin windows, each window's priceToBeat exactly matched the previous window's finalPrice in the Gamma API.

What is finalPrice in Polymarket's eventMetadata?

It is the closing value Polymarket records for a settled window. In every window we checked, the market resolved Up when finalPrice was at or above priceToBeat and Down otherwise.

How do hourly Bitcoin Up or Down markets decide the result?

They compare the close and open of the Binance BTC/USDT 1-hour candle that starts at the stated time. Up wins if the close is at or above the open, so the price to beat is that candle's open.