Pinnacle odds API

Pinnacle prices as structured JSON through one REST API.

Pinnacle is a sportsbook with the bookmaker key pinnacle. SockOdds is independent and is not affiliated with or endorsed by Pinnacle.

Leagues

Pinnacle prices are delivered for 10 leagues as of 30 October 2026: Bundesliga, UEFA Champions League, English Premier League, La Liga, Ligue 1, MLS, NBA, NFL, NHL and Serie A.

Request Pinnacle prices

Filter any odds request to Pinnacle with bookmakers=pinnacle:

curl -sS "https://api.sockodds.com/v1/odds?league=champions_league&bookmakers=pinnacle&markets=result&limit=1&starts_after=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
  -H "Authorization: Bearer $SOCKODDS_API_KEY"
const response = await fetch(`https://api.sockodds.com/v1/odds?league=champions_league&bookmakers=pinnacle&markets=result&limit=1&starts_after=${new Date().toISOString().slice(0, 19)}Z`, {
  headers: { Authorization: `Bearer ${process.env.SOCKODDS_API_KEY}` },
});
console.log(JSON.stringify(await response.json(), null, 2));
import json, os, urllib.request
from datetime import datetime, timezone

request = urllib.request.Request(
    f"https://api.sockodds.com/v1/odds?league=champions_league&bookmakers=pinnacle&markets=result&limit=1&starts_after={datetime.now(timezone.utc):%Y-%m-%dT%H:%M:%SZ}",
    headers={"Authorization": "Bearer " + os.environ["SOCKODDS_API_KEY"]},
)
with urllib.request.urlopen(request) as response:
    print(json.dumps(json.load(response), indent=2))

Response from a local copy of the API with invented test prices

{
  "data": [
    {
      "id": "ev_000ckk0smee8",
      "name": "AEK Athens v Arsenal",
      "league": {
        "key": "champions_league",
        "name": "UEFA Champions League"
      },
      "scheduled_start": "2026-10-16T11:00:00.000Z",
      "status": "scheduled",
      "participants": [
        {
          "role": "away",
          "identity": {
            "key": "arsenal",
            "name": "Arsenal"
          }
        },
        {
          "role": "home",
          "identity": {
            "key": "aek_athens",
            "name": "AEK Athens"
          }
        }
      ],
      "markets": [
        {
          "id": "mk_vjvmez58jfetd1be",
          "key": "result",
          "name": "Result (with the draw)",
          "period": "full",
          "subject": null,
          "alternate": false,
          "outcomes": [
            {
              "id": "oc_75k6atpa3cjb6f74",
              "name": "AEK Athens",
              "side": "home",
              "line": null,
              "prices": [
                {
                  "bookmaker": "pinnacle",
                  "decimal_odds": 2.11,
                  "implied_probability": 0.473934,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                }
              ]
            },
            {
              "id": "oc_x3qrjm8h7jjzfsrc",
              "name": "Draw",
              "side": "draw",
              "line": null,
              "prices": [
                {
                  "bookmaker": "pinnacle",
                  "decimal_odds": 3.5,
                  "implied_probability": 0.285714,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                }
              ]
            },
            {
              "id": "oc_h4xvrq67kdmrm180",
              "name": "Arsenal",
              "side": "away",
              "line": null,
              "prices": [
                {
                  "bookmaker": "pinnacle",
                  "decimal_odds": 3.71,
                  "implied_probability": 0.269542,
                  "available": true,
                  "observed_at": "2026-10-15T07:58:00.000Z"
                }
              ]
            }
          ]
        }
      ]
    }
  ],
  "meta": {
    "count": 1,
    "cursor": null
  },
  "links": {
    "next": null
  }
}

Plans

Pinnacle is included on Pro. See pricing for the bookmakers each plan includes.

Search across the SockOdds documentation and catalogue.