{
  "openapi": "3.0.1",
  "info": {
    "title": "Pickswise Scraper - Expert Picks, Parlays & Odds",
    "description": "Scrape Pickswise expert betting picks with written analysis and confidence ratings, parlays, game odds boards, news, promo codes, sportsbooks, handicappers and teams. Up to 30 sportsbooks quoted per pick with bet-slip deeplinks, plus computed line-shopping analytics.",
    "version": "0.1",
    "x-build-id": "7kql8XjTBTmWjsgl8"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/parseforge~pickswise-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-parseforge-pickswise-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/parseforge~pickswise-scraper/runs": {
      "post": {
        "operationId": "runs-sync-parseforge-pickswise-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/parseforge~pickswise-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-parseforge-pickswise-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": {
          "datasets": {
            "title": "What to scrape",
            "type": "array",
            "description": "Which Pickswise collections to return. Each one is a separate row type, and every row carries a rowType field so mixed runs stay easy to split. Expert picks are the flagship: each one is a handicapper's bet with a written case, a confidence rating and up to 30 sportsbooks quoting the same selection.",
            "items": {
              "type": "string",
              "enum": [
                "picks",
                "parlays",
                "events",
                "news",
                "promocodes",
                "bookmakers",
                "authors",
                "teams"
              ],
              "enumTitles": [
                "Expert picks — the daily board with reasoning and ratings",
                "Parlays — multi-leg tickets with combined odds per book",
                "Game odds — upcoming games with the full market board",
                "News — articles with author, league and related games",
                "Promo codes — sportsbook and casino sign-up offers",
                "Sportsbooks — the book directory with ratings",
                "Handicappers — author profiles and bios",
                "Teams — the team directory with logos and colours"
              ]
            },
            "default": [
              "picks"
            ]
          },
          "leagues": {
            "title": "Leagues",
            "type": "array",
            "description": "Filter by league. This one is a real server-side filter, so narrowing it here makes the run cheaper and faster rather than just trimming the output. Leave empty for every league.",
            "items": {
              "type": "string",
              "enum": [
                "nfl",
                "nba",
                "mlb",
                "nhl",
                "mls",
                "college-football",
                "college-basketball",
                "world-cup",
                "champions-league",
                "europa-league",
                "epl",
                "atp",
                "ufc",
                "pga-men"
              ],
              "enumTitles": [
                "NFL",
                "NBA",
                "MLB",
                "NHL",
                "MLS",
                "College Football (NCAAF)",
                "College Basketball (NCAAB)",
                "World Cup",
                "UEFA Champions League",
                "UEFA Europa League",
                "English Premier League",
                "ATP Tennis",
                "UFC",
                "PGA Tour"
              ]
            }
          },
          "sports": {
            "title": "Sports",
            "type": "array",
            "description": "Filter by sport. Applied by this Actor: the API accepts a sport parameter and silently ignores it.",
            "items": {
              "type": "string",
              "enum": [
                "football",
                "basketball",
                "baseball",
                "hockey",
                "soccer",
                "tennis",
                "golf",
                "mma",
                "horse-racing"
              ],
              "enumTitles": [
                "American Football",
                "Basketball",
                "Baseball",
                "Ice Hockey",
                "Soccer",
                "Tennis",
                "Golf",
                "MMA",
                "Horse Racing"
              ]
            }
          },
          "upcomingOnly": {
            "title": "Upcoming games only",
            "type": "boolean",
            "description": "For the game-odds collection. Pickswise attaches the odds board only to upcoming events — turn this off and you get the wider event list with no prices on it. Leave it on unless you want a bare fixture list.",
            "default": true
          },
          "marketTypes": {
            "title": "Market types",
            "type": "array",
            "description": "Keep only these kinds of market. Pickswise has no market-type field, so this Actor classifies each market from its title.",
            "items": {
              "type": "string",
              "enum": [
                "moneyline",
                "spread",
                "total",
                "team-total",
                "player-prop",
                "other"
              ],
              "enumTitles": [
                "Moneyline",
                "Spread / point spread",
                "Game total (over-under)",
                "Team total",
                "Player prop",
                "Other"
              ]
            }
          },
          "tags": {
            "title": "Pick tags",
            "type": "array",
            "description": "Keep only picks carrying one of these tags, matched loosely. Pickswise publishes 39, including Best Bet, Value Pick, Money Line Pick, Point Spread Pick, Player Prop Pick, Underdog, Parlay Leg and Future.",
            "items": {
              "type": "string"
            }
          },
          "authors": {
            "title": "Handicappers",
            "type": "array",
            "description": "Keep only picks by these handicappers, by slug or by name, for example connor-grootenhuis. There are 42 in the directory; scrape the handicappers collection to list them.",
            "items": {
              "type": "string"
            }
          },
          "teams": {
            "title": "Teams",
            "type": "array",
            "description": "Keep only rows involving these teams, matched on any part of the name, for example Yankees or Buffalo Bills.",
            "items": {
              "type": "string"
            }
          },
          "bookmakers": {
            "title": "Sportsbooks",
            "type": "array",
            "description": "Restrict the bookmaker price grid to these books, for example DraftKings or FanDuel. Leave empty for every book Pickswise quotes — up to 30 on a single pick.",
            "items": {
              "type": "string"
            }
          },
          "minRating": {
            "title": "Minimum confidence rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Pickswise rates every pick 1 to 5. Set 4 to keep only the strong ones, or 5 for Best Bets alone."
          },
          "maxRating": {
            "title": "Maximum confidence rating",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "Upper bound on the same 1 to 5 scale."
          },
          "minOdds": {
            "title": "Minimum American odds",
            "type": "integer",
            "description": "Lower bound on the price, in American odds. Use -150 to drop anything shorter than -150; use 100 to keep underdogs only."
          },
          "maxOdds": {
            "title": "Maximum American odds",
            "type": "integer",
            "description": "Upper bound on the price, in American odds. Use 200 to drop longshots priced above +200."
          },
          "minBooksQuoting": {
            "title": "Minimum sportsbooks quoting",
            "minimum": 1,
            "type": "integer",
            "description": "Keep only picks where at least this many books priced the selection. This is checked before the bookmaker block is projected away, so you can demand a liquid market without buying the book grid."
          },
          "startsAfter": {
            "title": "Game starts after",
            "type": "string",
            "description": "Keep only rows whose game starts on or after this date. A bare date covers the whole day."
          },
          "startsBefore": {
            "title": "Game starts before",
            "type": "string",
            "description": "Keep only rows whose game starts on or before this date. A bare date covers the whole day."
          },
          "searchQuery": {
            "title": "Search text",
            "type": "string",
            "description": "Keep only rows mentioning this text in the selection, game, write-up, author or article body. Case-insensitive."
          },
          "onlyWithOdds": {
            "title": "Only games that are priced up",
            "type": "boolean",
            "description": "Drop games with an empty odds board. Measured: 105 of 119 upcoming games carried prices.",
            "default": false
          },
          "onlyPinned": {
            "title": "Only pinned picks",
            "type": "boolean",
            "description": "Keep only picks Pickswise has pinned to the top of the board.",
            "default": false
          },
          "onlyEdge": {
            "title": "Only picks worth shopping",
            "type": "boolean",
            "description": "Keep only picks where the best book beats the median book, so line shopping actually gains you something. Turns on the line-shopping block automatically, since that is what measures it. True arbitrage needs both sides of a market and is reported on the game-odds collection instead.",
            "default": false
          },
          "promoStates": {
            "title": "Promo states",
            "type": "array",
            "description": "For the promo-codes collection. Two-letter US state codes, for example NJ or PA — a real server-side filter, measured at 28 of 88 offers for NJ. Leave empty for the national list.",
            "items": {
              "type": "string"
            }
          },
          "promoTypes": {
            "title": "Operator types",
            "type": "array",
            "description": "For the promo-codes and sportsbooks collections. Another real server-side filter: sportsbook returns 47 offers, casino 32.",
            "items": {
              "type": "string",
              "enum": [
                "sportsbook",
                "casino",
                "fantasy",
                "social_sportbook"
              ],
              "enumTitles": [
                "Sportsbook",
                "Online casino",
                "Daily fantasy",
                "Social sportsbook"
              ]
            }
          },
          "includeBookLines": {
            "title": "Add the sportsbook price grid",
            "type": "boolean",
            "description": "Every book quoting the pick, side by side: American, decimal, implied probability and profit per $100, plus the spread or total each book is using, when it last moved, and the direct bet-slip deeplink where the book supports one. Measured at 30 books per pick and 29 per parlay. No extra requests — the prices arrive with the pick.",
            "default": false
          },
          "includeLineShopping": {
            "title": "Add line-shopping analytics",
            "type": "boolean",
            "description": "Computed from prices already downloaded, at no extra request. On picks and parlays: best and worst book, what shopping is worth in basis points against both the worst and the median book, consensus and best implied probability, and how wide the market is. On game odds: a true two-way de-vig — the overround, the book's hold percentage, vig-free fair probabilities and fair American lines for both sides, and a genuine arbitrage check with the stake split.",
            "default": false
          },
          "includePickAnalysis": {
            "title": "Add the full written analysis",
            "type": "boolean",
            "description": "The handicapper's complete write-up as clean text and as the original HTML, with a word count. The short summary is always included for free; this is the long form.",
            "default": false
          },
          "includePlayerProps": {
            "title": "Add player props",
            "type": "boolean",
            "description": "For the game-odds collection: every player market on the game, priced. These dominate a big slate — 499 of 1,355 markets across one upcoming board — so they are separated from the game markets and billed on their own.",
            "default": false
          },
          "includeArticleBody": {
            "title": "Add the article body",
            "type": "boolean",
            "description": "For the news collection: the full article as clean text and as HTML, with a word count. Titles, metadata and related games come for free without it.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum rows",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many rows across every collection. The quota is claimed before a row is built, so a capped run never charges for a row it does not deliver.",
            "default": 1000
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Not needed. The Pickswise API answered 30 concurrent requests with no rate limiting, no challenge and no key. Set one only if you want the run pinned to a region or routed through your own egress.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}