Discover/Cyberscore API
live

Cyberscore APIcyberscore.live

Access live, upcoming, and historical Dota 2 match data from cyberscore.live including team scores, tournament info, networth graphs, and betting odds via 2 endpoints.

This API takes change requests — .
Endpoint health
verified 2d ago
get_matches
get_match
2/2 passing latest checkself-healing
Endpoints
2
Updated
1mo ago

What is the Cyberscore API?

The cyberscore.live API exposes Dota 2 competitive match data across 2 endpoints, covering live, upcoming, and completed matches. The get_matches endpoint returns paginated lists filterable by status, team, or tournament, while get_match delivers per-match detail including networth timeline data, series format, Steam match ID, and odds from multiple partners.

Try it
Maximum number of matches to return per page.
Number of matches to skip for pagination.
Filter by match status. Accepted values: draft, online, ended, ended_series.
Filter matches by team ID (numeric ID as string). Available from get_matches results rows[*].team_radiant.id or rows[*].team_dire.id.
Filter matches by tournament ID (numeric ID as string). Available from get_matches results rows[*].tournament.id.
api.parse.bot/scraper/51020d30-5c43-45ba-bcab-afa0b7bd2122/<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/51020d30-5c43-45ba-bcab-afa0b7bd2122/get_matches?limit=5&offset=0&status=ended_series&team_id=43580&tournament_id=46220' \
  -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 cyberscore-live-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.cyberscore_dota_2_matches_api import Cyberscore, MatchStatus, MatchNotFound

client = Cyberscore()

# List live matches filtered by status
for match in client.matchsummaries.list(status=MatchStatus.ONLINE, limit=5):
    print(match.id, match.team_radiant.tag, "vs", match.team_dire.tag, match.score_team_radiant, match.score_team_dire)

# Get full details for a finished match
for match in client.matchsummaries.list(status=MatchStatus.ENDED_SERIES, limit=1):
    detailed = match.details()
    print(detailed.id, detailed.status, detailed.best_of, detailed.tournament.name)
    for related in detailed.related_matches:
        print(related.game_map_number, related.winner, related.score_team_radiant, related.score_team_dire)
All endpoints · 2 totalmissing one? ·

Get a paginated list of Dota 2 matches ordered by most recent. Returns matches including live, upcoming, and past with team details, scores, tournament info, and betting odds. Supports filtering by status, team, or tournament. Pagination via limit/offset against a total count returned in the response.

Input
ParamTypeDescription
limitintegerMaximum number of matches to return per page.
offsetintegerNumber of matches to skip for pagination.
statusstringFilter by match status. Accepted values: draft, online, ended, ended_series.
team_idstringFilter matches by team ID (numeric ID as string). Available from get_matches results rows[*].team_radiant.id or rows[*].team_dire.id.
tournament_idstringFilter matches by tournament ID (numeric ID as string). Available from get_matches results rows[*].tournament.id.
Response
{
  "type": "object",
  "fields": {
    "rows": "array of match objects with id, status, teams, scores, tournament, odds, networth, related_matches",
    "count": "integer - total number of matches matching the filter"
  },
  "sample": {
    "data": {
      "rows": [
        {
          "id": 177282,
          "odds": [
            {
              "type": "match_winner",
              "values": [
                "1.71",
                "2.14"
              ],
              "partner": "megapari"
            }
          ],
          "status": "online",
          "winner": "",
          "best_of": 3,
          "id_steam": 8846782245,
          "game_time": 1137,
          "team_dire": {
            "id": 43578,
            "tag": "Moonlight Wispers",
            "name": "Moonlight Wispers"
          },
          "date_start": "2026-06-10T19:21:31.000Z",
          "tournament": {
            "id": 46220,
            "name": "Mad Dogs League S43",
            "tier": 4,
            "status": "active"
          },
          "team_radiant": {
            "id": 43580,
            "tag": "PLegion",
            "name": "Prime Legion"
          },
          "best_of_score": [
            0,
            0
          ],
          "score_team_dire": 15,
          "score_team_radiant": 14
        }
      ],
      "count": 143309
    },
    "status": "success"
  }
}

About the Cyberscore API

What the API Returns

The get_matches endpoint returns a paginated array of match objects plus a total count of results matching your filters. Each match object includes team details, current scores, tournament metadata, match status, and betting odds. Status values you'll encounter are draft, online, ended, and ended_series, letting you distinguish live matches from completed ones and in-progress series from fully resolved ones.

Filtering and Pagination

You can narrow results using the status, team_id, and tournament_id query parameters — for example, passing team_id=674 to isolate Team Liquid matches, or tournament_id=44509 for BLAST SLAM VII. The limit and offset parameters handle pagination across large result sets. IDs for teams and tournaments are numeric strings, sourced from the rows[*].id fields in prior responses.

Match Detail

The get_match endpoint takes a match_id and returns the full record for that match. Notable fields include best_of (series format, e.g. 3 for BO3), winner (radiant or dire), game_time in seconds, id_steam for cross-referencing with Steam's Dota 2 data, and a networth array with timeline data points. The odds array lists figures from multiple betting partners. Related matches in the same series are also included in the response.

Coverage Scope

Data covers competitive Dota 2 matches tracked on cyberscore.live, including major tournament play. The API does not expose player-level statistics, individual hero picks, or per-game map results within a series — it operates at the match and series level.

Reliability & maintenanceVerified

The Cyberscore API is a managed, monitored endpoint for cyberscore.live — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when cyberscore.live 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 cyberscore.live 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
2d ago
Latest check
2/2 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
  • Display a live scoreboard widget for ongoing Dota 2 tournament matches using the online status filter
  • Track historical results for a specific team by filtering get_matches with a team_id
  • Build a tournament bracket viewer by filtering matches with a tournament_id
  • Aggregate betting odds across partners from the odds array for comparison tools
  • Plot networth advantage over time using the networth timeline field from get_match
  • Detect series conclusions by monitoring for ended_series status transitions
  • Cross-reference match results with Steam Dota 2 data using the id_steam field
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 cyberscore.live have an official developer API?+
Cyberscore.live does not publish an official public developer API or documented developer portal.
What does the `status` filter in `get_matches` actually distinguish?+
Four values are observed: draft (match scheduled but not yet started), online (currently live), ended (a single game or match concluded), and ended_series (the full series is complete). Filtering by online returns only live matches; combining ended and ended_series covers historical results.
Does the API return player-level stats or hero picks for each match?+
Not currently. Both endpoints operate at the match and series level, returning team identities, scores, networth timelines, and odds. Individual player stats, hero selections, and per-game breakdowns within a series are not included. You can fork the API on Parse and revise it to add an endpoint targeting that data.
Is networth data available for all matches?+
The networth array is part of the get_match response, but its contents depend on whether the source has recorded timeline data for that match. Live and recently completed matches are most likely to carry populated networth arrays; older archived matches may return an empty array.
Does the API cover esports titles beyond Dota 2?+
Not currently. Both get_matches and get_match return Dota 2 match data only. You can fork the API on Parse and revise it to add endpoints covering other titles tracked on cyberscore.live.
Page content last updated . Spec covers 2 endpoints from cyberscore.live.
Related APIs in SportsSee all →
transfermarkt.com API
Search Transfermarkt for football players and retrieve detailed player profiles, transfer histories, market value timelines, performance stats, and club squad/club information.
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.
nhl.com API
Access data from nhl.com.
hltv.org API
Access Counter-Strike esports data from HLTV.org including match results, player and team statistics, team rankings, upcoming match schedules, tournament information, and fantasy league data.
flashscore.com API
Search teams and competitions, pull daily fixtures and live scores, and retrieve match details including events, statistics, and league standings from FlashScore.
racecenter.letour.fr API
Track live Tour de France race updates by accessing real-time rider positions, detailed stage information, and current general classification standings. Monitor how your favorite cyclists are performing throughout each stage and their overall ranking in the competition.
transfermarkt.de API
Access data from transfermarkt.de.
pro-football-reference.com API
Access comprehensive NFL data including season schedules, team standings, player statistics, game boxscores, play-by-play details, and player profiles to research teams, players, and game information. Search for specific players and dive into detailed game analysis with boxscore information and minute-by-minute play data.