ATG API.
ATG esports lines, normalized.

Quick answer: ATG esports odds are live on KashRock: match winner, map and rounds lines for CS2, Dota 2, League of Legends, Rainbow Six Siege and more, on the same canonical ids as the other books. One key, GET /v7/{sport}/lines.

No session juggling, no geo workarounds, no atg.se scrape on your request path: the workers already did it. Your call reads the board they published.

What ATG posts

ATG posts a deep esports board: match winner, map winners, map handicaps, total maps, per-map round handicaps and totals, kill lines, team totals, correct map score and objective markets. Every price lands on the same kr_match_id and market names as the rest of the line books.

Where ATG shows up

  • : /lines: ATG'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 atg as the leg book and price a ticket or discover +EV parlays against the rest of the market.
  • : /flow: When atg moves a number first, the shift and steam plays record which venue led and how far the price ran.

Endpoints

ATG is read through the shared v7 surface: no book-specific integration, no upstream fetch on the request path.

EndpointWhat it returnsKey filter
GET /v7/{sport}/linesPer-book prices and the consensus viewbook row: atg
GET /v7/{sport}/parlaysPrice or discover parlays with atg as the leg bookbook=atg
GET /v7/{sport}/flowSteam, shift, volume and whale plays where atg moves leadkind=steam|shift|volume|whale
GET /v7/metaThe registry entry: key, kind, supported marketskey=atg

Live in the book registry

The real /v7/meta entry: the key, kind, and what the book supports, exactly as the API reports it.

GET /v7/meta?fields=books
{
  "book_id": 900,
  "key": "atg",
  "display_name": "ATG",
  "status": "active",
  "aliases": [
    "atg.se",
    "atg bets"
  ]
}

Reading it honestly

The booksobject on /lines reports each venue's presence, row count, and age in seconds on every call. When ATG 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}/lines and read the atg rows
  • : Compare against the consensus fair price on the same kr_match_id

Quick reference

FieldValue
Book keybook=atg
Surfaces/lines, /parlays, /flow
Registry/v7/meta key=atg
PlanHobby 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.

Frequently asked questions

Can I get ATG esports odds through an API?

Yes. ATG esports mainlines, match winner, maps handicap, total maps, plus per-map winners, round markets, kill lines and objectives, are ingested into the same schema as every other book. Call GET /v7/{sport}/lines and read the atg rows alongside Pinnacle, Betway, Kalshi and the rest of the line books, on the same kr_match_id.

Which endpoints serve ATG lines?

Three: GET /v7/{sport}/lines for per-book prices and the consensus view, GET /v7/{sport}/parlays to price or discover parlays with atg as the leg book, and GET /v7/{sport}/flow for steam, shift, volume and whale plays where atg moves lead the market.

Do I have to scrape ATG myself?

No. There is no upstream fetch on the request path, workers fill the cache and your call reads it, so a response is a read, not a scrape. One X-API-Key header covers atg and the other books.

What if ATG has no lines for a sport right now?

The books object on /lines reports each venue's presence, row count and age in seconds. atg present: false simply means nothing is posted for that board, the response stays honest instead of hiding the gap.

Which plan do I need for ATG lines?

Hobby ($29.99/mo) and up, the same plan that unlocks /lines, /parlays and /flow for every line book.

KashRock is an independent data provider and is not affiliated with, endorsed by, or sponsored by ATG. Publicly available lines, normalized for informational use.