{
  "openapi": "3.0.1",
  "info": {
    "title": "Action Network Odds, Betting Splits & Line Movement Scraper",
    "description": "Sports betting odds from every major US sportsbook, public money/ticket percentages, line movement, props, injuries, ATS standings, futures and weather from Action Network - NFL, NBA, MLB, NHL, college, 8 soccer leagues, UFC and tennis.",
    "version": "0.2",
    "x-build-id": "cbhw8EINuEYh93B6h"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/artsiom_k~actionnetwork-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-artsiom_k-actionnetwork-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/artsiom_k~actionnetwork-scraper/runs": {
      "post": {
        "operationId": "runs-sync-artsiom_k-actionnetwork-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/artsiom_k~actionnetwork-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-artsiom_k-actionnetwork-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": {
          "entityType": {
            "title": "Data type",
            "enum": [
              "games",
              "lineHistory",
              "props",
              "injuries",
              "standings",
              "futures"
            ],
            "type": "string",
            "description": "\"games\": one row per game (or UFC bout / tennis match) with every sportsbook's moneyline/spread/total, public money & ticket percentages, scores and status; NFL/NCAAF games this week also carry the weather forecast. \"lineHistory\": one row per game/sportsbook/market with the full timestamped odds and line movement of every outcome (the site keeps this for only a few days after a game, so schedule it). \"props\": one row per player or game prop market with every sportsbook's lines. \"injuries\", \"standings\" and \"futures\" are the current snapshot per league (dates and season are ignored). Line history, props, injuries, standings and futures are not available for UFC or tennis.",
            "default": "games"
          },
          "leagues": {
            "title": "Leagues",
            "type": "array",
            "description": "Which leagues to pull. Leave all selected for every league. Leagues that are out of season simply return nothing. UFC and tennis have odds and results only: no public betting splits, and their odds disappear from the site within days of the event.",
            "items": {
              "type": "string",
              "enum": [
                "nfl",
                "ncaaf",
                "nba",
                "ncaab",
                "wnba",
                "mlb",
                "nhl",
                "epl",
                "laliga",
                "bundesliga",
                "seriea",
                "ligue1",
                "champions",
                "europa",
                "mls",
                "ufc",
                "atp",
                "wta",
                "soccer"
              ],
              "enumTitles": [
                "NFL",
                "NCAA Football",
                "NBA",
                "NCAA Basketball",
                "WNBA",
                "MLB",
                "NHL",
                "Soccer: English Premier League",
                "Soccer: La Liga",
                "Soccer: Bundesliga",
                "Soccer: Serie A",
                "Soccer: Ligue 1",
                "Soccer: Champions League",
                "Soccer: Europa League",
                "Soccer: MLS",
                "UFC / MMA",
                "Tennis: ATP",
                "Tennis: WTA",
                "Soccer: all 8 leagues above"
              ]
            },
            "default": [
              "nfl",
              "ncaaf",
              "nba",
              "ncaab",
              "wnba",
              "mlb",
              "nhl",
              "epl",
              "laliga",
              "bundesliga",
              "seriea",
              "ligue1",
              "champions",
              "europa",
              "mls",
              "ufc",
              "atp",
              "wta"
            ]
          },
          "teams": {
            "title": "Teams or players",
            "type": "array",
            "description": "Only games involving these teams, e.g. \"Lakers\", \"Kansas City Chiefs\", \"NYY\", or UFC fighters / tennis players (\"Djokovic\"). Matches whole words of the name or the abbreviation, any case. Also filters injuries, standings and futures. Line history and props are only fetched for the matching games, so a team filter makes those runs much faster. Empty = every game.",
            "items": {
              "type": "string"
            }
          },
          "dateFrom": {
            "title": "Date from (YYYY-MM-DD or today)",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2}|today|tomorrow|yesterday)$",
            "type": "string",
            "description": "First game day for the daily leagues (NBA, NCAAB, WNBA, MLB, NHL, soccer, UFC, tennis), in US Eastern time: a date like 2026-01-15, or \"today\", \"tomorrow\" or \"yesterday\". Empty dateFrom/dateTo = each league's current slate (in the US morning that can still be last night's games; use \"today\" for today's). NFL and NCAA Football ignore dates: use season/week. Odds and betting splits go back roughly two seasons for team sports; line history only a few days; UFC/tennis odds only a few days (results much longer)."
          },
          "dateTo": {
            "title": "Date to (YYYY-MM-DD or today)",
            "pattern": "^(\\d{4}-\\d{2}-\\d{2}|today|tomorrow|yesterday)$",
            "type": "string",
            "description": "Last game day (inclusive), same format as dateFrom (e.g. \"tomorrow\" for today and tomorrow). Defaults to dateFrom when only dateFrom is set. At most 400 days per run."
          },
          "season": {
            "title": "Season (NFL / NCAA Football)",
            "minimum": 2013,
            "type": "integer",
            "description": "Season year for NFL and NCAA Football, e.g. 2025. Setting it walks the weeks below; leave empty for the current week's slate."
          },
          "weekFrom": {
            "title": "First week",
            "minimum": 1,
            "type": "integer",
            "description": "First week to pull when season is set. With only weekFrom, just that week. Defaults to week 1."
          },
          "weekTo": {
            "title": "Last week",
            "minimum": 1,
            "type": "integer",
            "description": "Last week to pull when season is set. Defaults to the end of the regular season (18 for NFL, 16 for NCAA Football) or of the postseason."
          },
          "seasonType": {
            "title": "Season type",
            "enum": [
              "reg",
              "post"
            ],
            "type": "string",
            "description": "Regular season or postseason (playoffs / bowl games) for NFL and NCAA Football.",
            "default": "reg"
          },
          "books": {
            "title": "Sportsbooks",
            "type": "array",
            "description": "Only these sportsbooks. Empty = the site's default set (Consensus, Open and about five major US books); for futures, every book that offers futures. Books outside the default set (bet365, Fanatics, Caesars, Hard Rock, Kalshi, ...) appear only when chosen here. Consensus (the public betting splits) and Open (opening line) are always included. Through the API, names are matched case-insensitively (\"draftkings\", \"DK\").",
            "items": {
              "type": "string",
              "enum": [
                "Consensus",
                "Open",
                "DraftKings",
                "FanDuel",
                "BetMGM",
                "Caesars",
                "Fanatics",
                "bet365",
                "BetRivers",
                "theScore Bet",
                "Hard Rock Bet",
                "Bally Bet",
                "Unibet",
                "BetVictor",
                "Betfred",
                "Bet99",
                "Kalshi",
                "Polymarket"
              ],
              "enumTitles": [
                "Consensus (public betting splits)",
                "Open (opening line)",
                "DraftKings",
                "FanDuel",
                "BetMGM",
                "Caesars",
                "Fanatics",
                "bet365",
                "BetRivers",
                "theScore Bet",
                "Hard Rock Bet",
                "Bally Bet",
                "Unibet",
                "BetVictor",
                "Betfred",
                "Bet99",
                "Kalshi",
                "Polymarket"
              ]
            }
          },
          "compact": {
            "title": "Compact rows",
            "type": "boolean",
            "description": "Smaller rows, for AI agents and spreadsheets: games get one flat price set per sportsbook (moneyline, spread, total and their odds) instead of the nested markets, alternates and team totals; line history keeps each outcome's opening and current price and number of moves but not the full time series; props keep book, side, line and odds. Same field names as the full rows.",
            "default": false
          },
          "maxItems": {
            "title": "Max results",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after pushing this many rows. Defaults to 50 - a fast, cheap preview, and what keeps an unconfigured run within Apify's automated 5-minute QA check. Set to null for everything in the selected scope. Props rows are numerous (hundreds per game), so cap them.",
            "default": 50
          },
          "mode": {
            "title": "Incremental mode",
            "enum": [
              "auto",
              "full",
              "incremental"
            ],
            "type": "string",
            "description": "Applies to \"games\" only. \"auto\": the first run returns every game; later runs, with maxItems cleared, only new games and games whose status, score or closing lines changed. A capped run (the default preview) always returns games. \"full\": always every game. \"incremental\": only new/changed. Line history, props, injuries, standings and futures are always a fresh pull.",
            "default": "auto"
          },
          "bookIds": {
            "title": "Sportsbook ids (advanced)",
            "type": "array",
            "description": "Older way to pick sportsbooks by Action Network book id (state-specific, e.g. 68 = DraftKings NJ). Prefer \"Sportsbooks\" above; both can be combined.",
            "items": {
              "type": "string",
              "enum": [
                "15",
                "30",
                "68",
                "69",
                "75",
                "71",
                "49",
                "123",
                "79",
                "247",
                "972",
                "1548",
                "283"
              ],
              "enumTitles": [
                "Consensus (public betting splits)",
                "Open (opening lines)",
                "DraftKings NJ",
                "FanDuel NJ",
                "BetMGM NJ",
                "BetRivers NJ",
                "Caesars NV",
                "Caesars NJ",
                "bet365 NJ",
                "Unibet NJ",
                "BetRivers NY",
                "DraftKings NY",
                "BetMGM MI"
              ]
            }
          },
          "concurrency": {
            "title": "Concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Parallel requests (max 20). Line-history and props runs fetch one request per game.",
            "default": 10
          },
          "impersonate": {
            "title": "TLS impersonation target",
            "type": "string",
            "description": "curl_cffi browser TLS-impersonation target. Defaults to \"firefox\" internally; change only if requests start being blocked."
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Apify Proxy settings. Not needed: the API answered every request from Apify's infrastructure in testing without a proxy.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}