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

Prediction Market Odds API (2026): Live Probabilities From Every Venue

Prediction Market Odds API (2026): Live Probabilities From Every Venue

The Short Answer

A prediction market odds API returns each outcome's price, and that price is already a probability: a Yes share at $0.13 means the market puts the event at about 13%. To show it as sports-style odds, convert it: decimal odds are 1 divided by the price, and American odds are +100 × (1 − p) / p below 50% or −100 × p / (1 − p) above it. Polymarket and Kalshi publish these prices for free. The Predictefy API returns them as probabilities across 15+ venues in one schema, and its sports screen also returns American and decimal odds directly.

Key Takeaways

  • A prediction market price between $0 and $1 is the market's implied probability, because a winning share pays $1.
  • Decide which price you mean before converting: best ask (what a buyer pays), best bid, midpoint or last trade can give different odds.
  • Polymarket serves prices on its CLOB (/book, /midpoint) and Kalshi on each market record (yes_ask_dollars, yes_bid_dollars).
  • The conversion to decimal and American odds is simple arithmetic, shown in runnable code below.
  • Predictefy normalizes every venue's price to a 0 to 1 probability, so one function formats odds for all of them.

How do prediction market prices become odds?

A winning share pays $1.00 and a losing share pays nothing, so the price of a share is what the market thinks the chance is. Polymarket describes its prices as odds that represent the current probability of an event. From a probability p between 0 and 1:

FormatFormulap = 0.65p = 0.13
Probabilityp × 10065%13%
Decimal odds1 / p1.547.69
American odds−100p / (1 − p) if p ≥ 0.5, else +100(1 − p) / p−186+669

These conversions ignore fees. If you want the odds a trader actually gets, add the venue's taker fee to the price first.

Which price should you convert?

Each market has several prices at once, and they give different odds:

  • Best ask: the cheapest Yes share for sale. This is what a buyer pays, so it is the honest "odds to back Yes".
  • Best bid: the best price someone will pay for Yes. Use it for the odds against.
  • Midpoint: halfway between bid and ask. Good for charts and headlines, not a price anyone can trade at.
  • Last trade: what the most recent fill printed. It can be stale in quiet markets.

Label whichever one you show. In a thin market, the ask can sit several cents above the midpoint, which moves long-shot American odds by hundreds of points.

How do you get odds from Polymarket and Kalshi?

Both are free and need no key for market data. This Node 18+ script reads the best Yes ask from each venue and converts it:

const toOdds = (p) => ({
  probability: `${(p * 100).toFixed(1)}%`,
  decimal: (1 / p).toFixed(2),
  american: p >= 0.5 ? `-${Math.round((100 * p) / (1 - p))}` : `+${Math.round((100 * (1 - p)) / p)}`,
});

// Polymarket: best ask on the Yes token from the CLOB book
const [pm] = await (await fetch('https://gamma-api.polymarket.com/markets?limit=1&active=true&closed=false&order=volume24hr&ascending=false&liquidity_num_min=50000&end_date_min=2026-11-01')).json();
const yesToken = pm.version === 'v2' ? pm.positionIds[0] : JSON.parse(pm.clobTokenIds)[0];
const book = await (await fetch(`https://clob.polymarket.com/book?token_id=${yesToken}`)).json();
const pmAsk = Number(book.asks.at(-1).price); // best ask is the last entry
console.log('Polymarket |', pm.question, '|', toOdds(pmAsk));

// Kalshi: Yes ask straight from the market record
const { markets: [km] } = await (await fetch('https://external-api.kalshi.com/trade-api/v2/markets?status=open&limit=1&series_ticker=KXFEDDECISION')).json();
console.log('Kalshi |', km.title, '|', toOdds(Number(km.yes_ask_dollars)));

Save it as odds.mjs and run node odds.mjs. In our checks on 16 October 2026 it printed a Polymarket market asking $0.13 for Yes (13.0%, decimal 7.69, American +669) and a Kalshi Fed market asking $0.14 (14.0%, 7.14, +614). Polymarket's book lists bids and asks with the best price last in each array. Kalshi publishes prices as decimal-dollar strings such as "0.1400", so wrap them in Number(). For more on each venue's book, see the Polymarket order book API and the Kalshi order book API.

Two quick alternatives on Polymarket: GET /midpoint?token_id= returns {"mid":"..."}, and Gamma's market record carries outcomePrices, a JSON-encoded string you parse before use.

How do you get odds from every venue at once?

Each venue formats prices its own way, so a multi-venue odds board means one parser per venue. Predictefy returns every outcome's price as a probability from 0 to 1, on the same market record for all 15+ venues, so the toOdds function above works unchanged:

import Predictefy from '@predictefy/sdk';

const client = new Predictefy({ apiKey: process.env.PREDICTEFY_API_KEY });
const markets = await client.router.fetchMarkets({ query: 'fed', status: 'active', limit: 10 });

for (const m of markets) {
  for (const o of m.outcomes) {
    if (o.price) console.log(m.title, o.label, toOdds(o.price));
  }
}

This type-checks against @predictefy/sdk 1.0.0-beta.11 (with toOdds from the first example). Each price comes with a priceBasis that says whether it is a midpoint or a last trade, so you can label it. For sports, Predictefy's sports odds screen goes further and returns probability, american and decimal for each venue's line, plus a net price after known fees.

What can you build with an odds API?

  • An odds comparison page showing one question with every venue's price in the format your readers use.
  • A sportsbook versus prediction market screen, since American odds make the two directly comparable.
  • Alerts when implied probability crosses a threshold, for example a candidate passing 50%.
  • Embeds for news sites that want "the market says 13%" next to a story.

Prices are the market's estimate, not a certainty, and trading on them involves risk.

Frequently Asked Questions

Are prediction market prices the same as probabilities?

Yes, approximately. A winning share pays $1, so a price of $0.65 implies about a 65% chance, before fees and the bid-ask spread.

How do I convert a prediction market price to American odds?

For a price p of 0.5 or more, American odds are −100 × p / (1 − p). Below 0.5 they are +100 × (1 − p) / p. A price of 0.65 is −186, and 0.13 is +669.

Is there a free prediction market odds API?

Yes. Polymarket's and Kalshi's market data are free with no key, and Predictefy's Free plan covers 15+ venues with 25,000 credits a month.

Should I use the midpoint or the ask for odds?

Use the ask for the odds a buyer actually gets, and the midpoint for charts or headlines. Always label which one you show.

Which API returns American and decimal odds directly?

Predictefy's sports odds screen returns probability, American and decimal odds for each venue's line. For other markets, convert the probability with the formulas above.