この記事では、Steamでデータ取得を行う前に必要になる AppID の確認方法を解説します。
Steamのレビュー、ストア情報、同時接続数、ニュース、実績などを取得する場合、多くのAPIやエンドポイントでAppIDを指定します。AppIDを間違えると、別ゲーム、DLC、サウンドトラック、体験版などを取得してしまう場合があります。
本記事では、ストアURLからの確認、Steam検索、公式Web API、Storefront APIの appdetails による検証、Pythonでの一括取得までを整理します。
この記事でできること
- SteamのAppIDが何かを理解する
- ストアURLからAppIDを確認する
- ゲーム名からAppID候補を検索する
appdetailsでゲーム本体かどうかを確認する- PythonでURLやタイトル名からAppIDを取得する
- 複数タイトルのAppIDを一括取得してCSV保存する
- DLCやサウンドトラックを誤って選ばないための注意点を理解する
想定読者
- Steamレビューやストア情報をPythonで取得したい方
- Steam APIを使う前にAppIDを確認したい方
- ゲーム名からAppIDを一括で調べたい方
- レビュー分析や同時接続数分析の前処理を整えたい方
- DLCや別タイトルを誤取得しないようにしたい方
AppIDとは
AppIDとは、Steam上の各アプリに割り当てられている一意の数値IDです。ゲーム本体、DLC、体験版、サウンドトラック、ツールなど、それぞれにAppIDが割り当てられています。
たとえば、SteamのストアURLが以下のようになっている場合、2246340 がAppIDです。
https://store.steampowered.com/app/2246340/AppIDは、以下のようなデータ取得で使います。
| 用途 | 使うID | 例 |
|---|---|---|
| ストア情報の取得 | AppID | appdetails?appids=2246340 |
| レビュー取得 | AppID | appreviews/2246340 |
| 同時接続数の取得 | AppID | GetNumberOfCurrentPlayers |
| ニュース取得 | AppID | GetNewsForApp |
Steamデータ分析では、最初に正しいAppIDを確認しておくことが重要です。
方法1:ストアURLからAppIDを確認する
もっとも簡単なのは、SteamストアURLから確認する方法です。
https://store.steampowered.com/app/2246340/Monster_Hunter_Wilds/このURLでは、/app/ の直後にある 2246340 がAppIDです。
URLが分かっている場合は、この方法が最も確実です。検索結果や公式ストアページから対象ゲームのURLを開き、数値部分を確認します。
URLからAppIDを抽出するPythonコード
URLが複数ある場合は、PythonでAppIDを抽出できます。
import re
from urllib.parse import urlparse
def extract_appid_from_url(url: str) -> int | None:
"""
SteamストアURLからAppIDを抽出する。
通常の /app/<id>/ 形式に対応。
"""
if not url:
return None
path = urlparse(url.strip()).path
match = re.search(r"/app/(\d+)(?:/|$)", path, flags=re.IGNORECASE)
if match:
return int(match.group(1))
return None
url = "https://store.steampowered.com/app/2246340/Monster_Hunter_Wilds/"
appid = extract_appid_from_url(url)
print(appid)実行すると、以下のようにAppIDだけを取得できます。
2246340SteamストアURLが手元にある場合は、この方法を使うのがおすすめです。
方法2:Steamストア検索からAppID候補を探す
ゲーム名しか分からない場合は、Steamのストア検索を使って候補を探します。Pythonでは、Storefront APIの storesearch を使うと、検索語に一致するアプリ候補を取得できます。
なお、storesearch はSteam公式Web APIとは異なり、公式ドキュメントで細かく保証されているエンドポイントではありません。仕様変更の可能性があるため、実務では例外処理や確認工程を入れて使うのが安全です。
import requests
import pandas as pd
def search_steam_store(
query: str,
cc: str = "jp",
lang: str = "japanese",
limit: int = 10,
) -> pd.DataFrame:
"""
Steamストア検索からAppID候補を取得する。
"""
url = "https://store.steampowered.com/api/storesearch/"
params = {
"term": query,
"cc": cc,
"l": lang,
}
response = requests.get(url, params=params, timeout=30)
response.raise_for_status()
data = response.json()
items = data.get("items", [])
rows = []
for item in items[:limit]:
rows.append({
"appid": item.get("id") or item.get("appid"),
"name": item.get("name"),
"type": item.get("type"),
"price": item.get("price", {}).get("final") if isinstance(item.get("price"), dict) else None,
})
return pd.DataFrame(rows)
df_candidates = search_steam_store("モンスターハンター", limit=10)
print(df_candidates)検索結果には、ゲーム本体以外の候補が混ざる場合があります。そのため、候補をそのまま採用せず、次の appdetails で内容を確認します。
方法3:appdetailsでゲーム本体か確認する
候補AppIDが見つかったら、appdetails で詳細情報を確認します。特に重要なのは、type が game かどうかです。
DLCやサウンドトラックにもAppIDがあるため、レビュー分析や同時接続数分析でゲーム本体を対象にしたい場合は、必ず確認しておくのがおすすめです。
import requests
import json
def get_appdetails(
appid: int,
cc: str = "jp",
lang: str = "japanese",
) -> dict:
"""
Steam Storefront appdetails からアプリ詳細を取得する。
success=False の場合は空dictを返す。
"""
url = "https://store.steampowered.com/api/appdetails"
params = {
"appids": appid,
"cc": cc,
"l": lang,
}
response = requests.get(url, params=params, timeout=30)
response.raise_for_status()
data = response.json()
node = data.get(str(appid), {})
if not node.get("success"):
return {}
return node.get("data", {})
appid = 2246340
meta = get_appdetails(appid)
if not meta:
print("データを取得できませんでした。")
else:
print("AppID:", appid)
print("タイトル:", meta.get("name"))
print("type:", meta.get("type"))
print("発売日:", (meta.get("release_date") or {}).get("date"))
print("coming_soon:", (meta.get("release_date") or {}).get("coming_soon"))
price = meta.get("price_overview")
if price:
print("価格:", price.get("final_formatted"))出力例は以下です。
AppID: 2246340
タイトル: モンスターハンターワイルズ
type: game
発売日: 2025年2月27日
coming_soon: False
価格: ¥ 8,990type が game であれば、基本的にはゲーム本体として扱えます。dlc、demo、music、software などの場合は、分析対象として適切か確認してください。
方法4:公式Web APIのGetAppListから探す
Steam公式Web APIには、アプリ一覧を取得できる GetAppList があります。大量のアプリ名とAppIDを一覧で取得できるため、英語タイトルで検索したい場合に便利です。
ただし、GetAppList は件数が多く、名前が英語表記中心になる場合があります。日本語タイトルで探す場合は、先ほどの storesearch の方が見つけやすいことがあります。
import requests
import pandas as pd
def get_steam_applist() -> pd.DataFrame:
"""
Steam公式Web APIのGetAppListからアプリ一覧を取得する。
"""
url = "https://api.steampowered.com/ISteamApps/GetAppList/v2/"
response = requests.get(url, timeout=60)
response.raise_for_status()
data = response.json()
apps = data["applist"]["apps"]
return pd.DataFrame(apps)
df_apps = get_steam_applist()
print(df_apps.head())
print("件数:", len(df_apps))取得した一覧から、タイトル名で部分一致検索できます。
keyword = "Palworld"
df_match = (
df_apps[
df_apps["name"]
.fillna("")
.str.contains(keyword, case=False, regex=False)
]
.sort_values("name")
)
print(df_match.head(20))候補が見つかったら、必ず appdetails でゲーム本体かどうかを確認します。
方法5:複数タイトルのAppIDを一括取得する
レビュー分析やゲーム比較を行う場合、複数タイトルのAppIDを一括で取得したくなることがあります。ここでは、タイトル名リストを入力し、Steamストア検索と appdetails で候補を確認するコードを紹介します。
このコードでは、検索結果の上位候補を取得し、type == "game" の候補を優先します。完全自動で確定するのではなく、最後にCSVを目視確認する運用を想定しています。
import time
import requests
import pandas as pd
def search_steam_store_candidates(
query: str,
cc: str = "jp",
lang: str = "japanese",
limit: int = 5,
) -> list[dict]:
"""
Steamストア検索から候補を取得する。
"""
url = "https://store.steampowered.com/api/storesearch/"
params = {
"term": query,
"cc": cc,
"l": lang,
}
response = requests.get(url, params=params, timeout=30)
response.raise_for_status()
data = response.json()
items = data.get("items", [])
rows = []
for item in items[:limit]:
appid = item.get("id") or item.get("appid")
if not appid:
continue
rows.append({
"query": query,
"appid": int(appid),
"search_name": item.get("name"),
"search_type": item.get("type"),
})
return rows
def get_appdetails_safe(
appid: int,
cc: str = "jp",
lang: str = "japanese",
) -> dict:
"""
appdetailsを取得する。
取得できない場合は空dictを返す。
"""
url = "https://store.steampowered.com/api/appdetails"
params = {
"appids": appid,
"cc": cc,
"l": lang,
}
try:
response = requests.get(url, params=params, timeout=30)
response.raise_for_status()
data = response.json()
except Exception:
return {}
node = data.get(str(appid), {})
if not node.get("success"):
return {}
return node.get("data", {})
def resolve_steam_appids(
queries: list[str],
candidate_limit: int = 5,
sleep_sec: float = 0.5,
) -> pd.DataFrame:
"""
複数タイトル名からAppID候補を取得し、appdetailsで補完する。
"""
rows = []
for query in queries:
candidates = search_steam_store_candidates(
query=query,
limit=candidate_limit,
)
for rank, candidate in enumerate(candidates, start=1):
appid = candidate["appid"]
meta = get_appdetails_safe(appid)
rows.append({
"query": query,
"rank": rank,
"appid": appid,
"search_name": candidate.get("search_name"),
"name": meta.get("name"),
"type": meta.get("type"),
"release_date": (meta.get("release_date") or {}).get("date"),
"coming_soon": (meta.get("release_date") or {}).get("coming_soon"),
"is_game": meta.get("type") == "game",
})
time.sleep(sleep_sec)
return pd.DataFrame(rows)
queries = [
"モンスターハンター",
"Palworld",
"HoloCure",
]
df_resolved = resolve_steam_appids(
queries=queries,
candidate_limit=5,
sleep_sec=0.5,
)
df_resolved.to_csv(
"steam_appid_candidates.csv",
index=False,
encoding="utf-8-sig",
)
print(df_resolved)出力したCSVでは、検索語ごとに複数候補が並びます。rank、name、type、release_date を見て、分析対象として使うAppIDを確定します。
タイトルによっては、似た名前の別ゲームやDLCが上位に出る場合があります。自動取得結果をそのまま信じず、必ず候補名とAppIDを確認してください。
AppID確認時の注意点
AppIDを確認するときは、以下の点に注意してください。
- DLCやサウンドトラックを拾う場合がある
appdetailsのtypeを確認し、ゲーム本体かどうかを見ます。 - 似た名前の別タイトルが出る場合がある
検索語が短いと別ゲームが候補に出ることがあります。正式タイトルやストアURLで確認します。 - 日本語名と英語名で検索結果が変わる
見つからない場合は、日本語名・英語名の両方で検索します。 - Steam側の仕様変更があり得る
storesearchやappdetailsは仕様変更の可能性があります。例外処理を入れて使います。 - 短時間に大量リクエストしない
一括取得ではsleepを入れ、必要以上に連続アクセスしないようにします。 - 最終確認は目視で行う
自動マッチングだけで確定せず、CSVやストアページを見て確認します。
AppIDを確認した後にできること
AppIDが分かると、Steamのさまざまな情報を取得できるようになります。
| 取得したい情報 | 主な方法 | 関連記事 |
|---|---|---|
| APIキーを使う公式Web API | Steam Web API | Steam Web APIキーの取得方法|登録・保管・Pythonでの接続確認 |
| アプリ一覧・同時接続・ニュース | 公式Web API | Steam公式Web APIの使い方|アプリ一覧・同時接続・実績・ニュースをPythonで取得 |
| 価格・発売日・対応OS | appdetails | Steam appdetailsの使い方|価格・発売日・対応OS・ジャンルをPythonで取得 |
| レビュー本文・評価サマリー | appreviews | Steam appreviewsの使い方|レビュー本文・評価サマリーをPythonで取得 |
| 同時接続数の時系列 | 自前収集 | Steam同時接続数を自前収集して可視化する方法|CCUをPythonで定期取得 |
次に読む記事
- Steam Web APIキーの取得方法|登録・保管・Pythonでの接続確認
- Steam公式Web APIの使い方|アプリ一覧・同時接続・実績・ニュースをPythonで取得
- Steam appdetailsの使い方|価格・発売日・対応OS・ジャンルをPythonで取得
- Steam appreviewsの使い方|レビュー本文・評価サマリーをPythonで取得
- Steamの情報を取得する方法まとめ
まとめ
この記事では、SteamのAppIDを確認する方法を整理しました。
ストアURLが分かっている場合は、URL内の /app/数値/ を確認するのが最も簡単です。ゲーム名から探す場合は、Steamストア検索や公式Web APIの GetAppList を使って候補を取得できます。
ただし、候補にはDLC、体験版、サウンドトラック、別タイトルが混ざる場合があります。レビュー分析や同時接続数分析でゲーム本体を扱う場合は、appdetails で type やタイトル名を確認してから使うのがおすすめです。