VOOZH about

URL: https://apify.com/parseforge/opendota-pro-matches-scraper

โ‡ฑ OpenDota Dota 2 Pro Matches Scraper ยท Apify


๐Ÿ‘ OpenDota Dota 2 Pro Matches Scraper avatar

OpenDota Dota 2 Pro Matches Scraper

Pricing

from $2.00 / 1,000 results

Go to Apify Store

OpenDota Dota 2 Pro Matches Scraper

Pull recent Dota 2 professional matches from the OpenDota feed with match ID, league, both team names, the winning side, final score, and match length. Switch modes for hero pick and win rates, pro players, or ranked teams. Great for esports analytics, betting models, and recap feeds.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

๐Ÿ‘ ParseForge

ParseForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

25 days ago

Last modified

Share

๐Ÿ‘ ParseForge Banner

๐ŸŽฎ OpenDota Pro Matches Scraper

๐Ÿš€ Export recent Dota 2 professional matches in one run. Pull the latest 100 pro games with team names, league, score, winner, and duration, plus hero stats, pro players, and ranked teams.

๐Ÿ•’ Last updated: 2026-06-04 ยท ๐Ÿ“Š 16 fields per pro match record ยท 4 data modes ยท Global Dota 2 esports coverage

The OpenDota Pro Matches Scraper turns the public OpenDota API into clean, ready-to-use rows of Dota 2 esports data. Point it at the Pro Matches feed for recent professional games, or switch the Data Type input to pull hero pick and win rates, the registered pro player roster, or ranked professional teams.

Coverage spans the live OpenDota dataset, the same data that powers community match analysis. Pro Matches returns the most recent professional games across every active league. Hero Stats covers all 127 current heroes. The Pro Players roster holds thousands of registered players, and the Teams feed ranks a thousand professional teams by rating.

๐ŸŽฏ Target Audience๐Ÿ’ก Primary Use Cases
Esports analysts and data scientistsTracking pro match results and meta trends
Dota 2 content creators and streamersBuilding recap feeds and stat overlays
Betting and odds modelersBacktesting team and hero performance
Fantasy and community tool buildersPowering rosters, leaderboards, and dashboards

๐Ÿ“‹ What the OpenDota Pro Matches Scraper does

This Actor reads the OpenDota public API and returns a clean per-record shape for whichever Data Type you pick.

  • Pro Matches (default) returns recent professional games with match ID, league, both team names, the winning side, both scores, a readable duration, and an ISO start time.
  • Hero Stats returns every hero with primary attribute, attack type, roles, and pro pick, win, ban, and win rate counts plus public and turbo play counts.
  • Pro Players returns registered professional players with name, persona, team, country, and last match time.
  • Teams returns ranked professional teams with rating, wins, losses, and last match time.

Each mode keeps its own focused field set, so you never get a wide table full of empty columns.

๐ŸŽฌ Full Demo (๐Ÿšง Coming soon)

โš™๏ธ Input

FieldTypeDescription
endpointselectWhich OpenDota dataset to collect. One of pro-matches, hero-stats, pro-players, teams. Default pro-matches.
maxItemsintegerHow many records to return. Free plan is capped at 10. Paid plans go up to 1,000,000.

Example 1 โ€” Recent pro matches

{
"endpoint":"pro-matches",
"maxItems":50
}

Example 2 โ€” Hero pick and win stats

{
"endpoint":"hero-stats",
"maxItems":127
}

โš ๏ธ Good to Know: The OpenDota free API is rate limited to roughly 60 calls per minute. This Actor makes a single call per run, so you stay well inside that limit. Team names in Pro Matches can be empty for ad-hoc or unregistered squads, so those two fields are kept and can be null on individual rows.

๐Ÿ“Š Output

Each Pro Matches record contains the following fields.

FieldDescription
๐Ÿ†” matchIdUnique OpenDota match identifier
๐Ÿ† leagueId / leagueNameLeague the game was played in
๐ŸŸข radiantTeamId / radiantTeamRadiant side team ID and name
๐Ÿ”ด direTeamId / direTeamDire side team ID and name
๐Ÿ… winnerWinning side, Radiant or Dire
๐Ÿ”ข radiantScore / direScoreKill score for each side
โฑ duration / durationSecondsReadable match length and raw seconds
๐Ÿ•’ startTimeMatch start time in ISO format
๐Ÿ“ฆ seriesId / seriesTypeSeries identifier and type
๐Ÿ•’ scrapedAtWhen the record was collected
โŒ errorNull on success, message on failure

Real sample records (Pro Matches)

{
"matchId":8838575634,
"leagueId":19752,
"leagueName":"Immigrant Night Club #1",
"radiantTeamId":null,
"radiantTeam":null,
"direTeamId":9337762,
"direTeam":"gway toe",
"winner":"Dire",
"radiantScore":32,
"direScore":52,
"duration":"35:44",
"durationSeconds":2144,
"startTime":"2026-06-04T18:57:34.000Z",
"seriesId":0,
"seriesType":0,
"scrapedAt":"2026-06-04T19:58:02.985Z",
"error":null
}
{
"matchId":8838571851,
"leagueId":18867,
"leagueName":"Ultras Dota Pro League 2025-26",
"radiantTeamId":9717312,
"radiantTeam":"Silent Shadows",
"direTeamId":9828921,
"direTeam":"Air Defence",
"winner":"Radiant",
"radiantScore":57,
"direScore":19,
"duration":"25:01",
"durationSeconds":1501,
"startTime":"2026-06-04T18:54:13.000Z",
"seriesId":1106113,
"seriesType":1,
"scrapedAt":"2026-06-04T19:58:02.986Z",
"error":null
}
{
"matchId":8838520571,
"leagueId":19699,
"leagueName":"Road To EWC 2026 Regional Qualifiers",
"radiantTeamId":10164102,
"radiantTeam":"Stormrage",
"direTeamId":10144722,
"direTeam":"IGNITE",
"winner":"Dire",
"radiantScore":5,
"direScore":39,
"duration":"25:51",
"durationSeconds":1551,
"startTime":"2026-06-04T18:22:50.000Z",
"seriesId":1106075,
"seriesType":1,
"scrapedAt":"2026-06-04T19:58:02.986Z",
"error":null
}

The Hero Stats mode returns rows like this.

{
"heroId":2,
"name":"Axe",
"primaryAttribute":"str",
"attackType":"Melee",
"roles":["Initiator","Durable","Disabler","Carry"],
"proPick":142,
"proWin":72,
"proBan":158,
"proWinRate":50.7,
"pubPick":661914,
"pubWin":353171,
"turboPicks":235932,
"turboWins":123314,
"scrapedAt":"2026-06-04T19:58:20.826Z",
"error":null
}

โœจ Why choose this Actor

  • Four datasets, one Actor. Switch between pro matches, hero stats, pro players, and teams from a single dropdown.
  • Clean per-mode rows. Each mode returns only the fields that belong to it, so your tables stay readable.
  • Human-friendly values. Start times become ISO timestamps and match length becomes a readable mm:ss string, with raw seconds kept too.
  • No key required. OpenDota is free and keyless, so there is nothing to register or rotate.
  • Honest field set. Team names that the source leaves empty are kept and clearly null, never faked.

๐Ÿ“ˆ How it compares to alternatives

ApproachSetupMaintenanceClean output
This ActorPick a mode and runNone on your sideNormalized fields, ready to use
Raw OpenDota API callsWrite code, handle rate limitsYou maintain itRaw epochs and snake_case keys
Manual site browsingSlow and manualHighCopy and paste only

๐Ÿš€ How to use

  1. Create a free Apify account using this sign-up link.
  2. Open the OpenDota Pro Matches Scraper in the Apify Console.
  3. Pick a Data Type. Leave it on Pro Matches for recent professional games.
  4. Set Max Items, then click Start.
  5. When the run finishes, open the dataset to view and export your records.

๐Ÿ’ผ Business use cases

Esports analytics

GoalHow this helps
Track recent resultsPull the latest pro matches with winner and score
Spot meta shiftsCompare hero pick, ban, and win rates over time

Betting and modeling

GoalHow this helps
Backtest modelsFeed historical match outcomes into your pipeline
Rank teamsUse the Teams feed rating, wins, and losses

Content and media

GoalHow this helps
Build recap feedsTurn match rows into automated summaries
Power overlaysDrive stream graphics with hero and team data

Community tools

GoalHow this helps
Player directoriesList registered pros with team and country
LeaderboardsSort teams by current rating

๐Ÿ”Œ Automating OpenDota Pro Matches Scraper

Connect the Actor output to the tools you already use.

  • Make and Zapier can trigger on each run and route records onward.
  • Slack can receive match recap notifications.
  • Airbyte can sync the dataset into your warehouse.
  • GitHub Actions can run the scraper on a schedule.
  • Google Drive can store snapshots of each run.

๐ŸŒŸ Beyond business use cases

  • Research. Study how hero pick and ban patterns evolve across patches.
  • Personal. Follow your favorite teams and keep a private match log.
  • Non-profit. Power free community stat sites for amateur leagues.
  • Experimentation. Prototype a Dota 2 prediction model with real outcomes.

๐Ÿค– Ask an AI assistant

Paste your dataset into an assistant and ask it to summarize.

โ“ Frequently Asked Questions

Where does the data come from? The public OpenDota API at api.opendota.com, which mirrors Dota 2 match data.

Do I need an API key? No. OpenDota is free and keyless for this data.

How many modes are there? Four. Pro Matches, Hero Stats, Pro Players, and Teams.

How recent are the pro matches? The Pro Matches feed returns the most recent professional games, refreshed by OpenDota as new games finish.

Why are some team names empty? OpenDota leaves the team name blank for ad-hoc or unregistered squads. Those fields are kept and shown as null rather than guessed.

What does the winner field mean? It reads Radiant or Dire, the side that won the game, derived from the source win flag.

Why is duration shown twice? You get a readable mm:ss string and the raw seconds value, so both display and math are easy.

Is there a rate limit? OpenDota allows roughly 60 calls per minute. This Actor makes one call per run, so you stay well under it.

How many records can I get? Free plans return up to 10 records. Paid plans return up to 1,000,000.

Can I schedule it? Yes. Use the Apify scheduler or any external scheduler to run it on an interval.

What time zone are timestamps in? All timestamps are normalized to ISO 8601 in UTC.

Is this affiliated with Valve or OpenDota? No. It is an independent tool that reads only publicly available data.

๐Ÿ”Œ Integrate with any app

Every run writes to a structured dataset you can pull through the Apify API or connect to Make, Zapier, and other platforms, so the data flows straight into your own apps and workflows.

๐Ÿ”— Recommended Actors

๐Ÿ’ก Pro Tip: browse the complete ParseForge collection.

๐Ÿ†˜ Need Help? Open our contact form

โš ๏ธ Disclaimer: This is an independent tool, not affiliated with OpenDota or Valve. Only publicly available data is collected.

You might also like

OpenDota Dota 2 Scraper

crawlerbros/opendota-scraper

Scrape OpenDota.com - the open-source Dota 2 analytics platform. Fetch all 127 heroes with stats, roles, and attributes. Browse recent public matches with MMR data. Lookup player profiles by Steam account ID. Free public API, no key required.

Liquipedia Esports Wiki Scraper

parseforge/liquipedia-esports-wiki-scraper

Scrape Liquipedia esports wiki across League of Legends, Dota 2, CS:GO, Valorant, StarCraft, and Overwatch. Get tournaments, teams, players, matches, prize pools, brackets, and earnings. Export esports data to JSON, CSV, or Excel for analytics, betting models, and fan content.

FotMob Matches Scraper

incognito_mode/fotmob-matches-scraper

Scrape all football matches on FotMob for any date or date range โ€” fixtures, live scores and final results across every competition โ€” as one clean JSON/CSV record per match with teams, score, kickoff time, status and league. Filter by league or match status. Failed requests are never billed.

Esports Tournament Roster Scraper

jungle_synthesizer/esports-tournament-roster-scraper

Scrape esports player rosters from Liquipedia across CS, Valorant, Dota 2, LoL, Rocket League and 30+ game wikis. Returns handle, real name, nationality, role, current team, full team history, status, and social handles.

๐Ÿ‘ User avatar

BowTiedRaccoon

10

Mannco Scraper

coding-doctor-omar/Mannco-Scraper

Scrape Mannco.store to extract live item listings data for Team Fortress 2, Counter-Strike 2, Dota 2, and Rust ($2.5/1000 items).

๐Ÿ‘ User avatar

Coding Doctor Omar

2

Flashscore Data Extractor

dataizi-srl/flashscore-data-extractor

Flashscore Match Scraper - fast, reliable extractor of fixtures and match metadata from Flashscore. Outputs clean JSON with team names, team IDs, tournament info, datetimes, and match URLs - ready for analytics, dashboards, arbitrage and betting models.

292

1.0

Flashscore: Match Listings, Scores & Fixtures

extractify-labs/flashscore-extractor

Extract match listings from Flashscore for football and basketball. Filter by date (-7 to +7 days), match status, or league. Returns teams, scores, tournament, and match metadata.

๐Ÿ‘ User avatar

Extractify Labs

199

5.0

TheSportsDB

moving_beacon-owner1/my-actor-89

Fetches sports data like teams, players, and events. Quick start: `{ "mode": "searchTeam", "query": "Arsenal" }` Modes include searching teams/players, league teams/events, past & upcoming matches, team/player details, recent & next fixtures, and listing leagues, sports, countries, and seasons.

5

FotMob Match Details Scraper

incognito_mode/fotmob-match-details-scraper

Scrape full FotMob match details: final score, lineups & formations, per-player stats and ratings, a goal/card/substitution timeline, the team-stat comparison, venue, referee and player of the match. One normalized JSON/CSV record per match. Failed lookups are never billed.