{
  "openapi": "3.0.1",
  "info": {
    "title": "Action Network Scraper - Public Betting Splits Monitor",
    "description": "Action Network public betting splits: tickets % and money % for moneyline, spread and total, one row per game with the consensus line, the opening line and each sportsbook's line. NFL, NCAAF, MLB, NHL, NBA, WNBA, NCAAB. Monitoring returns only games whose splits or lines moved.",
    "version": "0.1",
    "x-build-id": "u0KuOCofUbHkB1b3d"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~action-network-betting-splits/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-action-network-betting-splits",
        "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/neverempty~action-network-betting-splits/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-action-network-betting-splits",
        "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/neverempty~action-network-betting-splits/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-action-network-betting-splits",
        "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 Action Network public betting pages to read (one page per league, read in this order). Each page lists that league's current slate - today's or this week's games, as Action Network shows them. If you leave this empty and monitoring is off, the NFL page is read and every row says so in the league column; monitoring needs at least one league.",
            "items": {
              "type": "string",
              "enum": [
                "nfl",
                "ncaaf",
                "mlb",
                "nhl",
                "nba",
                "wnba",
                "ncaab"
              ],
              "enumTitles": [
                "NFL",
                "College Football (NCAAF)",
                "MLB",
                "NHL",
                "NBA",
                "WNBA",
                "College Basketball (NCAAB)"
              ]
            }
          },
          "teams": {
            "title": "Only games with these teams",
            "type": "array",
            "description": "Keep a game only if one of its teams matches: an exact abbreviation as Action Network writes it (GB, CHI, NYY), or a word of 4 letters or more inside the full team name (Packers, Yankees). Case-insensitive. Leave empty for every game.",
            "items": {
              "type": "string"
            }
          },
          "onlyNotStarted": {
            "title": "Only games that have not started",
            "type": "boolean",
            "description": "Keep only games whose status on the page is 'scheduled'. The pages also list games in progress and games that ended earlier in the week, with their final percentages.",
            "default": false
          },
          "startsWithinHours": {
            "title": "Only games starting within (hours)",
            "minimum": 0,
            "maximum": 8760,
            "type": "integer",
            "description": "Keep only games that start within this many hours from now (games that already started are kept). 0 = no limit.",
            "default": 0
          },
          "includeGamesWithoutSplits": {
            "title": "Include games without percentages",
            "type": "boolean",
            "description": "Some games carry lines but no betting percentages yet (for example pre-season games or games added shortly before the page was read). Off = those games are not returned or charged; a free row says how many there were. On = they are returned with the percentage columns empty.",
            "default": false
          },
          "minMoneyVsTicketsGap": {
            "title": "Only games where money and tickets differ by at least (points)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Keep a game only if, for the moneyline, the spread or the total, the share of money differs from the share of tickets by at least this many percentage points on some side (large gaps mean fewer but bigger bets on that side). 0 = no limit.",
            "default": 0
          },
          "maxGames": {
            "title": "Maximum games to return",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "How many game rows this run may return. When more games match, a free row says how many were left; in monitoring mode those games are not remembered, so the next run offers them again.",
            "default": 500
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only games that changed",
            "type": "boolean",
            "description": "Off = return every game on the page now. On = remember what was returned for this input and, on later runs, return a game again only when one of its 12 percentages, its consensus spread or total, its consensus odds or its status changed - with the previous values and the size of the biggest percentage move in the same row. The number of bets alone changes on every read and is not treated as a change. A copy of the page older than the one compared last time is not treated as a change either.",
            "default": false
          },
          "resetMonitoringState": {
            "title": "Forget what was already returned",
            "type": "boolean",
            "description": "Clear the memory for this exact input before the run, so every game counts as new again.",
            "default": false
          },
          "minSplitMove": {
            "title": "Minimum percentage move (points)",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "Monitoring mode only. Return a changed game only if one of its ticket or money percentages moved at least this many points since it was last returned (games seen for the first time and games whose consensus spread or total moved are always returned). Smaller moves are not remembered, so they keep adding up until they pass the minimum. 0 = any change counts.",
            "default": 0
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}