{
  "openapi": "3.0.1",
  "info": {
    "title": "Sports Betting Odds & Player Props Scraper",
    "description": "Sportsbook lines for NFL, college football, NBA, MLB, NHL, soccer and UFC: spread, moneyline and total per book, how far each line moved since it opened, ~659 player props per game, season futures with implied probability, and the model win projection to compare against the price. No login.",
    "version": "0.0",
    "x-build-id": "O8EAgdnZ4brYAGhcr"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/fanndev~espn-betting-odds-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-fanndev-espn-betting-odds-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/fanndev~espn-betting-odds-scraper/runs": {
      "post": {
        "operationId": "runs-sync-fanndev-espn-betting-odds-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/fanndev~espn-betting-odds-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-fanndev-espn-betting-odds-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "Mode",
            "enum": [
              "odds",
              "props",
              "futures",
              "events",
              "predictor",
              "providers",
              "reference"
            ],
            "type": "string",
            "description": "odds = point spread, moneyline and total per sportsbook for each fixture, plus how far the line has moved since it opened. props = player prop markets (about 659 per NFL game). futures = season markets such as MVP and championship winner, with implied probability. events = the schedule only, no odds. predictor = ESPN's own win projection, to compare against the book. providers = the sportsbook catalogue for a league. reference = check the source is live and report what it returns today.",
            "default": "odds"
          },
          "league": {
            "title": "League",
            "type": "string",
            "description": "A short key (nfl, college-football, nba, wnba, ncaab, ncaaw, mlb, nhl, epl, laliga, seriea, bundesliga, ligue1, ucl, mls, ufc, pga, atp, wta, f1) or the source's own form 'sport/league' for anything else, e.g. 'soccer/ned.1'. There are 17 sports and 219 soccer competitions.",
            "default": "nfl"
          },
          "dates": {
            "title": "Date window",
            "type": "string",
            "description": "One day (20260920), a whole season (2026) or a range (20260901-20261001). Leave empty and you get the current week only, which is a handful of fixtures."
          },
          "dateFrom": {
            "title": "From date",
            "type": "string",
            "description": "Start of the window, YYYY-MM-DD or YYYYMMDD. Used only when 'Date window' is empty."
          },
          "dateTo": {
            "title": "To date",
            "type": "string",
            "description": "End of the window, YYYY-MM-DD or YYYYMMDD. Used only when 'Date window' is empty."
          },
          "eventId": {
            "title": "Event ID",
            "type": "string",
            "description": "Scrape one fixture by its ESPN event id instead of a date window."
          },
          "eventIds": {
            "title": "Event IDs",
            "type": "array",
            "description": "Several fixtures by id. Overrides the date window.",
            "items": {
              "type": "string"
            }
          },
          "season": {
            "title": "Season (futures mode)",
            "minimum": 2000,
            "type": "integer",
            "description": "Which season's futures board to read. Defaults to the current year."
          },
          "includeUnpricedEvents": {
            "title": "Keep fixtures with no odds yet",
            "type": "boolean",
            "description": "Sportsbooks post lines close to start time, so a fixture weeks out returns an empty provider list. On, you get a row with hasOdds=false so you can tell 'not priced yet' from 'not fetched'. Off, those fixtures are skipped.",
            "default": true
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum records per run. An NFL week is about 16 fixtures and 1-2 sportsbooks each in odds mode, but one game alone yields about 659 rows in props mode.",
            "default": 500
          },
          "maxEvents": {
            "title": "Max fixtures",
            "minimum": 1,
            "type": "integer",
            "description": "How many fixtures the date window may expand to. The source returns pointers, so every fixture costs one extra request - a whole-season window is 320 NFL fixtures and this is what keeps that in hand.",
            "default": 60
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many fixtures to work on in parallel.",
            "default": 4
          },
          "maxNameLookups": {
            "title": "Max name lookups",
            "minimum": 0,
            "type": "integer",
            "description": "The source returns ids and pointers, so athlete and team names cost one extra request each. They are cached (659 NFL props resolve from 47 athletes). Raise this for futures boards, which have far more distinct runners; past the budget records keep their ids and lose only the name.",
            "default": 400
          },
          "tlsProfile": {
            "title": "TLS profile",
            "enum": [
              "",
              "chrome124",
              "firefox133",
              "safari17_0",
              "chrome99_android",
              "edge101"
            ],
            "type": "string",
            "description": "Leave empty. The Actor tries a ladder of browser fingerprints and remembers the one that works, because the winner on a home connection is not always the winner from a datacenter.",
            "default": ""
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional. The source answered plain requests from both a home connection and a datacenter address during testing, so no proxy is needed for ordinary runs. Turn one on if you are running large windows repeatedly.",
            "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}