この記事でできること:
SteamのWeb APIキーの取得 → 安全な保管 → Pythonでの動作確認までを、入口ページの流れに合わせて最短で解説します。
本記事は Steamガイド(入口ページ) の Step1補足 で、Step2「公式Web APIの使い方」の前提になります。
既存の関連:APIキーを安全に管理する方法:config.iniを用いたPythonでの設定ガイド
前提と注意(まず確認)
- ユーザーAPIキーはSteamアカウント+ドメイン名の登録で発行できます(利用規約への同意が必要)。
- APIによってはキー必須です(例:
ISteamUserStats.GetSchemaForGame)。一方、同時接続やニュース等はキー不要のものもあります。 - キーは秘匿情報です。公開リポジトリや記事本文に貼らないでください(漏えい時は Revoke → 再発行)。
取得手順(最短ルート)
- ブラウザで
https://steamcommunity.com/dev/apikeyを開き、Steamアカウントでサインイン。 - Domain Name に 自サイトの正引きドメインを入力(例:
anon-dsc.com)。
※スキーム(https://)やパスは不要。将来サブドメインを切るならその都度 Revoke → 再登録でOK。 - Steam Web API Terms of Use に同意して Register。画面に表示されたキーを控える(後で保管)。
- 誤って公開した/不要になった場合は、同ページからRevokeして失効できます。
安全な保管(サイト既存方針に合わせる)
本サイトでは既存記事「APIキーを安全に管理する方法:config.ini」の方針に合わせ、以下のいずれかで管理します。
- 方法A:環境変数(最も安全・サーバー運用向け)
ローカル設定例# macOS / Linux export STEAM_WEB_API_KEY="あなたのキー" python script.py # Windows PowerShell setx STEAM_WEB_API_KEY "あなたのキー" # 新しいターミナルを開き直してから python を実行 - 方法B:config.ini(既存記事と整合)
既存記事の体裁に合わせるなら[DEFAULT]セクションでOK。サービスごとに分けたい場合は[steam]などの専用セクションを用意します。
config.ini の例(どちらでも可); 既存記事と同じ最小形(DEFAULT) [DEFAULT] API_KEY = あなたのAPIキー ; セクション分離したい場合(任意)
[steam]
API_KEY = あなたのAPIキー
詳しい作り方は:APIキー管理(config.ini)
動作確認(Python最小サンプル)
GetSchemaForGame(キー必須)で、実績スキーマがJSONで取得できるかを確認します。
既存記事との整合のため、環境変数 → config.iniの順で読み込み、[steam]/API_KEY と [DEFAULT]/API_KEY の両方に対応します。 コピペ用サンプル(requestsのみ)
import os, requests, configparser
def load_steam_api_key(config_path=None):
# 1) 環境変数
key = os.getenv("STEAM_WEB_API_KEY")
if key and key.strip():
return key.strip()
# 2) config.ini(既存記事との整合:DEFAULT/steam 両対応)
paths = [config_path] if config_path else [
r"D:\Python\config\config.ini", # 任意の既定パス(必要に応じて変更)
"config.ini"
]
cfg = configparser.ConfigParser()
for p in paths:
try:
if not p: continue
if cfg.read(p, encoding="utf-8"):
# 優先順: [steam]/API_KEY → [DEFAULT]/API_KEY → [DEFAULT]/STEAM_WEB_API_KEY
for sect, opt in [("steam","API_KEY"), ("DEFAULT","API_KEY"), ("DEFAULT","STEAM_WEB_API_KEY")]:
if cfg.has_option(sect, opt):
val = cfg.get(sect, opt).strip()
if val:
return val
except Exception:
pass
raise SystemExit("APIキーが見つかりません。環境変数またはconfig.iniを設定してください。")
API_KEY = load_steam_api_key()
def get_schema_for_game(appid: int, lang="japanese"):
url = "https://api.steampowered.com/ISteamUserStats/GetSchemaForGame/v2/"
r = requests.get(url, params={"key": API_KEY, "appid": appid, "l": lang}, timeout=30)
r.raise_for_status()
return r.json().get("game", {})
appid = 2246340 # モンスターハンター ワイルズ(例)
schema = get_schema_for_game(appid)
achvs = (schema.get("availableGameStats") or {}).get("achievements") or []
print("OK - achievements:", len(achvs))
期待される出力: OK - achievements: <整数> が表示されれば、キー設定も通信も正常です。0 の場合は「実績なし」のタイトルというだけで異常ではありません。
キー不要APIの例:GetNumberOfCurrentPlayers(現在の同時接続)、GetNewsForApp(ニュース)。混在利用時は、呼び出し関数側で自動的に key を付与/省略する実装にすると便利です。詳細は 公式Web APIの使い方 を参照。
つまずきやすいポイント(Q&A)
- JSONDecodeError / Non-JSONレスポンス:キーが付いておらずHTMLが返っている可能性。まず本記事のサンプルで
OK - achievements:が出るか確認。 - Access is denied / Forbidden:キーのタイプミス・無効化・対象外エンドポイントなど。
GetSchemaForGameで鍵の有効性を切り分け。 - Domain Name は何を入れる?:自サイトの正引きドメイン(例:
anon-dsc.com)。スキーム(https://)やパスは不要。サブドメインは都度再登録でOK。
次のステップ
- 【How-to】公式Web APIの使い方(GetAppList/同時接続/実績/ニュース)
- APIキーを安全に管理する方法:config.iniを用いたPythonでの設定ガイド
- 【How-to】ストア情報(appdetails)
- 【How-to】レビュー本文(appreviews)
入口に戻る:Steamガイド
免責:本記事は公開情報の整理が目的です。仕様やメッセージは予告なく変わる可能性があります。最新の公式ドキュメントと利用規約をご確認ください。