Home › Guides › How to get Polymarket odds in Google Sheets

How to get Polymarket odds in Google Sheets

Updated September 25, 2026 · facts checked against the dated sources listed below

For this site's CSV files one formula is enough: IMPORTDATA with the file's address. Live odds are published as JSON, which IMPORTDATA does not parse, so paste a short Apps Script that fetches the file and writes the rows into a sheet, then run it on a timer. The data is free under CC BY 4.0 if you credit the source with a link.

Import a CSV file with IMPORTDATA

Google's IMPORTDATA function imports a CSV or TSV file from a web address, given in quotation marks or as a reference to a cell that holds it, such as =IMPORTDATA(A1). This site publishes five CSV files, listed on the data page: resolved markets with their prices 30, 7 and 1 days before the close, resolution times and disputes, Bitcoin and Ethereum daily strikes, Polymarket and Kalshi price gaps, and the 100 biggest markets of all time.

The first time a spreadsheet uses an import function, Google shows a banner saying it can send and receive data from outside parties, and an editor has to click Allow access before the import runs. Then type one formula into cell A1 of an empty sheet, so the table has room to fill the cells below and to the right:

=IMPORTDATA("https://polymarkettrader.com/api/v1/accuracy.csv")
=IMPORTDATA("https://polymarkettrader.com/api/v1/resolution-time.csv")
=IMPORTDATA("https://polymarkettrader.com/api/v1/crypto-accuracy.csv")
=IMPORTDATA("https://polymarkettrader.com/api/v1/polymarket-kalshi-gaps.csv")
=IMPORTDATA("https://polymarkettrader.com/api/v1/biggest-markets.csv")

See also: Free Polymarket data

Read the columns

Each file starts with a header row. The accuracy file, for example, has event_slug, event, category, outcome, first_outcome, question, closed, price_30d_before_close, price_7d_before_close, price_1d_before_close, first_outcome_won (1 or 0) and volume, so a column of prices can be set against a column of results. Prices run from 0 to 1; format them as percentages to read them as probabilities.

See also: How accurate is Polymarket?

Load live odds from JSON with Apps Script

The live endpoints, such as /api/v1/odds/index.json with every tracked market, are JSON. In the spreadsheet, open Extensions, then Apps Script, and paste the function below. It fetches the file with UrlFetchApp, parses it with JSON.parse and writes one row per market into a tab named Polymarket odds, with the credit line the file asks for underneath.

Run it once from the editor. Google shows an authorization dialog the first time, because fetching an outside address needs permission to connect to an external service; after that the tab fills with each market, its leading outcome, probability, 24-hour volume, end date and link.

function refreshPolymarketOdds() {
  var url = 'https://polymarkettrader.com/api/v1/odds/index.json';
  var data = JSON.parse(UrlFetchApp.fetch(url).getContentText());
  var rows = [['Market', 'Leading outcome', 'Probability', '24h volume', 'Ends', 'Link']];
  data.markets.forEach(function (m) {
    rows.push([m.title, m.leader, m.probability, m.volume_24h, m.end_date || '', m.url]);
  });
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Polymarket odds') || ss.insertSheet('Polymarket odds');
  sheet.clearContents();
  sheet.getRange(1, 1, rows.length, rows[0].length).setValues(rows);
  sheet.getRange(rows.length + 2, 1).setValue(
      data.attribution.text + ' ' + data.attribution.url + ' (CC BY 4.0), updated ' + data.updated);
}

See also: Free odds API and endpoints

Refresh the data on a schedule

Google says IMPORTDATA checks for updates every hour while the spreadsheet is open. Reopening or refreshing the spreadsheet does not force an update, but deleting and re-entering the formula does, and import functions cannot refer to NOW or RAND, so a timestamp trick will not refresh them.

For the script, add a time-driven trigger: in the Apps Script editor click Triggers, then Add Trigger, and choose refreshPolymarketOdds with a time-driven source, or run the short function below once. Google may shift the exact run time within the hour. A custom function typed into a cell is no substitute: it only recalculates when you edit it or a cell it reads changes, and it must finish within 30 seconds.

There is no need to poll often, since our live JSON files are refreshed twice a day and the research CSVs weekly. Google's limits for consumer accounts are 20,000 URL fetch calls a day, 90 minutes of total trigger run time a day and 6 minutes per run, and heavy use of import functions across the spreadsheets you created brings a warning that data is loading slowly.

function addTrigger() {
  ScriptApp.newTrigger('refreshPolymarketOdds').timeBased().everyHours(6).create();
}

Credit the data

Everything on our data and developer pages is under CC BY 4.0. The license asks you to give appropriate credit, link to the license and say if you changed the data, and our data page asks you to credit Polymarket View with a link to the page you used. Each JSON file carries an attribution object with ready-made text and a link, which the script above writes under the table.

Keep the date next to the numbers, because prices move, and note that Polymarket's own website and API have their own terms.

See also: Free Polymarket data · How to cite Polymarket odds

Sources

Frequently asked questions

Can IMPORTDATA read JSON?

Google documents IMPORTDATA for CSV and TSV files. For this site's JSON endpoints, use a short Apps Script with UrlFetchApp, as shown above.

How often does IMPORTDATA refresh?

Google says it checks for updates every hour while the spreadsheet is open. Re-entering the formula forces a refresh; reopening the file does not.

Do I need an API key?

No. The files are static and need no key or sign-up; credit Polymarket View with a link.

Why does my sheet keep loading data?

Google limits how much traffic import functions can create across the open spreadsheets you created, so remove imports you no longer need or move large ones to a scheduled script.

Polymarket View is independent and not affiliated with Polymarket. Educational information, not financial advice. All guides · How market types work · Glossary · Polymarket odds today