On the wire · 04:50:51 UTC Live 550 · Prematch 14,382 · Markets 57,042 Vol. I · No. 5 · Friday 13 November 2026 wss://pinnfeed.io/v1/stream
PinnFeed
Réponse · Google Sheets · déclencheur

Rafraîchir les cotes Pinnacle dans Google Sheets sur minuteur

Mis à jour le · PinnFeed · 1 min de lecture

Réponse : utilisez Apps Script UrlFetchApp contre GET /v1/odds, puis installez un déclencheur temporel (toutes les 15 minutes). Script complet : guide Google Sheets. Le plan Free suffit (30 s de retard, 1 000 req/jour).

Extrait déclencheur#

const KEY = PropertiesService.getScriptProperties().getProperty("PINNFEED_KEY");
const SPORT = "soccer";

function refreshOdds() {
  const url = "https://pinnfeed.io/v1/odds"
    + "?sport=" + encodeURIComponent(SPORT)
    + "&market=moneyline&main=true&limit=30";
  const res = UrlFetchApp.fetch(url, {
    headers: { "x-api-key": KEY, accept: "application/json" },
    muteHttpExceptions: true,
  });
  if (res.getResponseCode() !== 200) throw new Error(res.getContentText());
  const events = JSON.parse(res.getContentText()).events || [];
  const sheet = SpreadsheetApp.getActive().getSheetByName("Odds");
  const rows = [["home", "away", "home_dec", "away_dec", "fair_home", "updated"]];
  for (const ev of events) {
    const m = (ev.markets || []).find((x) => x.type === "moneyline");
    if (!m) continue;
    const by = Object.fromEntries((m.outcomes || []).map((o) => [o.name, o]));
    rows.push([
      ev.home, ev.away,
      by.home?.decimal, by.away?.decimal, by.home?.fair,
      new Date().toISOString(),
    ]);
  }
  sheet.clearContents();
  sheet.getRange(1, 1, rows.length, rows[0].length).setValues(rows);
}

/** Run once from the editor to install the 15-minute trigger. */
function installTrigger() {
  ScriptApp.getProjectTriggers().forEach((t) => ScriptApp.deleteTrigger(t));
  ScriptApp.newTrigger("refreshOdds").timeBased().everyMinutes(15).create();
}

Stockez la clé dans Paramètres du projet → Propriétés du script, jamais dans les cellules. Pour Excel, voir Power Query (EN). Le push en direct demande encore Builder (99 €/mois). Plans payants : essai de 3 jours ; carte requise, débitée après le jour 3 sauf résiliation.

Contenu éducatif pour adultes (18+) : ni pronostics ni promesse de gain. En France, seuls les opérateurs agréés par l'ANJ peuvent proposer des paris en ligne.

Questions fréquentes#

15 minutes brûlent-elles le quota Free ?#

96 appels/jour si le déclencheur est seul — sous le plafond Free de 1 000/jour. Ajoutez des sports avec prudence.

IMPORTDATA peut-il le faire ?#

IMPORTDATA ne peut pas envoyer x-api-key. Utilisez Apps Script (cette page) ou la réponse IMPORTDATA uniquement avec un proxy public que vous contrôlez — nous n'en fournissons pas.

Le plan WebSocket : Builder, 99 €/mois.

Les cotes Pinnacle en temps réel sur un seul WebSocket : les 13 sports, tous les marchés, cotes justes sans marge et cotes de clôture. 3 jours gratuits, résiliable en un clic.

Form K-1 · Free API key

Get your free API key.

One field. No password, no card: enter your email, click the link we send, and your key is on screen.

By continuing you agree to the Terms and Privacy Policy.

One free key per email. Link valid for 20 minutes.