この記事では、Steam公式Web APIをPythonから使い、アプリ一覧、同時接続数、実績、ニュースなどを取得する基本をまとめます。
Steam公式Web APIで扱う範囲
Steam Web APIは、SteamがWeb開発者向けに提供しているAPIです。公式ドキュメントでは、API呼び出しの基本形や出力形式、APIキーの取得方法が説明されています。
| 取得したいもの | 主な方法 |
|---|---|
| アプリ一覧 | ISteamApps/GetAppList |
| 現在の同時接続数 | ISteamUserStats/GetNumberOfCurrentPlayers |
| 実績情報 | ISteamUserStats 系API |
| ゲームニュース | ISteamNews/GetNewsForApp |
| 価格・レビュー本文 | Storefront API側で扱う |
アプリ一覧を取得する
import requests
url = "https://api.steampowered.com/ISteamApps/GetAppList/v2/"
response = requests.get(url, timeout=30)
response.raise_for_status()
apps = response.json()["applist"]["apps"]
print(len(apps))
print(apps[:3])アプリ一覧はAppIDの確認に使えます。後続の appdetails、appreviews、同時接続数取得ではAppIDが必要です。
同時接続数を取得する
import requests
appid = 730
url = "https://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1/"
params = {"appid": appid}
response = requests.get(url, params=params, timeout=30)
response.raise_for_status()
data = response.json()["response"]
print(data)この値は取得時点の現在値です。推移を見たい場合は、一定間隔で自前収集して保存します。
ニュースを取得する
import requests
appid = 730
url = "https://api.steampowered.com/ISteamNews/GetNewsForApp/v2/"
params = {
"appid": appid,
"count": 5,
"maxlength": 300,
"format": "json",
}
response = requests.get(url, params=params, timeout=30)
response.raise_for_status()
items = response.json()["appnews"]["newsitems"]
for item in items:
print(item["title"], item.get("url"))公式APIとStorefront APIの切り分け
Steamのデータ取得では、公式Web APIだけで完結しないことがあります。価格、発売日、ジャンル、レビュー本文はStorefront API側の appdetails や appreviews を使うほうが自然です。
- Steam appdetailsの使い方|価格・発売日・対応OS・ジャンルをPythonで取得
- Steam appreviewsの使い方|レビュー本文・評価サマリーをPythonで取得
- SteamSpyの使い方|推定オーナー数・タグ・CCU指標をPythonで取得
まとめ
Steam公式Web APIは、AppID確認、同時接続数、ニュース、実績情報などを扱う入口になります。一方で、ストアページ由来の価格やレビュー本文は別APIに分けて考えると、Steamデータ取得全体の見通しがよくなります。