Endpoint Playground
Returns a Dota 2 hero's benchmark percentiles from OpenDota's public games: for each of ten per-minute metrics (`gold_per_min`, `xp_per_min`, `kills_per_min`, `deaths_per_min`, `assists_per_min`, `last_hits_per_min`, `denies_per_min`, `hero_damage_per_min`, `hero_healing_per_min`, `tower_damage`) the value at percentiles 0.1 to 0.99, sorted by percentile. An unknown hero id returns 404.
29 Oct 2026: 10 benchmarks; 2 fields had a value in every checked item.
Sample value profiles: metric: “assists_per_min” and 9 other values; points: median 11 entries.
curl 'https://api.crawlora.net/api/v1/opendota/benchmarks?hero_id=1&role=core' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| hero_id | integer | Yes | 1 | Positive hero ID from opendota-heroes |
| bracket | integer | No | Rank bracket 1 (Herald) to 8 (Immortal) to benchmark against; omit for all ranks | |
| role | string | No | core | Role of the games counted; one of core, support; omit for all roles |
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://api.opendota.com/api/benchmarks",
"fetched_at": "2026-10-28T10:00:00Z",
"hero_id": 1,
"hero_name": "Anti-Mage",
"count": 1,
"benchmarks": [
{
"metric": "gold_per_min",
"points": [
{
"percentile": 0.5,
"value": 545.5
},
{
"percentile": 0.99,
"value": 762
}
]
}
]
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.