Speedrun.com Scraper
Spider read speedrun.com in 109 ms without a browser and returned 89 lines of clean markdown.
Community news Celebrate 30 Years of N64 w/ the 30th Anniversary Marathon! 9 days ago RetroGamingLiveTV on Twitch will be hosting a 3+ day event to celebrate the 30th Anniversary of the Nintendo 64. The Marathon dates are September 25th thru 27th, to best coincide with the North American release of the console. BMac_Attack_64FAST-ATHON 2026 IS BACK | Submissions are OPEN!!!FAST-ATHON '26 Is back with another event of runs running from 13th November - 15th November 2026 to raise money for Ablegamers and Submissions are currently OPEN!!!RPGSU Offline 2026 - Submission are now OpenRPGSU Offline 2026 will be the RPG Speedrunner Union's first on-site event from October 22nd to October 25th, streamed on their Twitch channel and raising funds for ILGA-Europe!Celebrate 30 Years of N64 w/ the 30th Anniversary Marathon!RetroGamingLiveTV on Twitch will be hosting a 3+ day event to celebrate the 30th Anniversary of the Nintendo 64. The Marathon dates are September 25th thru 27th, to best coincide with the North American release of the console.The $1,000 Wii Series Olympics 2026 - LTA SeriesAfter the success of the event in 2025, Wii Series Olympics is back even bigger for 2026! The same call, in code.
The capture above came back as markdown. These examples add a key, so you get browser rendering, proxies, and concurrency on speedrun.com.
import { SpiderBrowser } from "spider-browser";
const spider = new SpiderBrowser({
apiKey: process.env.SPIDER_API_KEY!,
});
await spider.connect();
const page = spider.page!;
await page.goto("https://www.speedrun.com/mc");
// No selectors, no schema. Spider reads the page and names the fields.
const data = await page.scrape();
console.log(data);
await spider.close(); import { SpiderBrowser } from "spider-browser";
const spider = new SpiderBrowser({
apiKey: process.env.SPIDER_API_KEY!,
});
await spider.connect();
const page = spider.page!;
await page.goto("https://www.speedrun.com/mc");
await page.content(8000);
const data = await page.evaluate(`(() => {
const runs = [];
document.querySelectorAll("tr[data-testid], .leaderboard-row").forEach(el => {
const rank = el.querySelector("td:first-child, .rank")?.textContent?.trim();
const runner = el.querySelector("a[href*='/users/'], .username")?.textContent?.trim();
const time = el.querySelector(".time, td:nth-child(3)")?.textContent?.trim();
const date = el.querySelector(".date, td:last-child")?.textContent?.trim();
if (runner) runs.push({ rank, runner, time, date });
});
return JSON.stringify({ total: runs.length, runs: runs.slice(0, 10) });
})()`);
console.log(JSON.parse(data));
await spider.close(); Ready for volume? Get an API key →
Fields you can pull.
Spider names these from the page. The capture above came back as markdown; the same
call with return_format: "json" returns them as keys.
What speedrun.com costs to scrape.
The capture above cost $0.000197 to fetch. Pricing is $1 per GB of pre-transformation bandwidth plus $0.001 per CPU minute, so a page like this one lands at a fraction of a cent. Failed requests are billed at $0.
- Free balance on signup
- No card required to test
- Balance never expires
Run it keyless, no account
More Gaming & Esports scrapers.
Steam Scraper
Extract game listings, pricing, reviews, tags, and player counts from the Steam store and community pages.
Epic Games Store Scraper
Extract game listings, pricing, free game promotions, and metadata from the Epic Games Store.
GOG Scraper
Extract DRM-free game listings, pricing, compatibility info, and user ratings from the GOG store.
Start scraping speedrun.com.
You already have the call. A key raises the rate limit and turns on browser rendering, proxies, and concurrency. Balance never expires, and top-ups go through secure checkout.