DotaScore aggregates Steam, OpenDota, STRATZ, Liquipedia, and dota2.com into a single PandaScore-shaped JSON envelope — at a fraction of the price, with a free tier that actually lets you ship.
Other providers either charge €200+/month or hand you raw, fragmented endpoints. DotaScore is the only one that gives you both: clean shape and a real free tier.
Every claim below is something you can verify against each provider's public docs. Where a provider technically supports a feature but only partially, we mark it amber.
| Feature | DotaScore You are here | PandaScore Commercial | Abios Commercial | OpenDota Free / Community | STRATZ Free / Freemium | Steam Web API Official / Raw |
|---|---|---|---|---|---|---|
| Coverage | ||||||
| Live in-progress matches | ||||||
| Upcoming pro fixtures | ||||||
| Past matches & boxscores | ||||||
| Bookmaker odds (ML, spreads, totals, per-map) | ||||||
| All 127 heroes (bios, abilities, talents, facets) | ||||||
| Full item catalog | ||||||
| Players, teams, leagues | ||||||
| Per-player boxscore (KDA, GPM/XPM, last hits, net worth, hero/tower damage) | ||||||
| Extended stats (hero healing, stuns, APM, teamfight %, lane efficiency, wards placed, camps stacked, runes) | ||||||
| Item builds + ability upgrades + per-target damage breakdown | ||||||
| Tournament brackets & series | ||||||
| Twitch / stream discovery | ||||||
| Developer experience | ||||||
| One bearer token, one base URL | ||||||
| Stable PandaScore-shaped JSON envelope | ||||||
| OpenAPI / Swagger docs | ||||||
| Webhooks for match events | ||||||
| SDK (TypeScript) | ||||||
| Free tier with every endpoint | ||||||
| No credit card to evaluate | ||||||
| Reliability & freshness | ||||||
| Multi-source reconciliation (Steam + OpenDota + STRATZ + Liquipedia) | ||||||
| Live updates within seconds | ||||||
| Per-host upstream throttling (etiquette-aware) | ||||||
| Server-side cache with TTL tiers | ||||||
| Background reconciler for finalization | ||||||
| Pricing & access | ||||||
| Entry price | ₱0 free → ₱499/mo | €199/mo+ | Custom (enterprise) | Free / $ | Free / $ | Free |
| Pay in PHP (GCash, Maya, BPI, BDO) | ||||||
| Per-minute rate limit transparency | ||||||
| Monthly quota in dashboard | ||||||
| No vendor lock-in (PandaScore-compatible shape) | ||||||
Same envelope shape, same routes (/dota2/matches/running, /dota2/teams/{id}, …). DotaScore drops in as a base-URL swap, costs a fraction of €199/mo, and the free tier actually lets you build a prototype before paying.
Abios requires a sales conversation and enterprise commitment before you see a token. DotaScore is self-serve: sign up, get a key, ship today.
OpenDota is brilliant for parsed stats but doesn't give you fixtures, odds, or a live tournament feed. DotaScore wraps OpenDota and adds the rest — fixtures from Liquipedia, odds from Pinnacle, finalization from Steam.
STRATZ is one of our upstreams. We use it for fallback parsed data, but layer Steam, Liquipedia, and odds on top so you don't have to glue four APIs together yourself.
Steam is the source of truth for match IDs but the responses are raw, undocumented, and fragile. DotaScore normalizes them, adds names, hero metadata, league context, and post-match boxscores.
Building a multi-source Dota aggregator means writing throttlers, reconcilers, hero/league lookups, webhook delivery, and a cache. We already did it — and we maintain it.
Same routes, same envelope. Most clients only need to change two lines.
- const BASE = "https://api.pandascore.co";
- const TOKEN = process.env.PANDASCORE_TOKEN;
+ const BASE = "https://api.dotascore.live";
+ const TOKEN = process.env.DOTASCORE_TOKEN;
const r = await fetch(`${BASE}/dota2/matches/upcoming`, {
headers: { Authorization: `Bearer ${TOKEN}` },
});Try every endpoint once — completely free. No credit card.
DotaScore is independent and not affiliated with PandaScore, Abios, OpenDota, STRATZ, or Valve. Trademarks belong to their respective owners. Comparison reflects publicly documented features at time of writing.