Discover/opendota.com API
live

opendota.com APIopendota.com

Access Dota 2 match data, player stats, hero win rates, and pro match results via the OpenDota API. Supports SQL queries, player search, and more.

Endpoints
8
Updated
3mo ago
Try it
Numeric match ID to retrieve data for.
api.parse.bot/scraper/49173147-70df-4c2d-bade-d462c1e1cbbb/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Use it in your codegrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/49173147-70df-4c2d-bade-d462c1e1cbbb/get_match?match_id=7000000001' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 8 totalclick to expand

Retrieve comprehensive match data including duration, scores, players, and advanced statistics for a specific match.

Input
ParamTypeDescription
match_idrequiredintegerNumeric match ID to retrieve data for.
Response
{
  "type": "object",
  "fields": {
    "players": "array of player objects with detailed stats",
    "duration": "integer match duration in seconds",
    "match_id": "integer match identifier",
    "game_mode": "integer game mode identifier",
    "dire_score": "integer total Dire kills",
    "lobby_type": "integer lobby type identifier",
    "start_time": "integer Unix timestamp of match start",
    "radiant_win": "boolean indicating if Radiant team won",
    "radiant_score": "integer total Radiant kills"
  },
  "sample": {
    "data": {
      "players": [
        {
          "kills": 9,
          "deaths": 13,
          "assists": 31,
          "hero_id": 100,
          "match_id": 7000000001,
          "account_id": 1244313181,
          "player_slot": 0
        }
      ],
      "duration": 3364,
      "match_id": 7000000001,
      "game_mode": 22,
      "dire_score": 60,
      "lobby_type": 7,
      "start_time": 1675435539,
      "radiant_win": false,
      "radiant_score": 66
    },
    "status": "success"
  }
}

About the opendota.com API

This API exposes 8 endpoints covering Dota 2 match data, player profiles, hero statistics, and professional match results from OpenDota. The get_match endpoint returns over 9 fields per match including players, duration, radiant_win, and game_mode. The get_explorer endpoint lets you run raw SQL SELECT queries against OpenDota's match database, giving you access to custom aggregations across matches, heroes, leagues, and teams.

Match and Player Data

The get_match endpoint accepts a match_id and returns structured match data: duration in seconds, start_time as a Unix timestamp, game_mode and lobby_type as integer identifiers, radiant_win as a boolean, team kill totals (radiant_score, dire_score), and a players array with per-player statistics. The get_player endpoint takes a Steam account_id and returns a profile object with fields like personaname, avatarfull, profileurl, and loccountrycode, alongside rank_tier and leaderboard_rank.

Filtering Win/Loss Records and Searching Players

get_player_win_loss returns simple win and lose counts for any account_id, with optional filters for hero_id, game_mode, lobby_type, region, patch, and date (days back from today). search_players accepts a query string matched against player display names and returns account_id, personaname, avatarfull, and last_match_time for each match.

Hero Stats and Professional Scene

get_hero_stats returns an array of all heroes with no required inputs. Each hero object includes id, localized_name, primary_attr, attack_type, roles, and pro scene stats: pro_pick, pro_win, and pro_ban. get_pro_players lists professional players with name, team_name, team_tag, country_code, and linked Steam identifiers. get_pro_matches returns recent professional matches ordered by match_id descending, including radiant_name, dire_name, league_name, start_time, duration, and radiant_win. Pagination is handled via the less_than_match_id parameter.

Custom SQL Queries via Explorer

The get_explorer endpoint accepts any SQL SELECT statement and returns rows (an array of result objects), rowCount, and the command string. Supported tables include matches, players, heroes, leagues, and teams. This allows aggregations, joins, and filters that the other endpoints do not expose directly.

Common use cases
  • Track a player's win rate on a specific hero by filtering get_player_win_loss with hero_id
  • Pull recent professional match results including team names and leagues using get_pro_matches
  • Build a hero tier list using pro_pick, pro_win, and pro_ban fields from get_hero_stats
  • Look up a player's current rank tier and leaderboard position from get_player
  • Find all Steam accounts matching a display name using search_players before fetching full profile data
  • Run custom SQL aggregations over the OpenDota match database using get_explorer to compute patch-level meta statistics
  • Retrieve full match timelines including per-player stats for a given match_id using get_match
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000250 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does OpenDota have an official developer API?+
Yes. OpenDota provides a public REST API documented at https://docs.opendota.com. It is largely open with optional API key authentication for higher request volumes.
What filters does `get_player_win_loss` support?+
The endpoint accepts hero_id, game_mode, lobby_type, region, patch, and date (number of days back from today) as optional filters, all combined with the required account_id. Each filter narrows the win/loss count independently.
How does pagination work for `get_pro_matches`?+
Results are ordered by match_id descending. To fetch the next page, pass the lowest match_id from the current response as the less_than_match_id parameter on the next request.
Does the API return match history for a specific player — all their recent matches, not just win/loss counts?+
Not currently. The API covers win/loss aggregates via get_player_win_loss and full detail for a known match_id via get_match, but does not expose a match history list per player. You can fork this API on Parse and revise it to add a player matches endpoint.
Does `get_hero_stats` include rank-bracket breakdowns, such as win rates at Herald vs. Immortal?+
Not in the current response fields, which cover pro scene stats (pro_pick, pro_win, pro_ban), primary_attr, attack_type, and roles. Rank-bracket win rate breakdowns are not exposed. You can fork this API on Parse and revise it to add fields from OpenDota's full hero stats response if that data is needed.
Page content last updated . Spec covers 8 endpoints from opendota.com.
Related APIs in SportsSee all →
ncaa.com API
Access live college sports scores, game schedules, detailed boxscores, play-by-play breakdowns, and team statistics across NCAA sports. Search for specific contests and retrieve comprehensive game information for any NCAA sport, division, or team.
bet365.bet.br API
Access live betting odds, featured sports events, and real-time scores directly from bet365 Brazil's platform across multiple sports including Formula 1 and in-play markets. Get current match results, browse available betting categories, and view homepage promotions all through structured data endpoints.
nfl.com API
Access real-time NFL data including game schedules, scores, player statistics, team rosters, standings, injury reports, fantasy rankings, and the latest news — all from nfl.com.
maxpreps.com API
Access high school sports data from MaxPreps. Search for schools, retrieve team rosters and schedules, look up athlete profiles, and browse national or state rankings across all sports.
axs.com API
Search for events, performers, and venues across AXS.com to find tickets, pricing, and availability information in your area or by category. Browse featured events, explore venues by city, and access detailed event information all in one place.
pdga.com API
Access player profiles, ratings history, tournament events, live scoring, world rankings, and the course directory from the Professional Disc Golf Association.
bwfbadminton.com API
Track badminton tournaments worldwide by browsing the BWF calendar, viewing tournament draw brackets, and retrieving detailed match results with player stats and scores. Stay updated on competitions and analyze matchups with comprehensive tournament data from the Badminton World Federation.
formula1.com API
Get comprehensive Formula 1 data including race results, qualifying sessions, practice sessions, pit stops, and driver/team standings from 1950 to present. Track live race schedules, fastest laps, starting grids, and historical world champions to stay updated on all F1 season information.