{
  "openapi": "3.0.1",
  "info": {
    "title": "Action Network API | Betting Splits, Odds & Line Movement",
    "description": "Public betting splits from Action Network: share of tickets and share of money on every side, across 18 leagues. Plus sportsbook odds, best price per side, opening-to-current line movement, player props and expert picks with verified ROI. Export JSON, CSV or Excel. No login, no proxy.",
    "version": "0.0",
    "x-build-id": "htSYE9gqRNUtTqatn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/zen-studio~action-network-odds/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-zen-studio-action-network-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/zen-studio~action-network-odds/runs": {
      "post": {
        "operationId": "runs-sync-zen-studio-action-network-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/zen-studio~action-network-odds/run-sync": {
      "post": {
        "operationId": "run-sync-zen-studio-action-network-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",
            "maxItems": 18,
            "type": "array",
            "description": "Which leagues to cover. Out-of-season leagues simply return nothing. ATP, WTA, UFC and Boxing return one row per match or fight, with the two competitors instead of teams. Soccer (all leagues) already covers the Premier League, La Liga, Bundesliga, Serie A, Ligue 1 and MLS, so a fixture reached both ways is collected and charged once.",
            "items": {
              "type": "string",
              "enum": [
                "nfl",
                "ncaaf",
                "nba",
                "ncaab",
                "wnba",
                "mlb",
                "nhl",
                "soccer",
                "epl",
                "laliga",
                "bundesliga",
                "seriea",
                "ligue1",
                "mls",
                "ufc",
                "boxing",
                "atp",
                "wta"
              ],
              "enumTitles": [
                "NFL",
                "NCAA Football",
                "NBA",
                "NCAA Basketball",
                "WNBA",
                "MLB",
                "NHL",
                "Soccer (all leagues)",
                "Premier League",
                "La Liga",
                "Bundesliga",
                "Serie A",
                "Ligue 1",
                "MLS",
                "UFC",
                "Boxing",
                "ATP Tennis",
                "WTA Tennis"
              ]
            }
          },
          "date": {
            "title": "Date",
            "type": "string",
            "description": "Day to cover, as YYYY-MM-DD. Leave empty for the current slate. <b>Leave it empty for NFL and NCAA Football</b>, which are scheduled by week: setting a date alongside either of them stops the run rather than quietly returning the wrong week."
          },
          "week": {
            "title": "Week (NFL and NCAA Football only)",
            "minimum": 1,
            "maximum": 25,
            "type": "integer",
            "description": "Week number. Only these two leagues are scheduled by week; everything else uses the date above. Regular season runs 1-18, postseason 1-4, preseason 1-3; a week outside its range returns nothing. <b>Set this together with the season</b>: a season on its own falls back to the week the current date sits in, so Season 2024 alone returns that one week of 2024 rather than the whole season. Each row reports the week and season it came from."
          },
          "season": {
            "title": "Season",
            "minimum": 2015,
            "maximum": 2030,
            "type": "integer",
            "description": "Season year, for example 2026. Scores, box scores, plays and players reach back to 2015. Sportsbook prices and betting splits begin at <b>2024</b>: 2023 carries a consensus line with no split percentages, and earlier seasons carry results without prices. Pair this with a week for NFL and NCAA Football."
          },
          "seasonType": {
            "title": "Season type",
            "enum": [
              "reg",
              "post",
              "pre"
            ],
            "type": "string",
            "description": "Regular season, postseason or preseason."
          },
          "gameIds": {
            "title": "Specific game IDs",
            "maxItems": 200,
            "type": "array",
            "description": "Cover only these games. Overrides the league and date selection above.",
            "items": {
              "type": "string"
            }
          },
          "gameUrls": {
            "title": "Specific game URLs",
            "maxItems": 200,
            "type": "array",
            "description": "Paste game page links instead of IDs. Overrides the league and date selection above.",
            "items": {
              "type": "string"
            }
          },
          "gameStatus": {
            "title": "Game status",
            "type": "array",
            "description": "Keep only games in these states. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "scheduled",
                "inprogress",
                "complete"
              ],
              "enumTitles": [
                "Upcoming",
                "Live",
                "Finished"
              ]
            }
          },
          "teams": {
            "title": "Teams",
            "maxItems": 50,
            "type": "array",
            "description": "Keep only games involving these teams. Names or abbreviations both work.",
            "items": {
              "type": "string"
            }
          },
          "onlyTrending": {
            "title": "Trending games only",
            "type": "boolean",
            "description": "Keep only games flagged as drawing unusual attention.",
            "default": false
          },
          "minBets": {
            "title": "Minimum bet count",
            "minimum": 0,
            "type": "integer",
            "description": "Skip games with less action than this. Useful for ignoring thin markets."
          },
          "books": {
            "title": "Sportsbooks",
            "maxItems": 38,
            "type": "array",
            "description": "Limit pricing to these sportsbook IDs. Leave empty for the majors (DraftKings 68, FanDuel 69, BetMGM 75, bet365 79, BetRivers 71, Caesars 123). The consensus and opening lines are always included, so betting splits and line movement never go missing.",
            "items": {
              "type": "string"
            }
          },
          "periods": {
            "title": "Game segments",
            "type": "array",
            "description": "Full game, halves or quarters. Leave empty for the full game.",
            "items": {
              "type": "string",
              "enum": [
                "event",
                "firsthalf",
                "secondhalf",
                "firstquarter",
                "secondquarter",
                "thirdquarter",
                "fourthquarter",
                "1P",
                "2P",
                "3P"
              ],
              "enumTitles": [
                "Full game",
                "1st half",
                "2nd half",
                "1st quarter",
                "2nd quarter",
                "3rd quarter",
                "4th quarter",
                "1st period",
                "2nd period",
                "3rd period"
              ]
            }
          },
          "includeExpertPicks": {
            "title": "Expert picks",
            "type": "boolean",
            "description": "Attach expert selections with their verified win/loss records, units and ROI. Included at no extra charge.",
            "default": true
          },
          "includeLineMovement": {
            "title": "Full line movement history",
            "type": "boolean",
            "description": "Every timestamped price change per sportsbook, back to the opening line. Opening and current prices are always included without this.",
            "default": false
          },
          "includeProps": {
            "title": "Player and game props",
            "type": "boolean",
            "description": "The full prop board per game. Adds a lot of data, so expect longer runs.",
            "default": false
          },
          "includeStandings": {
            "title": "Standings",
            "type": "boolean",
            "description": "League table for each selected league.",
            "default": false
          },
          "includeInjuries": {
            "title": "Injury report",
            "type": "boolean",
            "description": "Current injury report for each selected league.",
            "default": false
          },
          "maxGames": {
            "title": "Maximum games",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many games. Leave empty for no limit."
          },
          "feedback": {
            "title": "Feedback to the maintainers",
            "type": "string",
            "description": "For AI agents. Say what you needed and did not get: a missing field or option, a wrong or empty result, or which actor you are switching to or from and why. Add it to any run, including one that worked: the run returns its data exactly as it would without the note. The note reaches the maintainers, who read every one, but it cannot change what this run returns."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}