{
  "openapi": "3.0.1",
  "info": {
    "title": "Pinnacle Odds API — Sharp Lines, Limits & Fair Odds",
    "description": "Pinnacle's moneyline, spread and total for every game, with the maximum stake it will accept on each market and the fair probability with the bookmaker's margin removed. Pinnacle is the sharp reference the rest of the market prices against — no API key, no login.",
    "version": "0.1",
    "x-build-id": "fsLqohlfaTOaFUEqZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/lergassy~pinnacle-odds-api/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-lergassy-pinnacle-odds-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    },
    "/acts/lergassy~pinnacle-odds-api/runs": {
      "post": {
        "operationId": "runs-sync-lergassy-pinnacle-odds-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor and returns information about the initiated run in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/runsResponseSchema"
                }
              }
            }
          }
        }
      }
    },
    "/acts/lergassy~pinnacle-odds-api/run-sync": {
      "post": {
        "operationId": "run-sync-lergassy-pinnacle-odds-api",
        "x-openai-isConsequential": false,
        "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
        "tags": [
          "Run Actor"
        ],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/inputSchema"
              }
            }
          }
        },
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Enter your Apify token here"
          }
        ],
        "responses": {
          "200": {
            "description": "OK"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "inputSchema": {
        "type": "object",
        "properties": {
          "mode": {
            "title": "🧭 What to get",
            "enum": [
              "odds",
              "leagues"
            ],
            "type": "string",
            "description": "<b>Odds</b> — moneyline, spread and total for every game, per book, with opening lines and movement. <b>Props</b> — player and game props from DraftKings for every game. <b>Futures</b> — championship, division, award and season-win markets. <b>Prediction markets</b> — Kalshi game contracts with traded probabilities. <b>Leagues</b> — every league DraftKings currently prices, with ids.",
            "default": "odds"
          },
          "leagues": {
            "title": "🏆 Leagues",
            "type": "array",
            "description": "One or more leagues. Odds, props and Kalshi contracts are matched game by game. You can also type any ESPN league path such as <code>soccer/eng.2</code> for the game list (DraftKings and Kalshi prices then depend on whether they carry that league).",
            "items": {
              "type": "string",
              "enum": [
                "nfl",
                "ncaaf",
                "nba",
                "wnba",
                "ncaam",
                "ncaaw",
                "mlb",
                "nhl",
                "epl",
                "laliga",
                "bundesliga",
                "seriea",
                "ligue1",
                "ucl",
                "uel",
                "mls",
                "ligamx",
                "eredivisie",
                "brasileirao",
                "worldcup",
                "facup",
                "atp",
                "wta",
                "ufc",
                "pfl",
                "f1",
                "nascar",
                "indycar"
              ],
              "enumTitles": [
                "NFL",
                "NCAA football",
                "NBA",
                "WNBA",
                "NCAA men's basketball",
                "NCAA women's basketball",
                "MLB",
                "NHL",
                "Premier League",
                "La Liga",
                "Bundesliga",
                "Serie A",
                "Ligue 1",
                "Champions League",
                "Europa League",
                "MLS",
                "Liga MX",
                "Eredivisie",
                "Brasileirão",
                "FIFA World Cup",
                "FA Cup",
                "ATP tennis",
                "WTA tennis",
                "UFC",
                "PFL",
                "Formula 1",
                "NASCAR",
                "IndyCar"
              ]
            }
          },
          "daysAhead": {
            "title": "📅 Days ahead",
            "minimum": 0,
            "maximum": 60,
            "type": "integer",
            "description": "Games from today up to this many days ahead (ignored when dates are set below). 0 = today only.",
            "default": 7
          },
          "dateFrom": {
            "title": "📅 From date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "<code>YYYY-MM-DD</code>, UTC. Optional."
          },
          "dateTo": {
            "title": "📅 To date",
            "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
            "type": "string",
            "description": "<code>YYYY-MM-DD</code>, UTC. Optional; at most 60 days after the start."
          },
          "markets": {
            "title": "📊 Markets",
            "type": "array",
            "description": "Odds mode: which game lines to output. Spread is the run line in MLB and the puck line in NHL; soccer moneylines carry a draw price.",
            "items": {
              "type": "string",
              "enum": [
                "moneyline",
                "spread",
                "total"
              ],
              "enumTitles": [
                "Moneyline (winner)",
                "Spread / run line / puck line",
                "Total (over/under)"
              ]
            },
            "default": [
              "moneyline",
              "spread",
              "total"
            ]
          },
          "oddsFormat": {
            "title": "🔢 Odds format",
            "enum": [
              "american",
              "decimal",
              "fractional",
              "implied"
            ],
            "type": "string",
            "description": "How the <code>homePrice</code>/<code>awayPrice</code>/<code>overPrice</code>… fields are written. Decimal odds and implied probabilities are always included as separate fields.",
            "default": "american"
          },
          "outputFormat": {
            "title": "🧱 Row layout",
            "enum": [
              "flat",
              "nested"
            ],
            "type": "string",
            "description": "<b>Flat</b> — one row per game × market × book, spreadsheet-friendly. <b>Nested</b> — one row per game with all books inside and the best price per outcome.",
            "default": "flat"
          },
          "includeAlternateLines": {
            "title": "➕ Alternate spreads and totals",
            "type": "boolean",
            "description": "Add DraftKings' alternate lines as extra rows (market <code>alternate-spread</code> / <code>alternate-total</code>).",
            "default": false
          },
          "includeFinished": {
            "title": "🏁 Include finished games",
            "type": "boolean",
            "description": "Odds mode: keep games that are already final (closing lines, if a source still carries them). Prediction-markets mode: keep settled contracts.",
            "default": false
          },
          "eventIds": {
            "title": "🎯 Only these games",
            "type": "array",
            "description": "ESPN event ids (the <code>eventId</code> field of any row, or the number in an ESPN game URL). Leave empty for every game in the date range.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "💯 Maximum rows",
            "minimum": 1,
            "maximum": 200000,
            "type": "integer",
            "description": "Stop after this many rows in the run.",
            "default": 5000
          },
          "concurrency": {
            "title": "Parallel requests",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "How many requests run at once.",
            "default": 6
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Not needed: every source answers Apify's own servers directly. Set only if a source starts refusing. <b>Leave it off unless a source starts refusing you:</b> a datacenter proxy is blocked by some books, so switching it on can cost you prices rather than save them. If you do need one, pick Residential.",
            "default": {
              "useApifyProxy": false
            }
          }
        }
      },
      "runsResponseSchema": {
        "type": "object",
        "properties": {
          "data": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string"
              },
              "actId": {
                "type": "string"
              },
              "userId": {
                "type": "string"
              },
              "startedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "finishedAt": {
                "type": "string",
                "format": "date-time",
                "example": "2025-01-08T00:00:00.000Z"
              },
              "status": {
                "type": "string",
                "example": "READY"
              },
              "meta": {
                "type": "object",
                "properties": {
                  "origin": {
                    "type": "string",
                    "example": "API"
                  },
                  "userAgent": {
                    "type": "string"
                  }
                }
              },
              "stats": {
                "type": "object",
                "properties": {
                  "inputBodyLen": {
                    "type": "integer",
                    "example": 2000
                  },
                  "rebootCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "restartCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "resurrectCount": {
                    "type": "integer",
                    "example": 0
                  },
                  "computeUnits": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "options": {
                "type": "object",
                "properties": {
                  "build": {
                    "type": "string",
                    "example": "latest"
                  },
                  "timeoutSecs": {
                    "type": "integer",
                    "example": 300
                  },
                  "memoryMbytes": {
                    "type": "integer",
                    "example": 1024
                  },
                  "diskMbytes": {
                    "type": "integer",
                    "example": 2048
                  }
                }
              },
              "buildId": {
                "type": "string"
              },
              "defaultKeyValueStoreId": {
                "type": "string"
              },
              "defaultDatasetId": {
                "type": "string"
              },
              "defaultRequestQueueId": {
                "type": "string"
              },
              "buildNumber": {
                "type": "string",
                "example": "1.0.0"
              },
              "containerUrl": {
                "type": "string"
              },
              "usage": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "integer",
                    "example": 1
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              },
              "usageTotalUsd": {
                "type": "number",
                "example": 0.00005
              },
              "usageUsd": {
                "type": "object",
                "properties": {
                  "ACTOR_COMPUTE_UNITS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATASET_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "KEY_VALUE_STORE_WRITES": {
                    "type": "number",
                    "example": 0.00005
                  },
                  "KEY_VALUE_STORE_LISTS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_READS": {
                    "type": "integer",
                    "example": 0
                  },
                  "REQUEST_QUEUE_WRITES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_INTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "DATA_TRANSFER_EXTERNAL_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                    "type": "integer",
                    "example": 0
                  },
                  "PROXY_SERPS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}