Skip to main content

Sports Betting & Money-Printer Alerts

Sports-betting intelligence for bots and bettors: live odds, guaranteed-profit arbitrage, +EV detection, player props, injury reports, the new money-printer alert lane — historical odds, public betting percentages, sharp consensus, and steam/CLV alerts — and the 112-sportsbook coverage lane. The odds engine reads free public feeds (The Odds API free tier + ESPN scoreboards) and scrapes 112 sportsbooks across 5 categories (US, offshore, EU, UK, Asian) directly via intelligent fallback — more sources than any other odds service, with no paid odds API. No API key is required to start, and a PRY_ODDS_API_KEY upgrades the Odds API feed to its full bookmaker list.

What it scrapes​

SourceData
112 sportsbooks (US/offshore/EU/UK/Asian), scraped directly via intelligent fallbackBest-price odds for any sport/market across the whole registry — more books than OddsJam, no paid odds API
The Odds API (free tier) + ESPN scoreboardsLive odds across 12+ bookmakers (Pinnacle, DraftKings, FanDuel, BetMGM, …), 20+ sports, markets h2h / spreads / totals / outrights
Odds API history feed + ESPNHistorical closing/open odds for past events
Public betting-percentage feedsShare of bets and share of money on each side
Sharp books (Pinnacle, Circa, BetOnline)CLV-aware consensus lines
ESPNPlayer stats, scores, injury reports

Endpoints​

Router: routers/sports_data.py · tag: Sports Data

MethodPathSummary
GET/v1/sports/oddsLive betting odds across bookmakers
GET/v1/sports/odds/{event_id}Multi-sportsbook odds comparison for one event
GET/v1/sports/stats/{player}Player stats (ESPN)
GET/v1/sports/scoresFinal / live scores for a day (ESPN)
GET/v1/sports/arbitrageGuaranteed-profit arbitrage across bookmakers
GET/v1/sports/plus-evPositive-EV betting opportunities vs a sharp book
GET/v1/sports/propsPlayer prop betting lines (points, yards, strikeouts, …)
GET/v1/sports/injuriesInjury report for a sport or team
GET/v1/sports/liveLive in-play odds
GET/v1/sports/historicalHistorical betting odds for past events
GET/v1/sports/betting-percentagesPublic betting percentages (bets & money share)
GET/v1/sports/sharp-consensusSharp consensus lines (CLV-aware)
GET/v1/sports/alertsMoney-printer alerts (line moves, steam, CLV)
GET/v1/sports/booksAggregated odds across the 112-book sportsbook registry
GET/v1/sports/books/coverageSportsbook coverage-registry statistics (112 books, 5 categories)
GET/v1/scrape/methodsSportsbook scraping-method registry

GET /v1/sports/odds​

Query params: event_query (substring filter, e.g. celtics), sport (nba, nfl, mlb, nhl, epl, … or all), limit (1–100, default 20).

curl -X GET "https://api.pryscraper.com/v1/sports/odds?sport=nba&limit=2" \
-H "Authorization: Bearer <key>"

Response (200):

{
"success": true,
"sport": "nba",
"limit": 2,
"data": [
{
"event": "Boston Celtics @ New York Knicks",
"commence_time": "2026-08-17T00:30:00Z",
"bookmaker": "draftkings",
"market": "h2h",
"outcomes": [{"name": "Boston Celtics", "price": 1.48}, {"name": "New York Knicks", "price": 2.75}]
}
]
}

GET /v1/sports/arbitrage​

Query params: sport (default all), min_yield_pct (default 0.5).

curl -X GET "https://api.pryscraper.com/v1/sports/arbitrage?sport=nba&min_yield_pct=1.0" \
-H "Authorization: Bearer <key>"

Response (200):

{
"success": true,
"sport": "nba",
"min_yield_pct": 1.0,
"data": [
{
"event": "Boston Celtics @ New York Knicks",
"market": "h2h",
"book_a": {"bookmaker": "draftkings", "outcome": "Boston Celtics", "decimal": 2.10},
"book_b": {"bookmaker": "fanduel", "outcome": "New York Knicks", "decimal": 2.02},
"yield_pct": 2.4,
"implied_total_pct": 97.6
}
]
}

GET /v1/sports/alerts (money-printer lane)​

Query params: alert_type (line_move | steam | clv | injury | empty for all), sport (default all), limit (1–100, default 20).

curl -X GET "https://api.pryscraper.com/v1/sports/alerts?alert_type=steam&sport=nfl" \
-H "Authorization: Bearer <key>"

Response (200):

{
"success": true,
"alert_type": "steam",
"sport": "nfl",
"data": [
{
"event": "Chiefs @ Bills",
"market": "h2h",
"type": "steam",
"side": "Chiefs",
"from_price": 1.91,
"to_price": 1.80,
"bookmakers": ["pinnacle", "circa"],
"observed_at": "2026-08-16T19:40:00Z"
}
]
}

GET /v1/sports/books (112-sportsbook lane)​

Query params: sport (default nba), market (default h2h), limit (1–500, default 50).

Aggregates odds across every reachable book in the 112-book registry — US, offshore, EU, UK, and Asian books scraped directly through Pry's intelligent fallback chain (no paid odds API). Per-book degradation: a dead or blocked book contributes nothing and never blanks the result.

curl -X GET "https://api.pryscraper.com/v1/sports/books?sport=nba&market=h2h&limit=5" \
-H "Authorization: Bearer <key>"

Response (200):

{
"success": true,
"sport": "nba",
"market": "h2h",
"limit": 5,
"data": [
{
"sport": "nba",
"event": "Lakers @ Celtics",
"market": "h2h",
"book": "DraftKings",
"book_id": "draftkings",
"home": "Los Angeles Lakers",
"away": "Boston Celtics",
"home_odds": 1.91,
"away_odds": 2.10,
"source": "books:draftkings"
}
]
}

GET /v1/sports/books/coverage returns the registry statistics (total, by category, by method, geo-required split) — no params. GET /v1/scrape/methods returns the extraction-method registry (json, next_data, nuxT, init_state, html, browser).

MCP tools​

The Pry MCP server exposes the sports lane as fifteen tools:

ToolBacking endpoint
pry_oddsGET /v1/sports/odds
pry_arbitrageGET /v1/sports/arbitrage
pry_plus_evGET /v1/sports/plus-ev
pry_propsGET /v1/sports/props
pry_injuriesGET /v1/sports/injuries
pry_live_oddsGET /v1/sports/live
pry_scoresGET /v1/sports/scores
pry_historical_oddsGET /v1/sports/historical
pry_betting_percentagesGET /v1/sports/betting-percentages
pry_sharp_consensusGET /v1/sports/sharp-consensus
pry_alertsGET /v1/sports/alerts
pry_booksGET /v1/sports/books
pry_book_coverageGET /v1/sports/books/coverage
pry_scrape_methodsGET /v1/scrape/methods
pry_all_sources(MCP local dispatch — sports_data.odds.get_odds_multi(sources="all"))
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "pry_arbitrage",
"arguments": {"sport": "nba", "min_yield_pct": 1.0}
}
}

Who uses this​

  • Betting bots — sweep arbitrage for guaranteed profit, filter with plus_ev.
  • Sweat/steam trackers — subscribe to alerts (steam, clv, line_move) instead of polling.
  • Backtesters — historical closing lines vs market closes.
  • Content tools — props, injuries, and scores for odds pages and daily recaps.
  • Odds aggregators — books sweeps all 112 sportsbooks (US/offshore/EU/UK/Asian) for best price, book_coverage audits the registry, all_sources merges every reachable feed for one event.

Next steps​