Discover/Dotabuff API
live

Dotabuff APIdotabuff.com

Access Dota 2 hero win rates, pick rates, lane stats, and meta trends from Dotabuff via a structured JSON API. Covers all heroes across 4 endpoints.

Endpoint health
verified 4d ago
get_heroes_overview
get_hero_details
get_meta_trends
get_lane_stats
4/4 passing latest checkself-healing
Endpoints
4
Updated
26d ago

What is the Dotabuff API?

The Dotabuff API exposes Dota 2 hero performance data across 4 endpoints, covering win rates, pick rates, ban rates, lane statistics, attribute breakdowns, and meta trend deltas. The get_heroes_overview endpoint supports six distinct views — including lanes, damage, and economy — while get_hero_details returns per-hero base stats, roles, and popular item win rates. Draft analysts, tier list tools, and coaching platforms can pull structured data without maintaining their own scrapers.

Try it
The statistical view to fetch.
api.parse.bot/scraper/2681d69f-48c3-45f1-b935-d6053f4e33fa/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/2681d69f-48c3-45f1-b935-d6053f4e33fa/get_heroes_overview?view=winning' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace dotabuff-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

from parse_apis.dotabuff_hero_statistics_api import Dotabuff, HeroView, Lane, HeroNotFound

dotabuff = Dotabuff()

# List top winning heroes
for hero_summary in dotabuff.heros.list(view=HeroView.WINNING, limit=5):
    print(hero_summary.hero_name, hero_summary.win_rate, hero_summary.pick_rate)

# Drill into a specific hero's full details from a summary
top_hero = next(iter(dotabuff.heros.list(view=HeroView.PLAYED, limit=1)))
hero = top_hero.details()
print(hero.name, hero.roles)
print(hero.attributes.strength, hero.attributes.agility, hero.attributes.intelligence)
for item in hero.popular_items:
    print(item.name, item.matches, item.win_rate)

# Get mid lane performance stats
for lane_stat in dotabuff.lanestats.list(lane=Lane.MID, limit=5):
    print(lane_stat.hero, lane_stat.presence, lane_stat.win_rate, lane_stat.kda, lane_stat.gpm)

# Browse meta trends
for trend in dotabuff.trends.list(limit=3):
    print(trend.hero, trend.win_rate.current, trend.win_rate.change, trend.pick_rate.current)
All endpoints · 4 totalmissing one? ·

Retrieve an overview of all heroes with statistics like win rate, pick rate, and ban rate. The view parameter selects the statistical dimension: winning (default) shows heroes sorted by win rate, played by pick rate, facets by hero facets with tier and rates, lanes by lane presence, damage by damage output, economy by gold metrics. Returns all ~127 heroes in a single page.

Input
ParamTypeDescription
viewstringThe statistical view to fetch.
Response
{
  "type": "object",
  "fields": {
    "view": "string indicating the selected view",
    "heroes": "array of hero objects with hero_slug, hero_name, win_rate, pick_rate, and values",
    "total_heroes": "integer count of heroes returned"
  },
  "sample": {
    "data": {
      "view": "winning",
      "heroes": [
        {
          "values": [
            "Spectre",
            "54.71%",
            "11.38%"
          ],
          "win_rate": "54.71%",
          "hero_name": "Spectre",
          "hero_slug": "spectre",
          "pick_rate": "11.38%",
          "extra_stat": "4.14"
        }
      ],
      "total_heroes": 127
    },
    "status": "success"
  }
}

About the Dotabuff API

Hero Overview and Views

The get_heroes_overview endpoint accepts an optional view parameter with six accepted values: winning, played, facets, lanes, damage, and economy. Each view returns an array of hero objects with hero_slug, hero_name, win_rate, pick_rate, and a values field whose contents vary by view. The response also includes a total_heroes count. Omitting the view parameter returns the default overview.

Per-Hero Detail

get_hero_details takes a hero_slug string (e.g., axe, storm-spirit, outworld-destroyer) and returns the hero's display name, role array, base attribute stats with growth values for strength, agility, and intelligence, and a popular_items array. Each item entry includes name, matches, and win_rate, making it useful for identifying high-confidence item builds at scale.

Lane Statistics

get_lane_stats accepts a lane parameter — mid, off, safe, jungle, or roaming — and returns per-hero metrics for that lane: presence, win_rate, kda, gpm, and xpm. This allows direct lane-specific comparisons across all heroes, which is more granular than the aggregate views in get_heroes_overview.

Meta Trends

get_meta_trends takes no inputs and returns a ranked list of heroes ordered by the magnitude of recent change. Each entry in the trends array carries a win_rate object with start, current, and change fields, plus an equivalent pick_rate object. The total_trends integer confirms how many heroes are tracked in the current period.

Reliability & maintenanceVerified

The Dotabuff API is a managed, monitored endpoint for dotabuff.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when dotabuff.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.

This isn't an official dotabuff.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.

Last verified
4d ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Build a hero tier list ranked by current win rate using get_heroes_overview with the winning view
  • Identify meta shifts by tracking win_rate.change and pick_rate.change from get_meta_trends
  • Populate a draft assistant with role data and popular items from get_hero_details
  • Compare lane-specific GPM and XPM across all heroes for a given lane using get_lane_stats
  • Generate patch impact reports by comparing current vs. start win rates from the trends endpoint
  • Display per-hero attribute growth (strength, agility, intelligence) in a hero reference app
  • Rank heroes by presence in a specific lane to surface off-meta picks with positive win rates
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000100 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 Dotabuff have an official developer API?+
Dotabuff does not publish an official public developer API. The site provides stats for human consumption, with no documented API endpoints or API keys available to third parties.
What does the `view` parameter in `get_heroes_overview` actually change in the response?+
Each view filters and shapes the values field on each hero object. For example, lanes surfaces lane-oriented breakdowns, while economy returns economy-related metrics. The hero_slug, hero_name, win_rate, and pick_rate fields are present across all views; only the values payload shifts.
Does `get_hero_details` return skill builds or ability data?+
Not currently. get_hero_details covers base attributes (strength, agility, intelligence with growth), roles, and popular items with match counts and win rates. It does not include skill build recommendations or ability descriptions. You can fork this API on Parse and revise it to add an endpoint targeting ability and skill-order data.
Are player-level or match-level statistics available through this API?+
Not currently. The API covers hero-level aggregates: win rates, pick rates, ban rates, lane performance, and meta trends. Individual player profiles, match histories, and match replays are not exposed. You can fork this API on Parse and revise it to add player or match lookup endpoints.
How current is the data returned by `get_meta_trends`?+
The trends endpoint reflects the recent period tracked by Dotabuff, which is tied to their own data refresh cycle. The response includes start and current values so you can see the window being compared, but the API does not expose a specific timestamp for when the underlying figures were last updated.
Page content last updated . Spec covers 4 endpoints from dotabuff.com.
Related APIs in SportsSee all →
dota2protracker.com API
Track high-level Dota 2 gameplay by accessing real-time hero winrates, professional player match history, and facet performance data. Search the hero database and analyze current meta trends to inform your draft strategy and competitive play.
opendota.com API
Access detailed Dota 2 match statistics, player performance metrics, hero win rates, and professional tournament data to analyze gameplay trends and competitive performance. Search for specific players, explore custom data queries through SQL, and retrieve comprehensive match histories to improve your understanding of the game.
mlbb.io API
Access real-time Mobile Legends hero statistics, tier rankings, optimal builds, and emblem recommendations to make informed gameplay decisions. Search for specific heroes and view comprehensive data including item lists and competitive tier placements to optimize your strategy.
csgostats.gg API
Track and analyze Counter-Strike 2 player performance with detailed statistics including weapon usage, match history, and head-to-head comparisons. Access global leaderboards, view recent matches, and discover which players you've competed against to benchmark your skills.
op.gg API
Look up detailed League of Legends and TFT player statistics, match history, and champion performance data to analyze gameplay and track competitive standings. Search summoner profiles, review leaderboards, and monitor how specific champions perform across different skill levels.
csstats.gg API
Access Counter-Strike 2 player statistics, match history, and leaderboard rankings from csstats.gg. Search players by Steam ID or name, retrieve detailed performance metrics and recent match results, explore scoreboard data, view played-with history, and check global ban statistics.
liquipedia.net API
Access comprehensive esports data from Liquipedia, the world's leading esports wiki. Retrieve match schedules, team rosters, player profiles, tournament results, and game-specific statistics across top titles including Valorant, Counter-Strike, League of Legends, and Dota 2.
pred.gg API
Access all gaming assets from the Pred.gg platform including hero icons, ability icons, skin portraits, item icons, perk icons, and rank icons. Use these images to build gaming apps, guides, or community tools with official Pred.gg graphics.