{
  "openapi": "3.0.1",
  "info": {
    "title": "Sleeper Player Props Scraper - Lines, Odds & Line Moves",
    "description": "For betting-model builders: every line on Sleeper's Picks board as one row - player name, team, stat, line value and the over and under payout multipliers. 2,855 lines across 9 sports in one request on 2026-09-22. Monitoring returns only the lines that moved, with the previous value.",
    "version": "0.1",
    "x-build-id": "FiQgJ1eVrcJz14Jye"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/neverempty~sleeper-player-props-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-neverempty-sleeper-player-props-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/neverempty~sleeper-player-props-scraper/runs": {
      "post": {
        "operationId": "runs-sync-neverempty-sleeper-player-props-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/neverempty~sleeper-player-props-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-neverempty-sleeper-player-props-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": {
          "sports": {
            "title": "Sports",
            "type": "array",
            "description": "Keep only lines for these sports, one per line. Sleeper's own values are used, so write them exactly as Sleeper does: nfl, cfb, mlb, wnba, cs, tennis, mma, golf, clubsoccer:mls (those nine were on the board on 2026-09-22; which ones appear depends on the season). The short league name works too (MLS for clubsoccer:mls). Leave empty for every sport on the board. Sleeper's own sport parameter is ignored by its server, so this Actor filters in its own process after reading the board.",
            "items": {
              "type": "string"
            }
          },
          "players": {
            "title": "Players",
            "type": "array",
            "description": "Keep only lines for these players, one per line. A part of a name is enough and case does not matter, for example 'mahomes'. A Sleeper player id (digits only, for example 1111) also works and is faster, because ids are matched without looking any name up. Leave empty for every player.",
            "items": {
              "type": "string"
            }
          },
          "statTypes": {
            "title": "Stat types",
            "type": "array",
            "description": "Keep only these stats, one per line. Sleeper's own values are used and spaces work like underscores, so 'receiving yards' and 'receiving_yards' both match. 49 stat types were on the board on 2026-09-22, the most common being anytime_touchdowns, total_bases, hits_runs_rbis, singles, runs, hits, rbis, bat_walks, receiving_yards, points, rushing_yards, rebounds, receptions, pts_reb_ast, threes_made, assists, passing_yards, strike_outs. Leave empty for every stat.",
            "items": {
              "type": "string"
            }
          },
          "teams": {
            "title": "Teams",
            "type": "array",
            "description": "Keep only lines whose player is on one of these teams, one per line, written the way Sleeper writes them on the line: KC, GB, ATL, CWS, LAD. 138 team codes were on the board on 2026-09-22. Individual sports (tennis, golf, MMA) carry no team, so those lines are removed when you set this.",
            "items": {
              "type": "string"
            }
          },
          "gameIds": {
            "title": "Game ids",
            "type": "array",
            "description": "Keep only lines of these Sleeper game ids, one per line (the gameId column of an earlier run). 113 games were on the board on 2026-09-22. Sleeper does not publish the two teams of a game in this feed, so the game id is the way to group lines of one match.",
            "items": {
              "type": "string"
            }
          },
          "gameStatuses": {
            "title": "Game statuses",
            "type": "array",
            "description": "Keep only lines whose game is in one of these states, one per line. Every one of the 2,855 lines read on 2026-09-22 was pre_game, because Sleeper's available-lines feed drops a market once the game is under way. Leave empty for every state.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Keep only lines whose player name, team, position, stat, market type, league or sport contains these words (case-insensitive). Using this looks the player names up before filtering, which costs one small request per player in the run.",
            "items": {
              "type": "string"
            }
          },
          "keywordMatch": {
            "title": "Keyword match",
            "enum": [
              "any",
              "all"
            ],
            "type": "string",
            "description": "any = a line is kept when it contains at least one keyword. all = it must contain every keyword.",
            "default": "any"
          },
          "excludeKeywords": {
            "title": "Exclude keywords",
            "type": "array",
            "description": "Drop lines that contain any of these words in the same fields as Keywords.",
            "items": {
              "type": "string"
            }
          },
          "minPayoutMultiplier": {
            "title": "Minimum payout multiplier",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Keep only lines where the over or the under pays at least this multiple of the stake. Sleeper publishes the multiplier as a decimal (on 2026-09-22 the 5,710 over and under sides ranged from 1.15 to 3.53, and 1.78 was the most common), so 2 keeps only the lines that pay at least double on one side. 0 = do not filter. Lines with no multiplier are removed when you set this."
          },
          "maxPayoutMultiplier": {
            "title": "Maximum payout multiplier",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Keep only lines where the over or the under pays at most this multiple of the stake. 0 = do not filter."
          },
          "maxLines": {
            "title": "Maximum line rows",
            "minimum": 1,
            "maximum": 50000,
            "type": "integer",
            "description": "With monitoring off, the run stops once this many line rows have been returned, and a free row says how many more matched. Free rows do not count. In monitoring mode this is ignored, because cutting the changed lines would mean the ones left out never reach you.",
            "default": 1000
          },
          "includePlayerDetails": {
            "title": "Look the player names up",
            "type": "boolean",
            "description": "On = the Actor reads Sleeper's player record for each player it returns and fills playerName, playerFirstName, playerLastName, playerTeamFull and playerStatus. Sleeper's line feed carries only a player id, a team code and a position, so without this the rows have no names. One small request per player (about 1 KB, measured 0.17-0.62 s), at most five at a time. The whole board held 837 players on 2026-09-22, in 863 sport-and-id pairs. Off = faster and no extra requests, and playerDetailsFound stays empty.",
            "default": true
          },
          "includeRecentPerformance": {
            "title": "Include the recent games Sleeper shows",
            "type": "boolean",
            "description": "On = each row carries recentPerformance (the last games Sleeper shows next to the line, with date, opponent and the value of that stat), recentGamesCount and recentAverage. Every one of the 2,855 lines read on 2026-09-22 carried this block. Off = smaller rows.",
            "default": true
          },
          "playerLookupCap": {
            "title": "Maximum player lookups per run",
            "minimum": 1,
            "maximum": 20000,
            "type": "integer",
            "description": "How many player records the run may read at most. Rows beyond it keep Sleeper's player id, team and position and have playerName empty, and a free row says so. The whole board held 837 players on 2026-09-22, in 863 sport-and-id pairs.",
            "default": 1500
          },
          "monitoringMode": {
            "title": "Monitoring mode: return only lines that moved since the last run",
            "type": "boolean",
            "description": "Off = every line that matches your filters comes back, charged per row. On = the Actor remembers the line value, the over and under payout multipliers, the line status and the game status of every line it read for these filters, and later runs return only lines that moved, whose status changed, or that are new, each with its earlier values in the same row. The first run returns every matching line once as a baseline (the whole board was 2,855 lines on 2026-09-22). Pick popularity and pick counts are deliberately not watched: reading the same board twice 120 seconds apart changed the popularity of 1,060 lines and the pick count of 143, against 18 payout moves and 1 line-value move, so watching them would return almost the whole board every time. Do not put the same filters in two schedules that can run at the same time (Apify's key-value store has no atomic update, so this cannot be fully prevented).",
            "default": false
          },
          "onlyLineValueMoves": {
            "title": "Only line value moves",
            "type": "boolean",
            "description": "Monitoring mode: return a line only when its line value moved (for example 16.5 to 17.5), and ignore moves in the payout multipliers alone. New lines are always returned.",
            "default": false
          },
          "minLineValueMove": {
            "title": "Minimum line value move",
            "minimum": 0,
            "maximum": 1000,
            "type": "number",
            "description": "Monitoring mode: return a line only when its line value moved by at least this much. Sleeper publishes every line value on a half point (all 5,710 sides read on 2026-09-22 ended in .5), so 1 means a full point and 0.5 the smallest move there is. 0 = any move. Small moves add up: two moves of 0.5 count as 1. New lines are always returned."
          },
          "resetMonitoringState": {
            "title": "Forget what was remembered and start over",
            "type": "boolean",
            "description": "Clears everything this Actor remembered for monitoring, so the next monitoring run returns every line again as a first check. This affects all your monitoring runs of this Actor. Turn it off again after one run: left on in a schedule, every run returns every line again and charges for it.",
            "default": false
          },
          "requestTimeoutSecs": {
            "title": "Request timeout (seconds)",
            "minimum": 10,
            "maximum": 600,
            "type": "integer",
            "description": "How long one request to Sleeper may take before it is retried. Sleeper's available-lines feed is 5.28 MB of JSON and its speed swings: 14.2 s and 14.6 s through an Apify datacenter proxy on 2026-09-22, but under 2 s straight from an Apify container on 2026-09-23. Raise this if you see timeouts in the log.",
            "default": 90
          },
          "maxRetries": {
            "title": "Attempts per request",
            "minimum": 1,
            "maximum": 10,
            "type": "integer",
            "description": "How many times one request is attempted before the run gives up on it, waiting 1.5 s, 3 s and 4.5 s in between. Timeouts, refusals and 5xx answers are retried; a run that could never read the feed is not charged at all.",
            "default": 4
          },
          "useProxy": {
            "title": "Use an Apify proxy",
            "type": "boolean",
            "description": "Off = the run talks to Sleeper directly, which was enough in every measurement (200 on every attempt). On = an Apify datacenter address is used and a new session is taken on each retry. Turn it on only if you see refusals in the log; proxy traffic is billed by Apify on top of this Actor.",
            "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
                  },
                  "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}