What is OpenDota?
OpenDota is a volunteer-developed, open source platform providing Dota 2 data. It provides a web interface for casual users to browse through the collected data, as well as an API to allow developers to build their own applications with it.
Data is collected through the Steam WebAPI, as well as replay parsing of .dem files. The replay file contains much more data than the WebAPI, at the cost of additional CPU time spent to process the file. As a result, replay parsing can only be done for a subset of the matches played, while basic data from the API is collected for every public match.
Why aren’t my matches showing up?
There is a setting in the Dota 2 client called “Expose Public Match Data”. Once enabled, any matches played after that point should show up in your profile.
Why isn’t advanced data available for some of my matches?
This data comes from replay files. This is a separate data source, and usually takes a few minutes after the match is played to become available.
The platform queues matches for parse if they contain at least one user who has recently visited. Otherwise, replay parsing is skipped because these matches are unlikely to be looked at. We still get the basic data from the API, and users can request a parse of any match manually as long as the replay hasn’t expired from Valve servers.
Since replays generally expire after 10 days, it’s likely that many of your old matches (from before registration) no longer have replays available, so we can’t “backfill” this data.
There are also some unintentional causes:
The replay can’t be found. This happens occasionally, particularly in the SEA region. If you can’t get the replay in the client, we can’t get it either.
API/GC issues. If the Steam API is down, we can’t find out about new matches, and if the GC (Game Coordinator) is down, we can’t get replays to parse.
The parser crashed while trying to parse the match. This might happen if something weird happened in the replay file that we didn’t expect. If you suspect a replay is breaking the parser, please open an issue on GitHub!
How do you make money/keep the site running?
This started as a side project of a couple of college students and it still operates that way. We don’t intend to make a profit from it, although we try to at least break even on the server bills. We’re also happy to share our knowledge with the community by completely open-sourcing the entire site and stack we run it on.
Development is done by volunteers contributing in their free time, so we don’t have employees to pay. Donations from users and corporate sponsorships pay for servers.
Can I use your code in my own project?
Yes! The code is under the MIT license, a permissive license that allows commercial and personal usage free of charge. We would also appreciate a credit/attribution in your project if you use the code!
Who maintains the project?
Development is done by community members, and is open to anyone who’s interested.
A publicly hosted deployment of the code is maintained by some of the contributors.
Albert founded the project. He built the donation system, writes blog posts, creates data dumps, and produces financial reports.
Howard is a volunteer contributor. His favorite heroes are Nature’s Prophet, Terrorblade, and Lycan, so he’s probably that guy you hate in your pub matches. He wrote most of the code, believes in rapid deployment cycles, and tries not to break things too much.
Nick comes up with ideas for cool machine learning things to do with the data, and occasionally helps out with deployments.
- All of the data provided comes from public sources such as the Steam WebAPI, Steam community profiles, and match replay files.
- Valve allows you to opt-out by having “Expose Public Match Data” unchecked in your Dota 2 options (this is the default). This causes you to appear as anonymous in future matches, although existing data is not deleted.
- We use Google Analytics (and therefore cookies) to monitor site traffic. For more information, see Google’s privacy terms.
What are your terms and conditions?
- The service is provided on a best-effort basis. Since it relies on Valve infrastucture, we cannot make any guarantees of availability.