Endpoint Playground
Returns recent public Dota 2 matches in which the given heroes were on team A and/or team B, with both full lineups (radiant and dire), whether Radiant won, and which side the requested team A heroes were on and whether they won. Provide at least one hero id in total; each side takes up to 5 comma-separated hero ids from opendota-heroes. Unknown or repeated hero ids return an invalid-parameter error.
29 Oct 2026: 10 matches; 7 fields had a value in every checked item.
Sample value profiles: start_time: 2026-10-29; team_a_side: dire (6), radiant (4); radiant_win: true in 5 of 10.
curl 'https://api.crawlora.net/api/v1/opendota/find-matches' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| team_a | string | No | Comma-separated hero ids (up to 5) that must be on team A | |
| team_b | string | No | Comma-separated hero ids (up to 5) that must be on team B |
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://api.opendota.com/api/findMatches?teamA=1&teamA=2&teamB=2",
"fetched_at": "2026-10-29T01:20:00Z",
"team_a_hero_ids": [
1,
2
],
"team_b_hero_ids": [
2
],
"count": 1,
"matches": [
{
"match_id": 9066484102,
"start_time": "2026-10-29T00:37:42Z",
"radiant_win": true,
"radiant": [
{
"hero_id": 3,
"localized_name": "Bane"
}
],
"dire": [
{
"hero_id": 1,
"localized_name": "Anti-Mage"
},
{
"hero_id": 2,
"localized_name": "Axe"
}
],
"team_a_side": "dire",
"team_a_win": false
}
]
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.