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

Prediction Market Data in Google Sheets and Excel (2026)

Prediction Market Data in Google Sheets and Excel (2026)

The Short Answer

You can pull live Polymarket and Kalshi prices into Google Sheets with a short Apps Script custom function, and into Excel with Data > From Web, because both venues serve market data as free JSON with no key. Sheets' IMPORTDATA only reads CSV and TSV, so JSON needs Apps Script's UrlFetchApp. Excel's Power Query reads JSON directly and turns it into a table. The scripts below were tested against the live APIs. For 15+ venues in one consistent format, the Predictefy API returns every venue's markets in the same shape, which keeps spreadsheet formulas simple.

Key Takeaways

  • Polymarket's Gamma API and Kalshi's market API return JSON with no key, which suits spreadsheets.
  • Google Sheets: IMPORTDATA reads only CSV or TSV, so use an Apps Script custom function for JSON.
  • Apps Script allows 20,000 URL fetches a day on a consumer account and 100,000 on Google Workspace.
  • Excel: Data > From Web reads a JSON URL into Power Query, where you expand it into a table and refresh on demand.
  • Keep the market list small and refresh sensibly; spreadsheets are for monitoring, not trading.

Can you get prediction market data into a spreadsheet?

Yes. Prediction market prices are just numbers from a URL, and both big US-accessible venues publish them for free. Polymarket's Gamma API lists markets with their prices and volume, and Kalshi's Trade API lists markets with their Yes bid and ask. The only catch is format: both return JSON, and each spreadsheet handles JSON differently.

How do you get Polymarket and Kalshi prices into Google Sheets?

Google's IMPORTDATA function imports CSV and TSV only, so it cannot read these JSON APIs. Instead, add two custom functions with Apps Script. In your sheet, open Extensions > Apps Script, paste this, and save:

/**
 * Top Polymarket markets by 24-hour volume.
 * In a cell: =POLYMARKET_TOP(10)
 * @customfunction
 */
function POLYMARKET_TOP(limit) {
  const url = 'https://gamma-api.polymarket.com/markets?active=true&closed=false&order=volume24hr&ascending=false&limit=' + (limit || 10);
  const markets = JSON.parse(UrlFetchApp.fetch(url, { muteHttpExceptions: true }).getContentText());
  const rows = [['Market', 'Yes price', '24h volume']];
  markets.forEach(function (m) {
    rows.push([m.question, Number(JSON.parse(m.outcomePrices)[0]), Math.round(m.volume24hr || 0)]);
  });
  return rows;
}

/**
 * Open Kalshi markets in one series, with Yes bid and ask.
 * In a cell: =KALSHI_SERIES("KXFEDDECISION")
 * @customfunction
 */
function KALSHI_SERIES(series) {
  const url = 'https://external-api.kalshi.com/trade-api/v2/markets?status=open&limit=50&series_ticker=' + encodeURIComponent(series);
  const data = JSON.parse(UrlFetchApp.fetch(url, { muteHttpExceptions: true }).getContentText());
  const rows = [['Market', 'Yes bid', 'Yes ask']];
  data.markets.forEach(function (m) {
    rows.push([m.title + ' ' + (m.yes_sub_title || ''), Number(m.yes_bid_dollars), Number(m.yes_ask_dollars)]);
  });
  return rows;
}

Back in the sheet, type =POLYMARKET_TOP(10) in a cell and the table fills in below and to the right. =KALSHI_SERIES("KXFEDDECISION") lists open Fed decision markets. In our checks on 16 October 2026, the functions returned the live Polymarket leaders with Yes prices and volumes, and Kalshi's January 2028 Fed markets with bids and asks such as $0.10 and $0.14. Format the price columns as percentages to read them as probabilities. The first run asks you to authorize external requests.

A few Google limits to know. Apps Script allows 20,000 URL fetch calls a day on a consumer account and 100,000 on Google Workspace, and a custom function must finish within 30 seconds. Custom functions recalculate when their inputs change, so for a timed refresh, write a normal function that fills a range and run it from a time-driven trigger.

How do you get prediction market data into Excel?

Excel's Power Query reads JSON from a URL without any code:

  1. Go to Data > Get Data > From Other Sources > From Web (or Data > From Web).
  2. Paste a URL, for example https://external-api.kalshi.com/trade-api/v2/markets?status=open&limit=50&series_ticker=KXFEDDECISION, and choose Anonymous access.
  3. In the Power Query editor, click the List link next to markets, choose To Table, then use the expand button on Column1 to pick the fields you want, such as title, yes_sub_title, yes_bid_dollars and yes_ask_dollars.
  4. Change the price columns to Decimal Number, then Close & Load.
  5. Refresh with Data > Refresh All, or set a refresh interval in the query's connection properties.

For Polymarket, use a Gamma URL such as https://gamma-api.polymarket.com/markets?active=true&closed=false&order=volume24hr&ascending=false&limit=20. Gamma returns a list at the top level, so choose To Table straight away and expand question, outcomePrices and volume24hr. Note that outcomePrices arrives as text such as ["0.125", "0.875"], so split it to get the Yes price.

How do you get every venue into one sheet?

Each venue needs its own function, its own field names and its own price format, which is where spreadsheets get messy. Predictefy returns markets from 15+ venues with the same columns: title, outcomes with probability prices, 24-hour volume, liquidity and close date. One function or one Power Query then covers every venue. Requests use a bearer key in the Authorization header against https://data.predictefy.com/api/{venue}/fetchMarkets, and the Free plan includes 25,000 credits a month, where one market list costs 1 credit.

Spreadsheet data is a snapshot that can be minutes old. Use it for research and monitoring, and trade from a live order book. Trading involves risk.

Frequently Asked Questions

Can I use IMPORTDATA for Polymarket in Google Sheets?

No. IMPORTDATA reads CSV and TSV only, and Polymarket's API returns JSON. Use an Apps Script custom function with UrlFetchApp, as shown above.

Do I need an API key to get Kalshi prices into Excel?

No. Kalshi's market data is public; choose Anonymous access in Excel's From Web dialog.

How often does the sheet update?

Custom functions recalculate when their inputs change. For timed updates, run a script from a time-driven trigger in Sheets, or set a refresh interval on the query in Excel.

How many requests can Google Sheets make?

Apps Script allows 20,000 URL fetch calls a day on a consumer Google account and 100,000 on Google Workspace.

Can I get data from many prediction markets in one sheet?

Yes, with one function per venue, or with Predictefy, which returns markets from 15+ venues in one format so one function covers all of them.