{
  "openapi": "3.0.1",
  "info": {
    "title": "Pinnacle Odds Scraper",
    "description": "Collect Pinnacle pre-match odds for the NFL, NBA, NHL, MLB, college sports, soccer and UFC: moneyline, spread and total per game with American and decimal odds, implied probability and the published stake limit. Optional alternate lines, periods, team totals, props and futures.",
    "version": "0.1",
    "x-build-id": "JaJ8AQSLscpZSrg0L"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/automatic~pinnacle-odds/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-automatic-pinnacle-odds",
        "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/automatic~pinnacle-odds/runs": {
      "post": {
        "operationId": "runs-sync-automatic-pinnacle-odds",
        "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/automatic~pinnacle-odds/run-sync": {
      "post": {
        "operationId": "run-sync-automatic-pinnacle-odds",
        "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": {
          "leagues": {
            "title": "Leagues",
            "uniqueItems": true,
            "type": "array",
            "description": "Leagues to collect. Omit both league fields for NFL and NBA. A bare start samples at most 20 records (MLB and EPL in June–August). Explicit empty lists are invalid.",
            "items": {
              "type": "string",
              "enum": [
                "nfl",
                "ncaaf",
                "nba",
                "wnba",
                "ncaab",
                "ncaaw",
                "mlb",
                "nhl",
                "epl",
                "laliga",
                "seriea",
                "bundesliga",
                "ligue_1",
                "ucl",
                "uel",
                "mls",
                "liga_mx",
                "brasileirao",
                "argentina_primera",
                "eredivisie",
                "primeira_liga",
                "belgian_pro_league",
                "scottish_premiership",
                "super_lig",
                "chile_primera",
                "j1_league",
                "ufc"
              ],
              "enumTitles": [
                "NFL",
                "NCAAF (college football)",
                "NBA",
                "WNBA",
                "NCAAB (men's college basketball)",
                "NCAAW (women's college basketball)",
                "MLB",
                "NHL",
                "English Premier League",
                "La Liga",
                "Serie A",
                "Bundesliga",
                "Ligue 1",
                "UEFA Champions League",
                "UEFA Europa League",
                "MLS",
                "Liga MX",
                "Brasileirao",
                "Argentine Primera Division",
                "Eredivisie",
                "Primeira Liga",
                "Belgian Pro League",
                "Scottish Premiership",
                "Super Lig",
                "Chilean Primera Division",
                "J1 League",
                "UFC"
              ]
            }
          },
          "leagueIds": {
            "title": "Other leagues by Pinnacle league id",
            "type": "array",
            "description": "Optional. Pinnacle's own numeric league ids for competitions that are not in the list above, for example [382] for basketball's Euroleague. Rows for these leagues carry Pinnacle's league name and a null league key. Leagues and league ids together are limited to 12 per run."
          },
          "marketFamilies": {
            "title": "Market types",
            "uniqueItems": true,
            "type": "array",
            "description": "moneyline: the match winner, including the three-way price with a draw. spreads and totals: point spread and over/under. team_totals: each team's own over/under. props: game and player props. futures: outright boards such as the conference winner.",
            "items": {
              "type": "string",
              "enum": [
                "moneyline",
                "spreads",
                "totals",
                "team_totals",
                "props",
                "futures"
              ],
              "enumTitles": [
                "Moneyline",
                "Spreads",
                "Totals",
                "Team totals",
                "Props (game and player)",
                "Futures"
              ]
            }
          },
          "periods": {
            "title": "Periods",
            "uniqueItems": true,
            "type": "array",
            "description": "Which part of the game the markets cover. game is the full game. first_period, second_period and third_period are quarters in football and basketball and periods in hockey. Futures are not affected by this setting.",
            "items": {
              "type": "string",
              "enum": [
                "game",
                "first_half",
                "first_period",
                "second_period",
                "third_period"
              ],
              "enumTitles": [
                "Full game",
                "First half",
                "First quarter / first period",
                "Second quarter / second period",
                "Third period"
              ]
            }
          },
          "mainLineOnly": {
            "title": "Main line only",
            "type": "boolean",
            "description": "Keep only the main spread, total and team total of each game and period. Turn this off to also collect every alternate line, each as its own record (about 10 to 25 lines per game and market)."
          },
          "includeRegulationTime": {
            "title": "Hockey regulation-time markets",
            "type": "boolean",
            "description": "Hockey games are priced twice: including overtime (the default, two-way moneyline) and regulation time only (three-way moneyline with a draw, its own puck line and total). Turn this on to also collect the regulation-time markets; they are marked includesOvertime false."
          },
          "dateFrom": {
            "title": "First day",
            "type": "string",
            "description": "First day of games to collect, as YYYY-MM-DD (UTC calendar day of the start time). Leave both dates empty for today and the next 14 days. With only this date set, that single day is collected. Futures are not limited by the dates."
          },
          "dateTo": {
            "title": "Last day",
            "type": "string",
            "description": "Last day of games to collect, as YYYY-MM-DD (UTC). A window may cover at most 31 days."
          },
          "maxResults": {
            "title": "Maximum records",
            "minimum": 1,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum dataset records (one market per game), 1–10,000. A bare start samples at most 20; explicit inputs default to 1,000 if this field is omitted."
          },
          "requestDelaySecs": {
            "title": "Delay between requests",
            "minimum": 0.5,
            "maximum": 10,
            "type": "number",
            "description": "Seconds between request starts. The default of 1 keeps the run to about one request per second."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy is used by default. Pinnacle refuses some connections with a 403 answer; if a run fails that way, choose a different proxy group or country here (for example residential proxies in the United States). You may also supply your own proxy or turn proxies off.",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}