How do I get MLB pitcher strikeout prop lines and results?
One row per start with the strikeout line at open and close, the over and under prices and the strikeouts he recorded. Tarik Skubal went over in 12 of 25.
Code verified October 12, 2026. One call to get_prop_history, 10 credits.
The call
player_id comes from search_players. The other pitcher market is pitcher_outs. Pass bookmaker for one book's close instead of the median across books.
import requests
import pandas as pd
API_KEY = "YOUR_API_KEY"
resp = requests.post(
"https://mcp.fastballapi.com/v1/get_prop_history",
headers={"x-api-key": API_KEY},
json={
"player_id": "42409",
"market": "pitcher_strikeouts",
"from_date": "2026-04-01",
"to_date": "2026-09-30",
},
timeout=60,
)
resp.raise_for_status()
data = resp.json()["data"]
starts = pd.DataFrame(data["games"])
s = data["summary"]
print(data["player_name"], data["stat"], "|", s["overs"], "overs,", s["unders"], "unders,", s["pushes"], "pushes")
print("average line", s["avg_line"], "average actual", s["avg_actual"])
print(starts[["game_date", "open_line", "line", "over_odds", "under_odds", "actual", "result"]].head(8).to_string(index=False))
by_line = starts.groupby("line")["result"].value_counts().unstack(fill_value=0)
print(by_line)
def implied(odds):
return 100 / (odds + 100) if odds > 0 else -odds / (-odds + 100)
fair_over = starts["over_odds"].map(implied) / (starts["over_odds"].map(implied) + starts["under_odds"].map(implied))
print("books priced the over at", round(fair_over.mean(), 3), "on average; it hit", s["over_rate"])
Replace YOUR_API_KEY with a key from your dashboard. Python needs requests and pandas (pip install requests pandas). JavaScript runs on Node 18 or newer, or in the browser.
What comes back
The data object of the response, trimmed to the first rows. Every field is real output from the run above.
{
"player_id": "42409",
"player_name": "Tarik Skubal",
"market": "pitcher_strikeouts",
"stat": "strikeouts",
"bookmaker": null,
"games": [
{
"game_id": "401814776",
"game_date": "2026-04-01",
"line": 6.5,
"open_line": 6.5,
"over_odds": -140,
"under_odds": 105,
"books": 8,
"actual": 3,
"result": "under",
"margin": -3.5
},
{
"game_id": "401814850",
"game_date": "2026-04-07",
"line": 7.5,
"open_line": 7.5,
"over_odds": -140,
"under_odds": 105,
"books": 8,
"actual": 7,
"result": "under",
"margin": -0.5
},
{
"game_id": "401814910",
"game_date": "2026-04-12",
"line": 7.5,
"open_line": 7.5,
"over_odds": -136,
"under_odds": 102,
"books": 8,
"actual": 7,
"result": "under",
"margin": -0.5
},
"...22 more"
],
"count": 25,
"summary": {
"games": 25,
"graded": 25,
"overs": 12,
"unders": 13,
"pushes": 0,
"over_rate": 0.48,
"avg_line": 7.4,
"avg_actual": 7.2
},
"truncated": false,
"next_from_date": null
}What to do next
- get_player_props (10 credits). Every sportsbook's strikeout line and prices for one game.
- get_pitch_mix (5 credits). Usage, velocity and whiff rate by pitch type, the inputs behind a strikeout line.
More guides
Start with 500 free credits every month
No card. REST or MCP.