💎 Unofficial Ruby Gem for OpenDotaAPI. This API provides Dota 2 related data.
⚠️ Please keep request rate to approximately 3/s.
Installation
If you use Rubygems you can type:
gem install open_dota_api
or add this line to your application's Gemfile:
gem 'open_dota_api'
then execute:
$ bundle
Using
To use OpenDotaApi you can:
require 'open_dota_api'
Use available methods to gather needed data:
# Leagues listing
OpenDotaApi.leagues
# Teams listing
OpenDotaApi.teams
# Match details
OpenDotaApi.matches(match_id)
# Heroes listing
OpenDotaApi.heroes
# Pro players listing
OpenDotaApi.pro_players
# Explorer output (limited)
OpenDotaApi.explorer(league_id)
# Player (account) details
OpenDotaApi.players(account_id)
Premium Tier (update)
Beginning 2018-04-22, the OpenDota API is limited to 50,000 free calls per month and 60 requests/minute.
We offer a Premium Tier with unlimited API calls and higher rate limits. Check out the API page to learn more.
Please follow the link to Get the KEY.
Requests Limit:
To check the request limit for Free Tier:
OpenDotaApi.limits
Output:
{
per_min: "0", # request left for per minute
per_month: "49878" # request left for per month
}
Using the API_KEY
After you get you personal key you have two options:
-
Set
api_key
globally to all your request. For Rails application you can create the initializer:# config/initializers/open_dota_api.rb OpenDotaApi.api_key = [YOUR_KEY_HERE]
-
Or you can set
api_key
directly in the request:OpenDotaApi.leagues(api_key: [YOUR_KEY_HERE]) OpenDotaApi.teams(api_key: [YOUR_KEY_HERE]) OpenDotaApi.matches(match_id, api_key: [YOUR_KEY_HERE]) OpenDotaApi.heroes(api_key: [YOUR_KEY_HERE]) OpenDotaApi.pro_players(api_key: [YOUR_KEY_HERE]) OpenDotaApi.explorer(league_id, api_key: [YOUR_KEY_HERE]) OpenDotaApi.players(account_id, api_key: [YOUR_KEY_HERE])
Enjoy!
Endpoints
🔷 Leagues
API Method: leagues
leagues = OpenDotaApi.leagues
leagues # array
league = leagues.first
league.class # OpenDotaApi::Leagues
league.league_id # Number, league ID
league.ticket # String, ticket identifier
league.banner # String, banner identifier
league.tier # String, premiere, pro, amateur
league.name # String, league name
🔷 Teams
API Method: teams
teams = OpenDotaApi.teams
teams # array
team = teams.first
team.class # OpenDotaApi::Team
team.team_id
team.rating
team.wins
team.losses
team.last_match_time
team.name
team.tag
🔷 Players
API Method: players
account_id = 65366604 # number, is required
player = OpenDotaApi.players(account_id)
player.class # OpenDotaApi::Player
player.account_id
player.mmr_estimate
player.plus
player.contributor?
player.steam_id
player.avatar
player.avatar_medium
player.avatar_full
player.profile_url
player.persona_name
player.last_login
player.cheese
player.loc_country_code
player.name
player.tracked_until
player.rank_tier
player.competitive_rank
player.solo_competitive_rank
player.leaderboard_rank
🔷 Matches
API Method: matches
match_id = 0000000001 # number, is required
match = OpenDotaApi.matches(match_id)
match.class # OpenDotaApi::Match
match.match_id
match.start_time
match.duration
match.series_id
match.series_type
match.radiant_team_id
match.dire_team_id
match.match_seq_num
match.league_id
match.first_blood_time
match.winner
match.cluster
match.replay_salt
match.cluster
match.replay_url
match.radiant_score # Integer
match.dire_score # Integer
match.players # array of players (type OpenDotaApi::Matches::Player)
🔹 Player
players = match.players
player = players.first
player.class # OpenDotaApi::Matches::Player
player.match_id # related to OpenDotaApi::Match
player.player_slot
player.account_id
player.assists
player.camps_stacked
player.deaths
player.denies
player.gold_per_min
player.hero_id # related to OpenDotaApi::Hero
player.kills
player.obs_placed
player.sen_placed
player.rune_pickups
player.stuns
player.xp_per_min
player.name
player.side
player.kda
player.tower_kills
player.roshan_kills
player.hero_healing
player.last_hits
player.firstblood_claimed
player.hero_damage
player.teamfight_participation
🔷 Heroes
API Method: heroes
heroes = OpenDotaApi.heroes
heroes.class # array
hero = heroes.first
hero.class # OpenDotaApi::Hero
hero.id
hero.name
hero.localized_name # "Anti-mage"
hero.primary_attr
hero.attack_type
hero.roles # array of roles
hero.legs
🔷 Pro Players
API Method: proPlayers
pro_players = OpenDotaApi.pro_players
pro_players.class # array
pro_player = pro_players.first
pro_player.class # OpenDotaApi::ProPlayer
pro_player.account_id
pro_player.steam_id
pro_player.avatar
pro_player.avatar_medium
pro_player.avatar_full
pro_player.profile_url
pro_player.persona_name
pro_player.last_login
pro_player.full_history_time
pro_player.cheese
pro_player.fh_unavailable
pro_player.loc_country_code
pro_player.last_match_time
pro_player.name
pro_player.country_code
pro_player.fantasy_role
pro_player.team_id
pro_player.team_name
pro_player.team_tag
pro_player.locked?
pro_player.pro?
pro_player.locked_until
🔷 Explorer
API Method: explorer
explorer = OpenDotaApi.explorer(league_id)
explorer.class # OpenDotaApi::Explorer
explorer.league_matches_ids # Array of matches IDs for current league
...
That's all for now.
Contributing
Bug reports and pull requests are welcome on GitHub at https://github.com/vergilet/open_dota_api
Feel free to contribute:
- Fork it (https://github.com/vergilet/open_dota_api/fork)
- Create your feature branch (git checkout -b my-new-feature)
- Commit your changes (git commit -am 'Add some feature')
- Push to the branch (git push origin my-new-feature)
- Create new Pull Request
License
The gem is available as open source under the terms of the MIT License.
Copyright © 2017 Yaro.