← StrikerAPICONTENT HISTORY

Update to StrikerAPI

Snapshot Oct 30, 2026 · 00:06 UTC · version 1.0.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save StrikerAPI and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Compares soccer three-way moneylines (home, draw, away), goal handicaps and totals across sportsbooks, finds the best price on each outcome, reads overround and line movement, and checks opening versus closing lines. Use when the user asks about the odds on a match, the best price for a draw, which book is sharpest, or how a line moved before kickoff. Do not use for removing the margin or true probabilities, see odds-analysis. Do not use for goalscorer prices, see goalscorer-prop-modeling.",
  "included_files": [],
  "name": "odds-explorer",
  "skill_md_contents": "---\nname: odds-explorer\ndescription: \"Compares soccer three-way moneylines (home, draw, away), goal handicaps and totals across sportsbooks, finds the best price on each outcome, reads overround and line movement, and checks opening versus closing lines. Use when the user asks about the odds on a match, the best price for a draw, which book is sharpest, or how a line moved before kickoff. Do not use for removing the margin or true probabilities, see odds-analysis. Do not use for goalscorer prices, see goalscorer-prop-modeling.\"\nmetadata:\n  version: 1.0.0\n  author: StrikerAPI\n---\n\n# Odds Explorer\n\n> **Default data tool:** StrikerAPI (`strikerapi-tool`).\n> `get_schedule` (2 credits) for the median line on upcoming fixtures. `get_odds` with `game_id` (5) for every book on one match, with `date` (10) for a day, with `season` (2 per match) for a block. `get_line_movement` (10) for pre-kickoff snapshots.\n\nSoccer is a three-way market: home win, draw, away win. A two-outcome habit from other sports, such as comparing only the favorite and underdog, throws away the draw, which is about a quarter of matches. This skill reads the whole triple.\n\n## When to Use\n\n- \"What are the odds on Liverpool against City?\"\n- \"Which book has the best price on the draw?\"\n- \"How much margin is each book charging?\"\n- \"Did the line move toward the home side?\"\n- \"What was the closing line for this finished match?\"\n\n## When NOT to Use\n\n- Converting prices to fair probabilities: `odds-analysis`\n- Anytime goalscorer prices: `goalscorer-prop-modeling`\n\n## Commands Available\n\n| Command | What It Does | Credits |\n|---------|-------------|---------|\n| `get_schedule` | Upcoming fixtures with `line`: books count, median `home_ml`, `draw_ml`, `away_ml`, `total`, `home_handicap`, `implied` | 2 |\n| `get_odds` | Per-book three-way moneyline, handicap, total, with open and close, and for finished matches the outcome | 5 (`game_id`), 10 (`date`), 2 per match (`season`) |\n| `get_line_movement` | Time series of each book's `home_ml`, `draw_ml`, `away_ml`, `home_handicap`, `total` before kickoff | 10 |\n| `get_game` | Includes each book's opening and closing line inside a full match (5) | 5 |\n\n## Commands That Do NOT Exist\n\n| Not Available | Use Instead |\n|--------------|-------------|\n| `get_live_odds` | `get_odds` for a match, `get_schedule` for the median line. No in-play prices |\n| `get_best_odds` | Compare the `books` array from `get_odds` yourself |\n| `get_btts_odds`, `get_corners_odds`, `get_card_odds` | Not available. The markets are three-way moneyline, goal handicap and goal total |\n| `get_closing_line` | The `*_close` fields in `get_odds` |\n| `get_public_betting` | Not available. Infer from movement only, cautiously |\n\n## What the Prices Look Like\n\nMoneylines are American odds. A home price of `+290` risks 100 to win 290. A price of `-118` risks 118 to win 100. The three prices for one book sum to more than 100% implied, and the excess is the overround.\n\n`get_odds` returns, per match, a `books` array. Per book:\n\n| Field | Meaning |\n|-------|---------|\n| `provider`, `source` | Book name; `the_odds_api` or `espn` |\n| `home_ml_open`, `home_ml_close` (and `draw_`, `away_`) | Opening and closing moneyline. ESPN rows often have `null` opens |\n| `close_prob` | No-margin home, draw and away probabilities plus `overround` |\n| `home_handicap_*`, `total_*`, `over_odds`, `under_odds` | Goal handicap and total where posted. Many Odds API rows have `null` here |\n| `captured_at` | When the row was captured. For ESPN rows on old matches it can be well after the match, so it is not a kickoff timestamp |\n\nFor a finished match there is also `outcome`: `result` (`H`, `D`, `A`), `median_total`, `median_home_handicap`, `over`, `home_covered`.\n\n## How It Works\n\n**Step 1: Get the match id.** `get_schedule` for upcoming, `list_games` (see `match-lookup`) for past.\n\n**Step 2: Pull every book.**\n\n```\nget_odds {\"game_id\": \"740968\"}\n```\n\n**Step 3: Find the best price per outcome.** Independently for home, draw and away, take the highest American number (the largest payout). For `+330` versus `+290`, `+330` is better. For `-106` versus `-118`, `-106` is better. The best price for each side usually sits at a different book.\n\n**Step 4: Measure each book's margin.** Convert each price to implied probability, sum the three, subtract 1.\n\n```\nimplied(+x) = 100 / (x + 100)          implied(-x) = x / (x + 100)\noverround   = implied_home + implied_draw + implied_away - 1\n```\n\nBetting exchanges and Pinnacle typically run far below high-street books. `close_prob.overround` gives it directly.\n\n**Step 5: Clean the rows before ranking.** Drop or flag a book whose three prices sum to less than 100% (negative overround) or far above 115%. Exchange snapshots in thin markets produce nonsense. In one line-movement pull, an exchange row early in the series read `-323 / -1000 / -323`, which is not a real market.\n\n**Step 6: Movement.** `get_line_movement` returns snapshots per book. ESPN lines are captured once a day, The Odds API lines hourly for matches in the next two days, so a quiet series is not necessarily a quiet market.\n\n```\nget_line_movement {\"game_id\": \"401879267\"}\n```\n\nCompare the first and last real snapshot per book, in implied probability rather than raw price, because a move from `+230` to `+200` and from `-110` to `-125` are different sizes.\n\n## Worked Example\n\nCrystal Palace vs Arsenal, closing lines from `get_odds {\"game_id\": \"740968\"}` (Arsenal won 2-1, `result` A):\n\n```\nbook              home    draw    away    overround\n888sport          +290    +250    -118     8.3%\nBet 365 (espn)    +310    +260    -118     6.3%\nBetfair Exchange  +330    +290    -106     0.4%\nDraftKings        +300    +270    -110     4.4%\nFanDuel           +320    +260    -115     5.1%\nMarathonbet       +315    +274    -110     3.2%\nPinnacle          +317    +279    -111     3.0%\nWilliam Hill      +290    +250    -118     8.3%\n```\n\nBest home price: `+330` (Betfair Exchange). Best draw: `+290` (Betfair Exchange). Best away: `-106` (Betfair Exchange), then `-110`. Lowest margin: the exchange at 0.4%, then Pinnacle at 3.0%. The same book at the worst prices (888sport, William Hill) costs about 8% overround, so the choice of book moves the expected cost of a bet by several percent. The match total: Pinnacle `2.75` with `-106` over and `-104` under; William Hill `2.5`; `outcome.median_total` was `2.75` and the total went over (`over: true`).\n\nOpening versus closing for the home price at Pinnacle was `+649` to `+317`: the market moved heavily toward the home side's chance (Arsenal were still favorites at `-111`), which shows how much information gets priced in during the final days.\n\n## Reading Movement\n\n| Pattern | Reading |\n|---------|---------|\n| All books shorten the same side together | Information or heavy money; follow the sharpest book first |\n| One soft book lags the others | A stale price, a line-shopping chance, not a signal |\n| Draw price drifts while home and away hold | Often margin redistribution, not a view on the match |\n| Total moves 2.5 to 2.75 | Quarter lines: the book is shading, price the over and under at the stated odds |\n\n\n## Anti-patterns\n\n| Rationalization | Why It's Wrong | Do This Instead |\n|----------------|---------------|-----------------|\n| \"Compare home and away only\" | The draw holds about a quarter of the probability | Always show all three |\n| \"Best price at one book for all three\" | Best prices sit at different books | Choose per outcome |\n| \"Pinnacle open to close is a steady line\" | Compare `source`: ESPN and Odds API rows differ in timing | Report the source with each number |\n| \"Trust any row\" | Thin exchange snapshots can be garbage | Sanity check overround |\n| \"Median across books is a real line\" | Medians such as `2.88` or `0.13` are not postable lines | Use them for comparison, not as a bet |\n\n## Output Format\n\n```\n[Home] vs [Away] - [date], [competition]\nBest home: [price] @ [book]    Best draw: [price] @ [book]    Best away: [price] @ [book]\nLowest margin: [book] [x.x]%   Highest: [book] [x.x]%\nTotal: [line] ([over] / [under]) @ [book]\nMovement: [book] [open] -> [close], implied [x]% -> [y]%\nCredits: [n]\n```\n\n## What to Do Next\n\n| What You Found | Next Action | Skill |\n|----------------|-------------|-------|\n| Need true probabilities | Remove the margin | `odds-analysis` |\n| Want context for the match | Form, Elo, xG | `match-preview` |\n"
}

SHA-256 of public snapshot: 1f4a8dd6ef4989611ee408c0734c3f8c0439794775b443352af5ce3d4abd7f85