{
  "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": "cbjU7C3Qs4CUEYO8s"
  },
  "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."
          },
          "season": {
            "title": "Season",
            "minimum": 2015,
            "maximum": 2030,
            "type": "integer",
            "description": "Season year, for example 2026. Scores reach back to 2015; odds and betting splits begin around 2024."
          },
          "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."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}