OrbTop

Speedrun.com Leaderboard & Runs Scraper

GAMESSPORTS

Speedrun.com Leaderboard & Runs Scraper

Scrape leaderboard rankings and verified run records from speedrun.com for any game and category. The actor resolves game names to IDs automatically, enumerates categories, and returns flat run records with player names, times, ranks, world-record flags, platform, region, subcategory labels, and video links — all via the official speedrun.com v1 REST API.

What you get

Each output record represents one verified run on a speedrun.com leaderboard:

Field Description
game_id speedrun.com internal game ID
game_name Game title (international)
game_abbreviation URL slug, e.g. sm64
game_released_year Year of release
category_id speedrun.com category ID
category_name Category label, e.g. 120 Star, Any%
subcategory_variables Pipe-separated subcategory variable labels, e.g. Platform:N64
run_id Unique run identifier
rank Leaderboard position (1 = current world record)
is_world_record true when rank equals 1
primary_time_seconds Timed duration in seconds
player_ids Pipe-separated player IDs
player_names Pipe-separated player display names
player_country ISO 3166-1 alpha-2 country code of the first player
platform Platform name, e.g. Nintendo 64, PC
emulated true if the run used an emulator
region Region label, e.g. JPN / NTSC
run_date Date the run was performed (YYYY-MM-DD)
verify_date ISO-8601 timestamp when the run was verified
video_link Primary video URL (YouTube, Twitch, etc.)
comment Runner-submitted comment
examiner_id ID of the verifier who approved the run
weblink Direct URL to this run on speedrun.com

Input

Parameter Type Default Description
gameQuery string Game name or abbreviation to search. Partial names work (e.g. super mario 64, sm64).
categoryName string (all) Optional filter. Leave blank to scrape all per-game categories.
topN integer 20 Maximum top runs to fetch per leaderboard (1–200).
maxItems integer 10 Total output cap across all leaderboards.

Example: Top 10 runs in SM64 "120 Star"

{
  "gameQuery": "super mario 64",
  "categoryName": "120 Star",
  "topN": 10,
  "maxItems": 10
}

Example: All categories for Minecraft Java Edition

{
  "gameQuery": "minecraft: java edition",
  "topN": 5,
  "maxItems": 100
}

How it works

  1. Game resolution — Searches by abbreviation (exact) then by name (up to 5 matches). This is the step naive slug-guessing misses — the API returns 404 on unresolved IDs.
  2. Category enumeration — Fetches per-game categories for each matched game, optionally filtered by categoryName.
  3. Subcategory labels — Resolves category-specific variables with is-subcategory: true to human-readable labels (e.g. Platform:N64 | Version:1.0).
  4. Leaderboard fetch — One request per game+category with ?embed=players,platforms,regions to resolve all IDs in-response without additional calls.

Rate limits

speedrun.com allows approximately 100 requests per minute unauthenticated. The actor throttles to one request per 600 ms and retries on 429 responses with exponential backoff.

Use cases

  • Track world record holders and submission history for esports analytics
  • Monitor game leaderboards for creator tooling and Discord bots
  • Aggregate speedrun data across games for data journalism and community dashboards
  • Compare subcategory breakdowns (console vs. emulator, version splits)