William Hill API.
William Hill esports lines, normalized.
Quick answer: William Hill esports odds are live on KashRock: match winner, map winner and totals lines for CS2 and League of Legends, on the same canonical ids as the other line books. One key, GET /v7/{sport}/lines.
What William Hill posts
William Hill posts esports match betting pre-match and in-play: match winner, per-map winners and totals markets where the event board carries them. Every price lands on the same kr_match_id and market names as the rest of the line books.
Where William Hill shows up
- : /lines: William Hill's price per market next to the consensus fair price, the books object reports its row count and age in seconds on every call.
- : /parlays: Name williamhill as the leg book and price a ticket or discover +EV parlays against the rest of the market.
- : /flow: When williamhill moves a number first, the shift and steam plays record which venue led and how far the price ran.
Endpoints
William Hill is read through the shared v7 surface: no book-specific integration, no upstream fetch on the request path.
| Endpoint | What it returns | Key filter |
|---|---|---|
| GET /v7/{sport}/lines | Per-book prices and the consensus view | book row: williamhill |
| GET /v7/{sport}/parlays | Price or discover parlays with williamhill as the leg book | book=williamhill |
| GET /v7/{sport}/flow | Steam, shift, volume and whale plays where williamhill moves lead | kind=steam|shift|volume|whale |
| GET /v7/meta | The registry entry: key, kind, supported markets | key=williamhill |
Live in the book registry
The real /v7/meta entry: the key, kind, and what the book supports, exactly as the API reports it.
{
"book_id": 506,
"key": "williamhill",
"display_name": "William Hill",
"status": "active",
"aliases": [
"williamhill.com",
"william hill",
"williamhill uk"
]
}Reading it honestly
The booksobject on /lines reports each venue's presence, row count, and age in seconds on every call. When William Hill has nothing posted for a board, the response says so instead of hiding the gap: an empty board is an answer, not an error.
Start in minutes
- : Create a key on Pricing : Sandbox is $0; book lines need Hobby and up
- : Call
GET /v7/{sport}/linesand read thewilliamhillrows - : Compare against the consensus fair price on the same
kr_match_id
Quick reference
| Field | Value |
|---|---|
| Book key | book=williamhill |
| Surfaces | /lines, /parlays, /flow |
| Registry | /v7/meta key=williamhill |
| Plan | Hobby and up, from $29.99/mo |
If you need a normalized feed instead of another UI wrapper, the esports api exposes live boards, schedules, and history on one schema: with the IDs and outcome patterns that keep backtests and grading honest. Start free on Sandbox, or see published pricing.