owlsinsight-com · Schema

PropTrendsResponse

CompanySportsBettingDataAPI

Properties

Name Type Description
data object
meta object
success boolean
View JSON Schema on GitHub

JSON Schema

owlsinsight-com-prop-trends-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/owlsinsight-com/json-schema/owlsinsight-com-prop-trends-response-schema.json",
  "title": "PropTrendsResponse",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/owlsinsight-com-openapi.json#/components/schemas/PropTrendsResponse",
  "properties": {
    "data": {
      "properties": {
        "average": {
          "format": "double",
          "type": [
            "number",
            "null"
          ]
        },
        "book": {
          "type": "string"
        },
        "category": {
          "type": "string"
        },
        "decided": {
          "description": "The hit-rate denominator. Excludes pushes AND unresolved games.",
          "format": "double",
          "type": "number"
        },
        "games": {
          "items": {
            "$ref": "#/$defs/PropTrendGame"
          },
          "type": "array"
        },
        "gamesReturned": {
          "format": "double",
          "type": "number"
        },
        "line": {},
        "overRate": {
          "description": "overs / decided. NULL when nothing resolved — zero decided games is not a 0% hit\nrate, so do not render a null as \"0%\".",
          "format": "double",
          "type": [
            "number",
            "null"
          ]
        },
        "overs": {
          "format": "double",
          "type": "number"
        },
        "player": {
          "type": "string"
        },
        "pushes": {
          "format": "double",
          "type": "number"
        },
        "streak": {
          "description": "Consecutive run from the most recent game. Stops at the first unresolved game.",
          "properties": {
            "length": {
              "format": "double",
              "type": "number"
            },
            "side": {
              "type": "string",
              "x-extensible-enum": [
                "over",
                "under"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ],
          "x-owls-required": [
            "side",
            "length"
          ]
        },
        "unders": {
          "format": "double",
          "type": "number"
        }
      },
      "type": "object",
      "x-owls-required": [
        "player",
        "category",
        "line",
        "gamesReturned",
        "average",
        "overRate",
        "overs",
        "unders",
        "pushes",
        "decided",
        "streak",
        "games"
      ]
    },
    "meta": {
      "properties": {
        "checks": {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "closingPhase": {
          "description": "With `line: \"closing\"`: always `\"commence\"` — archive captures are excluded.",
          "type": "string",
          "x-extensible-enum": [
            "commence"
          ]
        },
        "closingTruncated": {
          "description": "With `line: \"closing\"`: true if the rung fetch hit its cap; games past the cut read as no_closing_line, so re-query with a smaller window.",
          "type": "boolean"
        },
        "confirmedOnly": {
          "type": "boolean"
        },
        "gamesAvailable": {
          "description": "Rows the lookback could see. A FLOOR when `gamesAvailableCapped` is true.",
          "format": "double",
          "type": "number"
        },
        "gamesAvailableCapped": {
          "type": "boolean"
        },
        "matchedNames": {
          "description": "The stored spelling(s) the returned games came from. MORE THAN ONE means the name\nmatched two distinct spellings that normalize identically — check them before\ntrusting the aggregate, because it may pool two different people.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "note": {
          "type": "string"
        },
        "provisional": {
          "description": "Games in the lookback still marked provisional.",
          "format": "double",
          "type": "number"
        },
        "sport": {
          "type": "string"
        },
        "timestamp": {
          "type": "string"
        },
        "ungradable": {
          "format": "double",
          "type": "number"
        },
        "window": {
          "format": "double",
          "type": "number"
        }
      },
      "type": "object",
      "x-owls-required": [
        "sport",
        "window",
        "confirmedOnly",
        "provisional",
        "gamesAvailable",
        "gamesAvailableCapped",
        "matchedNames",
        "ungradable",
        "checks",
        "timestamp"
      ]
    },
    "success": {
      "type": "boolean"
    }
  },
  "type": "object",
  "x-owls-required": [
    "success",
    "data",
    "meta"
  ],
  "$defs": {
    "PropTrendGame": {
      "properties": {
        "actual": {
          "format": "double",
          "type": [
            "number",
            "null"
          ]
        },
        "closing": {
          "description": "Present with `line: \"closing\"`: every rung the book had captured at game start\n(commence captures only — an archive row is an in-play line, never a close). The\ngame-level `verdict` comes from the rung with `isMain: true`; alternates are the\nladder and never decide. With no main rung the game is `no_closing_line`; with\nmore than one (rare) it is `multiple_closing_lines`.",
          "items": {
            "properties": {
              "isMain": {
                "type": "boolean"
              },
              "line": {
                "format": "double",
                "type": "number"
              },
              "ungradableReason": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/PropUngradableReason"
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "verdict": {
                "anyOf": [
                  {
                    "$ref": "#/$defs/PropVerdict"
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "type": "object",
            "x-owls-required": [
              "line",
              "isMain",
              "verdict",
              "ungradableReason"
            ]
          },
          "type": "array"
        },
        "eventId": {
          "type": "string"
        },
        "final": {
          "type": "boolean"
        },
        "gameDate": {
          "type": "string"
        },
        "status": {
          "type": "string"
        },
        "ungradableReason": {
          "anyOf": [
            {
              "$ref": "#/$defs/PropUngradableReason"
            },
            {
              "type": "null"
            }
          ]
        },
        "verdict": {
          "anyOf": [
            {
              "$ref": "#/$defs/PropVerdict"
            },
            {
              "type": "null"
            }
          ]
        }
      },
      "type": "object",
      "x-owls-required": [
        "eventId",
        "gameDate",
        "actual",
        "status",
        "final",
        "verdict",
        "ungradableReason"
      ]
    },
    "PropUngradableReason": {
      "description": "Why a prop could not be graded. Never a verdict — always a stated reason.",
      "type": "string",
      "x-extensible-enum": [
        "ambiguous_player",
        "dnp",
        "multiple_closing_lines",
        "no_actual_value",
        "no_closing_line",
        "no_stats",
        "stat_not_reported",
        "ungradable_structure",
        "unmapped_category"
      ]
    },
    "PropVerdict": {
      "type": "string",
      "x-extensible-enum": [
        "hit",
        "miss",
        "over",
        "push",
        "under"
      ]
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/owlsinsight-com-prop-trends-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.