SteamSpy Scraper — Game Sales, Owners & Analytics avatar

SteamSpy Scraper — Game Sales, Owners & Analytics

Pricing

from $1.50 / 1,000 results

Go to Apify Store
SteamSpy Scraper — Game Sales, Owners & Analytics

SteamSpy Scraper — Game Sales, Owners & Analytics

Scrape SteamSpy by mode, genre, tag, or appId list. Extract game owners, sales estimates, CCU, playtime, ratings, and pricing for market research, competitive analysis, and game analytics. No API key, no login.

Pricing

from $1.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

SteamSpy Scraper — Game Sales, Owners, Analytics & Market Data

Extract Steam game ownership estimates, sales analytics, player counts, ratings, and playtime data from SteamSpy — no API key, no login required.


What does SteamSpy Scraper do?

SteamSpy Scraper connects directly to the public SteamSpy API (steamspy.com/api.php) and retrieves aggregated Steam game statistics for thousands of titles. It supports six scraping modes: top-100-all-time, top-100 in the last two weeks, full paginated catalog (request=all, ~1,000 games per page), genre-filtered lists, tag-filtered lists, and on-demand app-detail lookups by App ID.

The engine uses got-scraping with optional Apify datacenter proxy. It respects SteamSpy's documented rate limits — one request per minute for paginated catalog pages, one request per second for individual app detail calls — to avoid being throttled. Pagination is fully automated: the all mode loops through pages until it either hits your maxResults cap or the API returns an empty page, meaning you can pull tens of thousands of games in a single run. All output is pushed directly to an Apify dataset in a clean, flat schema with numeric fields for owners, pricing, CCU, and reviews.


Who is it for?

  • Indie game developers researching market positioning, pricing benchmarks, and genre saturation before launching a new title.
  • Game analysts and journalists who need ownership and revenue estimates for a specific game or a category of games.
  • Investors and publishers evaluating studios, tracking competitor performance, or building comparative dashboards.
  • Data scientists and researchers studying the Steam ecosystem, player behavior patterns, or genre trends over time.
  • Business intelligence teams integrating Steam market data into spreadsheets, BI tools, or automated reporting pipelines.

Use cases

  • Pull the all-time top 1,000 most-owned games on Steam and analyze which genres dominate in owner count vs. review score.
  • Monitor weekly shifts in the top-100-in-2-weeks list to spot breakout titles and viral indie hits.
  • Benchmark your upcoming game's genre: extract all RPGs or all Roguelikes and compare average price, playtime, and review ratios.
  • Build a competitive intelligence spreadsheet by feeding a list of competitor App IDs to appDetails mode and exporting to CSV.
  • Create an automated weekly Slack alert via Apify schedules + webhooks whenever a new title enters the top-100 ownership chart.

Why use SteamSpy Scraper?

  • No API key, no login: SteamSpy's public API is completely open — no credentials needed.
  • 19 data fields per game: ownership estimates, pricing, discount, CCU, positive/negative reviews, playtime, genre, tags, and more.
  • Bulk pagination: all mode pulls up to tens of thousands of games across multiple pages; appDetails mode accepts unlimited App ID lists.
  • Six flexible modes: top-100-forever, top-100-in-2-weeks, full catalog, by genre, by tag, or by specific App IDs.
  • Export-ready: push to CSV, JSON, Excel, or Google Sheets with one click from the Apify Console.
  • Pay-per-result pricing: you only pay for what you actually scrape — ideal for occasional market research pulls.

What data can you extract?

SteamSpy Scraper returns one row per game containing all available analytics fields from the SteamSpy API:

FieldTypeDescription
appidstringSteam application ID
namestringGame title
developerstringDeveloper name(s)
publisherstringPublisher name(s)
ownersRangestringEstimated owner range (e.g. "2,000,000 .. 5,000,000")
ownersMinnumberLower bound of ownership estimate
ownersMaxnumberUpper bound of ownership estimate
priceUsdnumberCurrent price in USD
initialPricenumberOriginal price before any discount (USD)
discountnumberCurrent discount percentage (0–100)
ccunumberPeak concurrent user count (all-time)
positivenumberNumber of positive reviews
negativenumberNumber of negative reviews
positivePercentnumberPercentage of positive reviews (0–100)
averagePlaytimeForevernumberAverage playtime in minutes (all players)
medianPlaytimenumberMedian playtime in minutes (all players)
genrestringPrimary genre(s)
languagesstringSupported languages
tagsstringComma-separated Steam community tags

Example output

{
"appid": "730",
"name": "Counter-Strike 2",
"developer": "Valve",
"publisher": "Valve",
"ownersRange": "200,000,000 .. 500,000,000",
"ownersMin": 200000000,
"ownersMax": 500000000,
"priceUsd": 0,
"initialPrice": 0,
"discount": 0,
"ccu": 1818773,
"positive": 4500000,
"negative": 1200000,
"positivePercent": 78.9,
"averagePlaytimeForever": 13420,
"medianPlaytime": 2400,
"genre": "Action, Free to Play",
"languages": "English, French, German, Spanish - Spain, ...",
"tags": "FPS, Shooter, Multiplayer, Competitive, Action, First-Person, ..."
}

How to use

Option A — Top 100 lists (quickest start)

Use this to get the top games ranked by all-time owners or recent popularity without any additional configuration.

Steps:

  1. Open the actor in Apify Console.
  2. Set Mode to top100forever or top100in2weeks.
  3. Click Run — results appear in seconds.

Input example:

{
"mode": "top100forever"
}

Option B — Browse by genre or tag

Use this to extract all games in a specific category for market research or competitive analysis.

Steps:

  1. Set Mode to byGenre or byTag.
  2. Enter your target in the Genre or Tag field (e.g. "Action", "Roguelike").
  3. Run — returns all games SteamSpy has for that category.

Input example:

{
"mode": "byGenre",
"genre": "RPG"
}

Option C — Specific App IDs

Use this to pull detailed analytics for a list of known games — ideal for competitor research.

Input example:

{
"mode": "appDetails",
"appIds": ["730", "570", "440", "271590", "1172470"]
}

Option D — Full catalog pagination

Use this to pull thousands of games ranked by owner count. Set maxResults to cap the output or 0 for unlimited.

Note: SteamSpy rate-limits the all endpoint to 1 request per minute per page. The actor waits 62 seconds between pages automatically. With maxResults=5000 (5 pages), expect ~5 minutes of run time.

Input example:

{
"mode": "all",
"maxResults": 2000
}

Input parameters

ParameterTypeDefaultDescription
modestring"top100forever"Scraping mode. One of: top100forever, top100in2weeks, all, byGenre, byTag, appDetails
appIdsarray[]List of Steam App IDs (strings or numbers) — used with mode=appDetails
genrestring""Genre to filter by (e.g. "Action", "Strategy") — used with mode=byGenre
tagstring""Tag to filter by (e.g. "Multiplayer", "Open World") — used with mode=byTag
maxResultsinteger1000Maximum rows to return. Set 0 for unlimited. Only applies to all and appDetails modes.
proxyobjectApify datacenterProxy configuration. Defaults to Apify's shared datacenter proxies.

Full input JSON:

{
"mode": "byTag",
"tag": "Roguelike",
"maxResults": 500,
"proxy": {
"useApifyProxy": true,
"apifyProxyGroups": []
}
}

Output example

{
"appid": "1091500",
"name": "Cyberpunk 2077",
"developer": "CD PROJEKT RED",
"publisher": "CD PROJEKT RED",
"ownersRange": "20,000,000 .. 50,000,000",
"ownersMin": 20000000,
"ownersMax": 50000000,
"priceUsd": 59.99,
"initialPrice": 59.99,
"discount": 0,
"ccu": 238084,
"positive": 620000,
"negative": 135000,
"positivePercent": 82.1,
"averagePlaytimeForever": 3720,
"medianPlaytime": 1560,
"genre": "Action, RPG",
"languages": "English, French, German, Polish, ...",
"tags": "Cyberpunk, Open World, RPG, Action, Story Rich, Sci-fi, ..."
}

Tips for best results

  • For market research: use mode=top100forever first to get a quick snapshot of dominant titles, then follow up with byGenre for niche deep-dives.
  • For bulk catalog pulls: set maxResults=1000 (1 page) for quick runs; bump to 5000 for broader coverage, but expect proportionally longer wait times due to rate limits.
  • For competitor tracking: use mode=appDetails with a curated list of competitor App IDs — you can find IDs from a game's Steam URL (store.steampowered.com/app/{APPID}/).
  • Ownership estimates: SteamSpy provides ranges (e.g. "2,000,000 .. 5,000,000"), not exact counts. Use ownersMin and ownersMax for lower and upper bound analysis.
  • CCU vs owners: high CCU relative to owner count indicates strong retention and active playerbase — a key quality signal.
  • Tags: the tags field is the richest categorization signal on SteamSpy, sourced from community-voted tags. Filter by tag for more granular research than genre alone.
  • Scheduling: set up a weekly Apify schedule on top100in2weeks to track trending titles over time in a persistent dataset.
  • Playtime signal: averagePlaytimeForever near 0 for a paid game often signals high refund rates — a red flag when evaluating quality.
  • Export to CSV: click "Export" → "CSV" in the dataset view for instant spreadsheet-ready output.
  • Combine with Steam Store API: use appid values from SteamSpy results as inputs to other Steam scrapers for screenshots, descriptions, and review text.

Integrations

SteamSpy Scraper works with every Apify integration out of the box:

  • Google Sheets: use the Google Sheets integration in Apify Console to auto-sync results to a spreadsheet after each run.
  • Slack: configure a webhook to post a Slack message whenever the actor finishes — great for weekly top-100 alerts.
  • Zapier / Make: trigger downstream workflows (email reports, database inserts, Airtable updates) on run completion.
  • Webhooks: set webhookUrl in your run configuration to receive a POST payload with the run result and dataset URL.
  • Scheduled runs: use Apify's built-in Scheduler to auto-run every Monday at 08:00 UTC and keep your dataset fresh.

API usage

cURL

curl -X POST \
"https://api.apify.com/v2/acts/logiover~steamspy-scraper/runs?token=YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"mode":"top100forever"}'

Node.js (Apify client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('logiover/steamspy-scraper').call({
mode: 'byGenre',
genre: 'Action',
maxResults: 500,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient(token="YOUR_API_TOKEN")
run = client.actor("logiover/steamspy-scraper").call(run_input={
"mode": "byTag",
"tag": "Roguelike",
"maxResults": 200,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["name"], item["ownersRange"], item["positivePercent"])

Use with AI agents (MCP)

SteamSpy Scraper is available as an MCP (Model Context Protocol) tool through Apify's MCP server. You can connect it to Claude, GPT-4, or any MCP-compatible AI agent and ask natural language questions like: "Find all Roguelike games on Steam with more than 1 million owners and a positive review rate above 80%" — the agent will call the scraper, receive the data, and reason over it automatically. Connect via https://mcp.apify.com and select this actor.


FAQ

Does this require an API key or login?

No. SteamSpy's API is public and keyless. You don't need a SteamSpy account, a Steam API key, or any credentials to use this actor.

How accurate are the ownership numbers?

SteamSpy provides statistical estimates derived from Steam achievement data and purchase history modeling. Numbers are rounded to ranges (e.g. "2,000,000 .. 5,000,000") and are generally considered reliable for ballpark market research, though not officially endorsed by Valve.

How many games can I scrape in one run?

  • top100forever and top100in2weeks: exactly 100 games per run.
  • byGenre and byTag: varies by category — typically 50–2,000 games depending on how populated the genre/tag is on SteamSpy.
  • all mode: up to tens of thousands across paginated pages.
  • appDetails: unlimited — as many App IDs as you provide.

Why does all mode take so long?

SteamSpy rate-limits the paginated catalog endpoint to 1 request per minute per page. The actor respects this and waits 62 seconds between pages. For 5,000 games (5 pages), expect ~5 minutes; for 10,000 games, ~10 minutes.

Why are some fields null or empty?

Not all games have complete data on SteamSpy. Niche titles, very old games, or recently released games may have missing genre, language, or pricing data. The actor always pushes whatever is available and leaves unset fields as null.

How do I export results to Excel?

In the Apify Console, open the run's Dataset tab, click ExportXLSX for Excel format, or CSV for spreadsheets.

Can I run multiple App ID lookups efficiently?

Yes. Use mode=appDetails and pass all your App IDs in the appIds array. The actor fetches them sequentially with a 1.1-second delay between each to respect SteamSpy's rate limit.

Is there a way to get data for a specific Steam tag?

Yes — use mode=byTag and set the tag field to any Steam community tag string (e.g. "Battle Royale", "Pixel Graphics", "Tower Defense"). Tag names must match SteamSpy's internal naming exactly.

How often is SteamSpy data updated?

SteamSpy refreshes its data approximately every 24 hours. Running this actor more than once per day will yield the same data; weekly or bi-weekly runs are sufficient for trend monitoring.

No. This actor uses the SteamSpy API (steamspy.com/api.php), which is a separate third-party service that aggregates and estimates Steam game statistics. It does not call Valve's official Steam Web API.

What's the difference between averagePlaytimeForever and medianPlaytime?

averagePlaytimeForever is the arithmetic mean of all recorded playtime (in minutes) across all players. medianPlaytime is the midpoint value — 50% of players have played more than this, 50% less. The median is often more useful because it's not skewed by extreme outliers (players with tens of thousands of hours).

Yes — combine SteamSpy Scraper output (which gives you appid values) with Steam Store scrapers for descriptions and screenshots, or use it alongside the logiover LinkedIn Company Scraper and B2B Lead Scraper for research on game studio teams.


SteamSpy Scraper accesses only the publicly available SteamSpy API, which is freely accessible to everyone without any authentication. The data returned is aggregated, anonymized, and does not include any personally identifiable information. This actor is intended for legitimate market research, competitive analysis, and business intelligence purposes. Users are responsible for ensuring their use of the extracted data complies with SteamSpy's Terms of Service and applicable data protection regulations. Scraping publicly available APIs for non-commercial research is generally considered lawful in most jurisdictions.


  • B2B Lead Scraper (logiover/b2b-lead-scraper) — find contact data for game studios and publishers using OpenStreetMap data.
  • LinkedIn Company Scraper (logiover/linkedin-company-scraper) — look up studio headcount, funding rounds, and job postings.
  • Tech Stack Detector (logiover/tech-stack-detector) — identify the tech infrastructure behind a game developer's website.
  • GitHub Activity Scraper (logiover/github-activity-scraper) — monitor open-source game engine repos and developer contributions.