{
  "openapi": "3.0.1",
  "info": {
    "title": "Sports Odds Scraper - NFL, NBA, MLB & Soccer",
    "description": "Compare sportsbook moneyline, spread and totals odds for NFL, NBA, MLB, NHL and soccer. Get decimal and American odds, implied probabilities and quote changes. Each row represents one sportsbook, market and outcome.",
    "version": "0.1",
    "x-build-id": "X5SYpd9OrZbjTFsgX"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fetchfinch~sports-odds-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fetchfinch-sports-odds-scraper",
        "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/fetchfinch~sports-odds-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fetchfinch-sports-odds-scraper",
        "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/fetchfinch~sports-odds-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fetchfinch-sports-odds-scraper",
        "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": {
          "competitions": {
            "title": "Competitions",
            "minItems": 1,
            "uniqueItems": true,
            "type": "array",
            "description": "Select one or more competitions. Each selected competition uses one Sportsbook API request.",
            "items": {
              "type": "string",
              "enum": [
                "AFL",
                "CFL",
                "EFLC",
                "EPL",
                "EURO_BB",
                "FIFA_CWC",
                "FIFA_WC",
                "LIGUE_ONE",
                "DFL",
                "SERIE_A",
                "KBO",
                "LNH_D1",
                "MLB",
                "MLS",
                "MILB",
                "NBA",
                "NFL",
                "NHL",
                "NLL",
                "NWSL",
                "NCAAB",
                "NCAAF",
                "NPB",
                "PLL",
                "PWHL",
                "SM",
                "LA_LIGA",
                "SHL",
                "TGL",
                "UFL",
                "USFL",
                "WWC",
                "WNBA",
                "WBC",
                "XFL"
              ],
              "enumTitles": [
                "AFL - Australian Football League",
                "CFL - Canadian Football League",
                "EFLC - English Football League Championship",
                "EPL - English Premier League",
                "EuroLeague",
                "FIFA Club World Cup",
                "FIFA World Cup",
                "French Ligue 1",
                "German Bundesliga",
                "Italian Serie A",
                "KBO League",
                "LNH Division 1",
                "MLB - Major League Baseball",
                "MLS - Major League Soccer",
                "Minor League Baseball (Triple-A)",
                "NBA - National Basketball Association",
                "NFL - National Football League",
                "NHL - National Hockey League",
                "National Lacrosse League",
                "NWSL - National Women's Soccer League",
                "NCAA Basketball",
                "NCAA Football",
                "NPB - Nippon Professional Baseball",
                "Premier League Lacrosse",
                "Professional Women's Hockey League",
                "SM-Liiga",
                "La Liga",
                "Swedish Hockey League",
                "TGL Golf League",
                "United Football League",
                "United States Football League",
                "Women's FIFA World Cup",
                "WNBA - Women's National Basketball Association",
                "World Baseball Classic",
                "XFL"
              ]
            },
            "default": [
              "NFL"
            ]
          },
          "marketTypes": {
            "title": "Markets",
            "minItems": 1,
            "uniqueItems": true,
            "type": "array",
            "description": "Select the main markets to include. Filtering happens after the single competition request.",
            "items": {
              "type": "string",
              "enum": [
                "MONEYLINE",
                "POINT_SPREAD",
                "POINT_TOTAL"
              ],
              "enumTitles": [
                "Moneyline",
                "Point spread",
                "Total points"
              ]
            },
            "default": [
              "MONEYLINE",
              "POINT_SPREAD",
              "POINT_TOTAL"
            ]
          },
          "bookmakers": {
            "title": "Sportsbooks",
            "uniqueItems": true,
            "type": "array",
            "description": "Optional sportsbook filter. Leave empty to include every sportsbook returned for the selected events.",
            "items": {
              "type": "string",
              "enumSuggestedValues": [
                "BET_PARX",
                "BET_RIVERS",
                "BOVADA",
                "DRAFT_KINGS",
                "ESPN_BET",
                "FAN_DUEL",
                "OG_COM",
                "PROPHET_X",
                "BET_MGM",
                "CAESARS",
                "FANATICS",
                "PENN",
                "KALSHI",
                "POLYMARKET",
                "UNDERDOG"
              ],
              "enumTitles": [
                "BetParx",
                "BetRivers",
                "Bovada",
                "DraftKings",
                "ESPN BET",
                "FanDuel",
                "OG.com",
                "ProphetX",
                "BetMGM",
                "Caesars",
                "Fanatics",
                "PENN",
                "Kalshi",
                "Polymarket",
                "Underdog"
              ]
            },
            "default": []
          },
          "startTimeFrom": {
            "title": "Event date from",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Optional first event date in UTC. Leave empty to start at the beginning of today."
          },
          "startTimeTo": {
            "title": "Event date to",
            "pattern": "^(\\d{4})-(0[1-9]|1[0-2])-(0[1-9]|[12]\\d|3[01])$",
            "type": "string",
            "description": "Optional last event date in UTC. Leave empty to include the next 30 days."
          },
          "maxEvents": {
            "title": "Maximum events",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum events per competition. Zero includes all events.",
            "default": 0
          },
          "outputMode": {
            "title": "Output mode",
            "enum": [
              "SNAPSHOT",
              "DELTA"
            ],
            "type": "string",
            "description": "SNAPSHOT writes the complete current odds set. DELTA writes only added, updated, or removed quotes and keeps the full current snapshot in the output key-value store.",
            "default": "SNAPSHOT"
          },
          "enableCache": {
            "title": "Enable cache",
            "type": "boolean",
            "description": "Cache competition metadata and optional short-lived snapshots in a named Apify key-value store.",
            "default": true
          },
          "cacheStoreName": {
            "title": "Cache store name",
            "minLength": 1,
            "type": "string",
            "description": "Persistent named key-value store used between runs. Keep this stable for scheduled collection.",
            "default": "sports-odds-scraper-cache"
          },
          "competitionCacheTtlHours": {
            "title": "Competition cache TTL",
            "minimum": 1,
            "maximum": 168,
            "type": "integer",
            "description": "How long the competition catalog remains valid, in hours.",
            "default": 24
          },
          "responseCacheTtlMinutes": {
            "title": "Response cache TTL",
            "minimum": 0,
            "maximum": 60,
            "type": "integer",
            "description": "Cache complete odds responses for this many minutes. Keep at zero when every scheduled run must fetch fresh odds.",
            "default": 0
          },
          "resolveCompetitionNames": {
            "title": "Resolve competition names",
            "type": "boolean",
            "description": "Refresh the provider competition catalog so full names and slugs can also be entered. Costs one extra request on a cold catalog cache.",
            "default": false
          },
          "maxCompetitionsPerRun": {
            "title": "Maximum competitions per run",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Safety cap on upstream competition requests.",
            "default": 5
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}