Steam Charts Player Count & Topsellers Scraper avatar

Steam Charts Player Count & Topsellers Scraper

Pricing

Pay per event

Go to Apify Store
Steam Charts Player Count & Topsellers Scraper

Steam Charts Player Count & Topsellers Scraper

Scrapes live Steam charts — most played, top sellers, wishlisted, new releases, and specials — combined with per-game concurrent player counts from the official Steam API. Returns time-stamped snapshot rows ideal for trend pipelines, launch benchmarking, and game market intelligence.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Categories

Share

Scrape live Steam charts — most played, top sellers, new releases, specials, and coming soon — combined with per-game concurrent player counts from the official Steam API. Returns time-stamped snapshot rows ideal for trend pipelines, launch benchmarking, and game market intelligence.

All data comes from official Valve endpoints (no SteamSpy, no HTML scraping). No API key required.

Features

  • Pull the top 100 most-played games ranked by peak concurrent players (weekly rollup)
  • Pull top sellers, specials/discounts, new releases, and coming-soon games from the Steam storefront
  • Optionally attach live concurrent player counts to every chart row via ISteamUserStats/GetNumberOfCurrentPlayers
  • Filter by region/country code for region-specific top sellers and pricing
  • Every row is time-stamped at the moment of the snapshot — designed for time-series pipelines
  • No API key, no authentication, no proxy needed — pure Valve public endpoints
  • Pay-per-event pricing at roughly $0.001 per record

Who Uses Steam Chart Data and Why

  • Indie developers and publishers — track your game's chart position and wishlist rank around launch to benchmark against competitors
  • Game market intelligence firms — build player-count trend databases across hundreds of titles for investment or licensing decisions
  • Community managers — monitor live player counts and weekly rank changes to time announcements and updates
  • Price-tracking services — capture the specials/discounts chart on a schedule to identify sale events
  • Academic researchers — longitudinal player-count datasets for studying game lifecycle, churn, and seasonal patterns

How It Works

  1. You specify which chart types to fetch (most_played, top_sellers, specials, new_releases, coming_soon) and optionally a region code.
  2. The actor queries ISteamChartsService/GetMostPlayedGames for the weekly most-played leaderboard, and store.steampowered.com/api/featuredcategories for storefront charts — two API calls regardless of how many games are requested.
  3. If includePlayerCounts is enabled, the actor fans out concurrent requests to ISteamUserStats/GetNumberOfCurrentPlayers — one call per unique game — to attach live player counts.
  4. All rows are saved with a snapshot_ts field, making repeated runs suitable for time-series ingestion.

Input

Get the top 15 most-played games with live player counts

{
"chartTypes": ["most_played"],
"maxItems": 15,
"includePlayerCounts": true
}

Get top sellers (US) plus specials, no player counts (faster)

{
"chartTypes": ["top_sellers", "specials"],
"maxItems": 30,
"includePlayerCounts": false,
"region": "us"
}

Full snapshot — all chart types with live player counts

{
"chartTypes": ["most_played", "top_sellers", "specials", "new_releases", "coming_soon"],
"maxItems": 200,
"includePlayerCounts": true,
"region": "us"
}

Coming soon games in Japan

{
"chartTypes": ["coming_soon"],
"maxItems": 20,
"includePlayerCounts": false,
"region": "jp"
}

Input Fields

FieldTypeDefaultDescription
chartTypesarray["most_played", "top_sellers"]Which charts to fetch. Options: most_played, top_sellers, specials, new_releases, coming_soon
maxItemsinteger100Maximum chart rows to return across all enabled chart types
includePlayerCountsbooleantrueFetch live concurrent player counts per game (one extra API call per game)
regionstringusCountry code for top sellers and pricing (e.g. us, gb, de, jp)

Output Fields

Each row in the dataset represents one game on one chart at the time of the snapshot.

FieldTypeDescription
chart_typestringmost_played, top_sellers, specials, new_releases, or coming_soon
rankintegerPosition in the chart (1-based)
steam_appidintegerSteam application ID
namestringGame name (null for most_played — the weekly-rank API doesn't return names)
concurrent_playersintegerLive concurrent player count (null if includePlayerCounts is false)
peak_players_24hintegerPeak concurrent players in the last 24h (only for most_played)
last_week_rankintegerRank in the previous week; -1 means new chart entry (only for most_played)
regionstringCountry code used for this snapshot
price_finalintegerFinal price in cents, e.g. 3999 = $39.99 (storefront charts only)
discount_percentintegerDiscount percentage, e.g. 25 (storefront charts only)
release_datestringRelease date string (storefront charts only, if available)
coming_soonbooleantrue for coming_soon chart entries
genresstringReserved — null in current version
header_imagestringURL of the game header image (storefront charts only)
snapshot_tsstringISO 8601 timestamp when this snapshot was taken
source_urlstringAPI endpoint the record was sourced from

Notes

  • The most_played chart returns exactly 100 entries per run (Valve's weekly rollup size). Game names are not available from this endpoint — only appids, ranks, and peak player counts.
  • The top_sellers, specials, new_releases, and coming_soon charts come from the Steam storefront API and include names, prices, and header images.
  • concurrent_players is the live count at the exact moment of the API call. For consistent time-series data, run the actor on a fixed schedule (e.g., hourly or daily) and use snapshot_ts to align rows.
  • Some appids (DLC, hardware bundles, non-game items) return an error from GetNumberOfCurrentPlayers — those rows get concurrent_players: null.
  • Prices are in cents (integer). Divide by 100 to get the decimal value.