この記事では、SteamSpy APIを使って、推定オーナー数、タグ、プレイ時間、CCU関連指標などをPythonで取得する方法をまとめます。
SteamSpyを使う前提
SteamSpyは、Steamの公開情報などをもとにゲームの所有者数や指標を推定する外部サービスです。公式のSteam販売本数ではありません。分析記事では、数値を断定的に扱わず、推定値・参考値として使います。
1本のゲーム情報を取得する
import requests
appid = 730
url = "https://steamspy.com/api.php"
params = {
"request": "appdetails",
"appid": appid,
}
response = requests.get(url, params=params, timeout=30)
response.raise_for_status()
data = response.json()
print(data.keys())
print(data.get("name"), data.get("owners"))必要な項目だけ整理する
def normalize_steamspy(data: dict) -> dict:
return {
"appid": data.get("appid"),
"name": data.get("name"),
"developer": data.get("developer"),
"publisher": data.get("publisher"),
"owners": data.get("owners"),
"average_forever": data.get("average_forever"),
"median_forever": data.get("median_forever"),
"ccu": data.get("ccu"),
"score_rank": data.get("score_rank"),
"positive": data.get("positive"),
"negative": data.get("negative"),
"tags": data.get("tags"),
}
row = normalize_steamspy(data)
print(row)複数AppIDをCSV保存する
import csv
import json
from pathlib import Path
from time import sleep
appids = [730, 578080, 2246340]
rows = []
for appid in appids:
params = {"request": "appdetails", "appid": appid}
response = requests.get(url, params=params, timeout=30)
response.raise_for_status()
data = response.json()
row = normalize_steamspy(data)
row["tags"] = json.dumps(row["tags"], ensure_ascii=False)
rows.append(row)
sleep(1)
csv_path = Path("outputs/steamspy.csv")
csv_path.parent.mkdir(parents=True, exist_ok=True)
with csv_path.open("w", encoding="utf-8-sig", newline="") as f:
writer = csv.DictWriter(f, fieldnames=rows[0].keys())
writer.writeheader()
writer.writerows(rows)タグを扱う
tags はタグ名とスコアの辞書として返ります。ジャンル比較や類似ゲーム探索に使えますが、Steam公式ジャンルとは別のユーザータグとして扱います。
tags = data.get("tags") or {}
top_tags = sorted(tags.items(), key=lambda x: x[1], reverse=True)[:10]
for tag, score in top_tags:
print(tag, score)分析時の注意
- ownersは推定値であり、実売数ではない
- 低販売本数・新作・無料配布直後のタイトルはぶれやすい
- Steam公式APIやStorefront APIの値と混同しない
- 重要な判断には単独で使わず、レビュー数やCCUなど複数指標と合わせる
関連記事
- Steam appdetailsの使い方|価格・発売日・対応OS・ジャンルをPythonで取得
- Steam appreviewsの使い方|レビュー本文・評価サマリーをPythonで取得
- Steam同時接続数を定期取得して可視化する方法|CCU推移をPythonで保存する
まとめ
SteamSpy APIは、推定オーナー数やタグ、CCUなどをまとめて見る補助データとして便利です。ただし公式な販売本数ではないため、推定値として扱い、レビュー数や同時接続数など他の公開データと合わせて読むのが現実的です。