Endpoint Playground
Returns professional Dota 2 match summaries with match ID, teams, league, start time, duration, scores, winner and series metadata. OpenDota returns up to 100 rows per page. Set `less_than_match_id` to a positive match ID to fetch older results; use `next_less_than_match_id` from the response for the next page. An empty cursor page is the end of history. This is recent results, not an upcoming-match schedule. Use opendota_match with one returned match ID for parsed player statistics.
28 Oct 2026: 100 matches; 9 fields had a value in every checked item and 5 varied between items.
Sample value profiles: start_time: 2026-10-22 to 2026-10-27; duration_seconds: 1,013 to 4,619, median 2,305; radiant_win: true in 49 of 100.
curl 'https://api.crawlora.net/api/v1/opendota/pro-matches' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| less_than_match_id | integer | No | Return professional matches with IDs lower than this positive match ID; copy next_less_than_match_id from the previous response |
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://api.opendota.com/api/proMatches",
"fetched_at": "2026-10-27T09:50:00Z",
"count": 1,
"next_less_than_match_id": 9063495955,
"matches": [
{
"match_id": 9063495955,
"start_time": "2026-10-26T20:56:07Z",
"duration_seconds": 2052,
"radiant_team_id": 8255888,
"radiant_name": "BETBOOM TEAM",
"dire_team_id": 10291652,
"dire_name": "LEGION",
"league_id": 20395,
"league_name": "PARI UNIVERSE by FISSURE",
"series_id": 1160235,
"radiant_score": 32,
"dire_score": 9,
"radiant_win": true,
"version": 22
}
]
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.