Skip to content

get_prop_backtest

25 creditsBacktestsPOST /v1/get_prop_backtest

How often a kind of player prop hit against what the market implied, by your filters, since 2024

Use it when you want to test an idea about props before building anything: how often a kind of prop hit against what the market implied, by season, with the sample size and interval.

Parameters

marketenum: player_goal_scorer_anytime | player_to_receive_card | player_shots_on_target | player_shots | player_assistsrequired
The market, e.g. player_goal_scorer_anytime.
sideenum: over | underoptional
over (default) or under. Yes/no markets are graded on the yes price: over only.
from_datestringoptional
First game date, YYYY-MM-DD. Default all held.
to_datestringoptional
Last game date, YYYY-MM-DD. Default all held.
player_idstringoptional
One player's id (e.g. 280555, from search_players).
teamstringoptional
The player's team, e.g. ARS.
opponentstringoptional
The team he played.
home_awayenum: home | awayoptional
Whether his team was at home.
team_roleenum: favorite | underdogoptional
Whether his team was favored, by the books' closing moneylines.
line_minnumberoptional
Lowest median closing line to include.
line_maxnumberoptional
Highest median closing line to include.
fair_minnumberoptional
Lowest fair probability of this side to include, 0 to 1.
fair_maxnumberoptional
Highest fair probability of this side to include, 0 to 1.
leagueenum: soccer | mls | laliga | seriea | bundesliga | ligue1 | ucloptional
League. Defaults to soccer. One of: soccer, mls, laliga, seriea, bundesliga, ligue1, ucl.

Notes

  • Over MCP, ask for it in plain English and the client calls get_prop_backtest itself. Point any MCP client at https://mcp.strikerapi.com/mcp?key=YOUR_API_KEY.
  • Each call costs 25 credits, taken before it runs and refunded if the server errors.
  • Not the call you need? Find the right call by what you are trying to answer.

Request

curl -X POST https://mcp.strikerapi.com/v1/get_prop_backtest \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
  "market": "player_goal_scorer_anytime",
  "home_away": "home",
  "team_role": "favorite"
}'

Response

json
{
  "market": "player_goal_scorer_anytime",
  "label": "anytime goalscorer (over = scores)",
  "side": "over",
  "filters": {
    "home_away": "home",
    "team_role": "favorite"
  },
  "results": 6118,
  "hits": 749,
  "misses": 5369,
  "pushes": 0,
  "hit_rate": 0.122,
  "avg_implied_prob": 0.191,
  "avg_fair_prob": null,
  "no_result": 780,
  "no_price": 0,
  "games": 552,
  "players": 606,
  "avg_books": 1.9,
  "avg_line": null,
  "avg_actual": 0.1,
  "hit_rate_minus_implied": -0.069,
  "hit_rate_minus_fair": null,
  "hit_rate_interval_95": [
    0.114,
    0.131
  ],
  "market_inside_interval": false,
  "by_season": [
    {
      "season": 2023,
      "results": 338,
      "hits": 48,
      "misses": 290,
      "pushes": 0,
      "hit_rate": 0.142,
      "avg_implied_prob": 0.136,
      "avg_fair_prob": null
    },
    {
      "season": 2024,
      "results": 2768,
      "hits": 330,
      "misses": 2438,
      "pushes": 0,
      "hit_rate": 0.119,
      "avg_implied_prob": 0.2,
      "avg_fair_prob": null
    },
    {
      "season": 2025,
      "results": 2389,
      "hits": 295,
      "misses": 2094,
      "pushes": 0,
      "hit_rate": 0.123,
      "avg_implied_prob": 0.187,
      "avg_fair_prob": null
    }
  ],
  "method": "One result per player per game: the closing line is the median across books, the market's probability comes from the books at that line, and a push counts in neither the hits nor the rate. A yes/no market is graded on the yes price. no_result counts players with no result for the game (not played, or no stat line of ours), no_price those with no price on this side. team_role is by the books' closing moneylines. avg_implied_prob averages each book's implied probability, margin included. fair_prob takes the margin out of each book's two prices for the same line, proportionally, then averages. Only identical lines are combined.",
  "caution": "A past result is not a forecast. Trying many filters will turn up some that beat the market by luck, so check by_season and the interval. Not a recommendation."
}

Response fields

marketstring
labelstring
sidestring
filtersobject
filters.home_awaystring
filters.team_rolestring
resultsnumber
hitsnumber
missesnumber
pushesnumber
hit_ratenumber
avg_implied_probnumber
avg_fair_probnull
no_resultnumber
no_pricenumber
gamesnumber
playersnumber
avg_booksnumber
avg_linenull
avg_actualnumber
hit_rate_minus_impliednumber
hit_rate_minus_fairnull
hit_rate_interval_95[]array
List of number
market_inside_intervalboolean
by_season[]array
List of objects
by_season[].seasonnumber
by_season[].resultsnumber
by_season[].hitsnumber
by_season[].missesnumber
by_season[].pushesnumber
by_season[].hit_ratenumber
by_season[].avg_implied_probnumber
by_season[].avg_fair_probnull
methodstring
cautionstring

Related endpoints

Try it

500 free credits every month: 20 calls to get_prop_backtest, and no card.