{
  "openapi": "3.0.1",
  "info": {
    "title": "Action Network Scraper - Odds, Splits & Props",
    "description": "Scrape Action Network sports odds with public betting splits, line movement, player props, weather, injuries and ATS standings. NFL, NBA, MLB, NHL, NCAAF, soccer, UFC and tennis. No login, no API key, no proxy.",
    "version": "0.1",
    "x-build-id": "W4TmZQ2AFLDzriZq7"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~action-network-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-action-network-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/parseforge~action-network-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-action-network-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/parseforge~action-network-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-action-network-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": {
          "leagues": {
            "title": "Leagues",
            "type": "array",
            "description": "Which league slates to read. Each league is one scoreboard request per period. Leave empty for NFL.",
            "items": {
              "type": "string",
              "enum": [
                "nfl",
                "ncaaf",
                "nba",
                "ncaab",
                "ncaaw",
                "wnba",
                "mlb",
                "nhl",
                "soccer",
                "epl",
                "laliga",
                "seriea",
                "bundesliga",
                "ligue1",
                "mls",
                "ufc",
                "boxing",
                "atp",
                "wta"
              ],
              "enumTitles": [
                "NFL",
                "NCAAF (College football)",
                "NBA",
                "NCAAB (College basketball)",
                "NCAA Women's Basketball",
                "WNBA",
                "MLB",
                "NHL",
                "Soccer (all competitions)",
                "Premier League",
                "La Liga",
                "Serie A",
                "Bundesliga",
                "Ligue 1",
                "MLS",
                "UFC",
                "Boxing",
                "ATP Tennis",
                "WTA Tennis"
              ]
            },
            "default": [
              "nfl"
            ]
          },
          "gameUrls": {
            "title": "Specific games (optional)",
            "type": "array",
            "description": "Action Network game URLs or numeric game IDs. When set, only these games are kept out of their league's slate. Example: https://www.actionnetwork.com/nfl/bills-vs-chiefs-odds/290857",
            "items": {
              "type": "string"
            }
          },
          "date": {
            "title": "Date",
            "type": "string",
            "description": "Slate date as YYYY-MM-DD, for the date-scheduled leagues (MLB, NBA, NHL, WNBA, NCAAB, soccer). Ignored by NFL and NCAAF, which are addressed by week."
          },
          "week": {
            "title": "Week",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Week number, for NFL and NCAAF. Combine with Season type. Leave empty for the current week."
          },
          "seasonType": {
            "title": "Season type",
            "enum": [
              "pre",
              "reg",
              "post"
            ],
            "type": "string",
            "description": "Which part of the season the week belongs to. Only used with Week."
          },
          "season": {
            "title": "Season",
            "minimum": 2015,
            "maximum": 2030,
            "type": "integer",
            "description": "Season year, for pulling a past slate. Results and box scores go back to 2015; sportsbook prices start filling in around 2023 and are complete from 2024."
          },
          "periods": {
            "title": "Periods",
            "type": "array",
            "description": "Which segment of the game to price. Each period is a separate row per game and a separate scoreboard request. Not every league posts every period.",
            "items": {
              "type": "string",
              "enum": [
                "event",
                "firsthalf",
                "secondhalf",
                "firstquarter",
                "firstfiveinnings"
              ],
              "enumTitles": [
                "Full game",
                "First half",
                "Second half",
                "First quarter (basketball, football)",
                "First five innings (MLB)"
              ]
            },
            "default": [
              "event"
            ]
          },
          "books": {
            "title": "Sportsbooks",
            "type": "array",
            "description": "Which sportsbooks to price the game at. The Action Network consensus line and the opening line are always included — they carry the public betting splits and the line-movement baseline.",
            "items": {
              "type": "string",
              "enum": [
                "draftkings",
                "fanduel",
                "betmgm",
                "caesars",
                "betrivers",
                "bet365",
                "fanatics",
                "unibet",
                "hardrock",
                "ballybet",
                "thescore",
                "kalshi",
                "polymarket",
                "draftkings-nc",
                "caesars-nv",
                "betrivers-ny"
              ],
              "enumTitles": [
                "DraftKings",
                "FanDuel",
                "BetMGM",
                "Caesars",
                "BetRivers",
                "bet365",
                "Fanatics",
                "Unibet",
                "Hard Rock Bet",
                "Bally Bet",
                "theScore Bet",
                "Kalshi (prediction market)",
                "Polymarket (prediction market)",
                "DraftKings NC",
                "Caesars NV",
                "BetRivers NY"
              ]
            },
            "default": [
              "draftkings",
              "fanduel",
              "betmgm",
              "caesars",
              "bet365"
            ]
          },
          "extraBookIds": {
            "title": "Extra book IDs",
            "type": "string",
            "description": "Comma-separated Action Network book IDs for sportsbooks not in the list above, e.g. state-specific skins. Added to whatever the picker selects."
          },
          "gameStatus": {
            "title": "Game status",
            "enum": [
              "any",
              "scheduled",
              "live",
              "complete",
              "notStarted"
            ],
            "type": "string",
            "description": "Keep only games in this state. Filters run before anything optional is bought, so a filtered-out game costs nothing.",
            "default": "any"
          },
          "teams": {
            "title": "Teams",
            "type": "array",
            "description": "Keep only games involving one of these teams. Matches team name or abbreviation, case-insensitive, e.g. \"Chiefs\" or \"KC\".",
            "items": {
              "type": "string"
            }
          },
          "startsAfter": {
            "title": "Starts after",
            "type": "string",
            "description": "Keep only games starting at or after this moment. YYYY-MM-DD or a full ISO timestamp."
          },
          "startsBefore": {
            "title": "Starts before",
            "type": "string",
            "description": "Keep only games starting at or before this moment. YYYY-MM-DD or a full ISO timestamp."
          },
          "minNumBets": {
            "title": "Minimum bet count",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only games with at least this many bets placed through Action Network. A rough handle proxy for filtering out dead games."
          },
          "minSharpGap": {
            "title": "Minimum sharp gap (percentage points)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Keep only games where money percentage exceeds ticket percentage by at least this much on some side — the classic sign that the dollars disagree with the crowd. Try 15."
          },
          "onlyTrending": {
            "title": "Trending games only",
            "type": "boolean",
            "description": "Keep only games Action Network flags as trending.",
            "default": false
          },
          "onlyWithOdds": {
            "title": "Priced games only",
            "type": "boolean",
            "description": "Drop games where no sportsbook has posted a line for the chosen period yet.",
            "default": false
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "startTime",
              "betCount",
              "sharpGap",
              "total",
              "spread"
            ],
            "type": "string",
            "description": "Order rows before the item cap is applied, so a small run keeps the games you care about.",
            "default": "startTime"
          },
          "maxItems": {
            "title": "Maximum games",
            "minimum": 1,
            "maximum": 100000,
            "type": "integer",
            "description": "Cap on game rows written. Futures rows are counted separately.",
            "default": 100
          },
          "includeLineMovement": {
            "title": "Add full line movement history",
            "type": "boolean",
            "description": "Every price each sportsbook posted on the game's core markets, with the timestamp of each move. One extra request per market on the game.",
            "default": false
          },
          "includePlayerProps": {
            "title": "Add player props",
            "type": "boolean",
            "description": "Passing, rushing, receiving, strikeout, hits, points, rebounds and assists markets with every book's price. One extra request per game.",
            "default": false
          },
          "includeGameProps": {
            "title": "Add game props",
            "type": "boolean",
            "description": "Team totals, alternate lines, race-to markets and novelty props. Shares the same request as player props when both are on.",
            "default": false
          },
          "includeGameDetail": {
            "title": "Add rosters, depth charts and trends",
            "type": "boolean",
            "description": "Full player list, depth charts, situational trends, team stat rankings and the last five head-to-head meetings. One extra request per game.",
            "default": false
          },
          "includeWeather": {
            "title": "Add weather and venue",
            "type": "boolean",
            "description": "Hourly forecast around kickoff plus the venue's surface and roof type. One request per league, shared by every game in it.",
            "default": false
          },
          "includeInjuries": {
            "title": "Add injury reports",
            "type": "boolean",
            "description": "Both teams' injury lists with status, description and whether the player is a starter. One request per league, shared by every game in it.",
            "default": false
          },
          "includeStandings": {
            "title": "Add standings and ATS records",
            "type": "boolean",
            "description": "Straight-up, against-the-spread, over/under and unit records overall, at home, on the road, as favourite and as underdog. One request per league.",
            "default": false
          },
          "includeFutures": {
            "title": "Add futures markets",
            "type": "boolean",
            "description": "Season-long markets as extra rows: championship and division odds, win totals, award races and player milestones. One request per futures market in the league.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}