Apex Legends API.
ALGS records on canonical ids.

Apex Legends esports is a battle-royale points format — different shape from the map-based titles, but the same data problem: rosters and results scattered across organizers, no public book feed. KashRock indexes the ALGS player and team directory and the match record on the canonical schema shared by every other title.

Why Apex data needs a schema

Apex runs ALGS splits, playoffs and LAN finals on a points system — the record that matters is which roster played under which org and how the series settled. That's an identity and indexing problem, and it's the one KashRock already solves for the map-based titles.

Practical rule: battle-royale scenes churn rosters fast — canonical kr_pl_* and kr_tm_* ids keep a player's history attached when the tag or org changes.

What we normalize today

The same envelope as every other title: canonical player, team and match ids, a match index with status and boxscore flags, and book markets on the shared board schema when venues post them.

Core Apex endpoints

Paths under /v7/apex/. Same client and filters as CS2 — sport is just a path segment.

EndpointPurposeKey filters
GET /v7/apex/playersPlayer directory — nick, teamq, id, include
GET /v7/apex/teamsTeam directory & recordsid, q, include
GET /v7/apex/matchesSchedule / live / completedstatus, date, team
GET /v7/apex/propsDFS player props when listedbook, market
GET /v7/apex/linesTeam lines when books list them (Hobby+)market, view

Canonical IDs

  • —kr_pl_* player ids survive tag prefixes and org swaps (TL Zer0 → same id)
  • —kr_tm_* team ids dedupe org and academy spellings
  • —kr_match_id joins schedule, live and history views

Sample Apex player record

A real Apex directory record — TL Zer0 on Team Liquid under one canonical player id.

FieldExampleUsed for
player_idkr_pl_eb442be9f70aCanonical player key
nicknameTL Zer0Display name as listed
teamTeam LiquidCurrent org
team_idkr_tm_577be90b62b4Stable team id across books
GET /v7/apex/players?q=zer0
{
  "source": "kashrock",
  "sport": "apex",
  "players": [
    {
      "player_id": "kr_pl_eb442be9f70a",
      "nickname": "TL Zer0",
      "slug": "tl-zer0",
      "team": "Team Liquid",
      "team_id": "kr_tm_577be90b62b4",
      "role": null
    }
  ]
}

Comparing Apex sources

Standings sites carry ALGS points tables. Use KashRock for the canonical roster and match record, and for markets the day books post them.

SourceSchemaBest use
ALGS standings sitesPoints tables and lobbiesEditorial context
Battle-royale trackersPer-legend metricsPlayer research
KashRock Apex APINormalized ids + match indexApps, records, markets

Settlement patterns

When books list Apex markets, they grade under the same settlement machinery as the other titles — offer, rules version and match record on /results.

Operational practices

  • —Apex coverage follows the ALGS calendar — empty boards between splits are real
  • —Use /players and /teams for the stable directory
  • —Same cache discipline as the bigger titles

Quick reference

GET /v7/apex/players for the directory, /matches for the index, /lines when books post. Transparent pricing.

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

Does the Apex Legends API have book odds or props?

When a book posts Apex markets they appear on /lines and /props on the same schema as every other title. Today Apex coverage is the player/team directory and the match index — the response reports honestly when no venue lists a board.

How does a battle-royale format fit the schema?

Matches still resolve to canonical kr_match_id and kr_tm_* ids. Series-level results and standings context come through the match index; per-game lobby detail lands in boxscores where the record exists.

Is Apex on the same plan as other sports?

Yes. One key covers all nine titles — Sandbox is $0 with an instant key.