Speedrun.com Leaderboard & Runs Scraper
Pricing
Pay per event
Speedrun.com Leaderboard & Runs Scraper
Scrape speedrun.com leaderboard rankings for any game and category. Resolves game names to IDs, enumerates categories automatically, and returns flattened run rows with player names, times, ranks, WR flags, platform, region, and video links via the official v1 REST API.
Pricing
Pay per event
Rating
0.0
(0)
Developer
BowTiedRaccoon
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Share
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
- 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.
- Category enumeration — Fetches per-game categories for each matched game, optionally filtered by
categoryName. - Subcategory labels — Resolves category-specific variables with
is-subcategory: trueto human-readable labels (e.g.Platform:N64 | Version:1.0). - Leaderboard fetch — One request per game+category with
?embed=players,platforms,regionsto 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)