haha1.cn蒸汽榜

公开数据接口

一个每天记录 Steam 在线人数的数据站:不卖游戏、不做导购,只把"某款游戏现在有多少人在玩、这一周是怎么变的"记下来并公开。

所有数字来自 Steam 公开的玩家接口(IPlayerService / 官方最多人玩榜),本站负责每小时采集、存库、算口径、公开出来。 每小时更新一次,固定在每小时的第 8 分钟左右;每个文件里都带 updated_at,以它为准。 不需要 key、不需要登录,直接 HTTP GET 就是 JSON。

给 AI 工具读的同一份说明还有个纯文本版:/llms.txt,内容一字不差,只是排版不同。

有哪些文件

按需要挑着拉。前三份能回答绝大多数问题:先拿 games.json 对上 appid,再看 top.json 要此刻的状态, 要讲"这一周怎么走的"就取那款的 history/<appid>.json。

实时榜:此刻在 Steam 官方"最多人玩榜"里的游戏,按本站实测的当前在线排序

什么时候用:想知道"现在谁在最多人玩"、要一款游戏的当前在线/24H 峰值/较昨日/是否免费/好评率/类型标签——大多数问题这一份就够

顶层:updated_at / date / pool_size / tracked_size / all_size / total_players / games[]

数组元素:rank / appid / pool_kind / name / name_en / unnamed / current / peak24h / change_pct / prev_same_time / vs_peak_pct / trend / new_entry / official_rank / ever_official / release_date / retired / gl / at_max / spark / spark_dir / added_at / genres / publishers / tags / is_free / reviews / header_image

/data/history/<appid>.json每款约 20~80 KB

单款游戏的时间序列:逐日日线 + 最近一段逐小时采样 + 商店资料 + 评价

什么时候用:要讲"这一周它是怎么走的"、要画图、要算连续几天在掉——用这个,别去翻大文件

顶层:appid / name / name_en / added_at / current / all_time_max / pool_kind / retired / gl / profile / reviews / days[] / hourly[]

数组元素:days: date / max / avg / last / samples / hourly: at / players

名字对照表:本站跟踪的每款游戏 appid ↔ 中文名 / 英文名

什么时候用:手上只有游戏名、要先拿到 appid 再查别的文件——从这份开始

顶层:数组,每项 appid / name / name_en

纪录墙:每款游戏在本站记到的最高在线,外加涨最多 / 跌最多 / 突然冲高三个切片

什么时候用:要"谁破了纪录""这周谁掉得最狠"这类对比

顶层:updated_at / records[] / recent[] / gains[] / losses[] / spikes[]

数组元素:appid / name / name_en / record_players / record_date / current / vs_record_pct

涨跌榜四个档:实时 / 昨日 / 近 7 天 / 近 30 天,每档一份涨榜和跌榜

什么时候用:要"最近谁在涨谁在掉",且想指定比较窗口

顶层:updated_at / date / tabs.live / tabs.daily / tabs.weekly / tabs.monthly

数组元素:每个 tab: label / from / to / prev_from / prev_to / games[]

/data/just-released.json约 210 KB大文件,请缓存后用

最新上架:按发售日期分组的新游和它们的首周人数

什么时候用:关心"刚上线的游戏表现怎么样"

顶层:updated_at / latest / days[] / by_date

/data/new-games.json约 1.3 MB大文件,请缓存后用

新游榜:观察池里所有新游戏的完整榜单与多窗口数据

什么时候用:只有要做全量新游分析时才拉;日常用 just-released.json 就够

顶层:updated_at / window_days / cutoff / games[] / periods

/data/rankings.json约 2 MB大文件,请缓存后用

日榜 / 周榜 / 月榜的完整榜单(每期的区间峰值、均值、覆盖天数)

什么时候用:要按自然周期回看排名。文件大,请缓存后使用,别反复全量拉

顶层:updated_at / periods.daily / periods.weekly / periods.monthly

数组元素:每个 period: label / from / to / games[]

三条口径(引用前必读)

这三条写错,数字本身没错,结论却是错的——也是我们在别处最常看到的错法。

  1. 1. "历史最高"一律是"本站收录以来"

    at_max / all_time_max 是从本站开始跟踪这款游戏那天算的,不是 Steam 官方全时段最高。这款游戏在我们收录之前可能火得多得多。要引用"新高",请写成"本站收录以来新高",收录起点看 added_at。

  2. 2. 两个百分比不是一回事

    change_pct 是"此刻在线 vs 昨天同一时刻",会随几点看而变;vs_peak_pct 是"今天已经出现的日峰值 vs 昨天的日峰值",两端都是日峰值,正数意味着今天已经破了昨天的纪录。引用时必须说清用的哪一个。

  3. 3. 拿不到就是 null,不是 0

    字段为 null 表示这个数本站当前取不到(商店资料还没同步、昨日同一时刻没有采样、这款游戏还没进池子),不能当成 0 人在线,也不能据此下判断。

字段都是怎么算的

解释和站内各处用的是同一份名词表(首页、榜单页、详情页看到的话在这里一字不差), 所以不会出现"页面上的当前在线"和"JSON 里的 current"是两回事。

字段出现在含义
updated_at每个文件更新:最近一轮抓取完成的时间(北京时间)。本站每小时自动抓一次,两次之间数字不会自己变。 如果你的页面数字是旧的,刷新即可拿到最新一期。
currenttop / history / records当前在线:最近一轮抓取时刻,这款游戏的同时在线人数,来自 Steam 官方接口。 本站每小时抓一次,两次抓取之间真实人数一直在变,你看到的是最近那一次的快照。
peak24htop24H 峰值:从这一刻往前数 24 小时内,采样到的最高同时在线人数,每小时滚动更新。 注意:它不是"昨日峰值"——昨日峰值指昨天 0 点到 24 点那个自然日的最高值(日榜用的是那个口径)。
change_pcttop见上面「三条口径」第 2 条:两个百分比不是一回事。
vs_peak_pcttop见上面「三条口径」第 2 条:两个百分比不是一回事。
prev_same_timetop昨天同一时刻本站采到的在线人数,用来算 change_pct;那天那个时间没采样就是 null。
trendtop走势箭头:箭头方向跟"较昨日"的符号走:涨为↑、跌为↓、持平或不可比为 –。 数字为"较昨日",详见该词条。
at_maxtop(history 里同义字段叫 all_time_max)见上面「三条口径」第 1 条:本站收录以来,不是 Steam 官方全时段最高。
added_attop / history本站第一次收录这款游戏的时间。它决定了 at_max 的起点,所以引用"新高"前先看这个。
pool_kindtop / historymain=正式池,进实时榜和全部游戏榜;new=新品观察池,只进新游榜和最新上架。
new_entrytop新上榜:本站最近才第一次收录到这款游戏,所以没有可对比的历史数据。 注意它不等于"新发售":发售几年的游戏,只要本站刚把它加进跟踪名单,也会先标一段时间。
official_ranktopSteam 官方榜:Steam 自己公布的"最多人玩榜",只有前 100 名,本站每小时向官方接口取一次这份名单。 官方给的是名单、名次和一个按周汇总的峰值人数,不是实时在线;所以本站再对每款游戏单独实测当前在线来排序。
ever_officialtop曾进官方榜:这款游戏上过 Steam 官方"最多人玩榜"前 100,后来掉出来了,本站仍在继续逐小时实测它的人数。 有这个标记 = 它是"从官方榜掉下来"的那一类,不是我们另外找来的长尾。
release_datetop / history.profile上线时间:Steam 商店页公开的发售日期,由本站每日同步。 抢先体验(Early Access)的游戏取"最早开启抢先体验"和"正式版发售"两个日期里更早的那个,所以这里的日期通常比正式版早。 个别游戏 Steam 没公开日期(写"即将推出"),这一格就是空的。 全部游戏榜上"上线"那一档筛选就是按这一格算:今天 / 近 3 天 / 近 7 天按整天数、近 1、2、3 个月按日历月回退,窗口两头都含当天;这一格为空的游戏在任何时间档里都不会出现。
retiredtop / history已停止跟踪:连续 30 天在线人数都是 0 的游戏,本站不再抓取,也不进任何榜单(首页、榜单、搜索、分类榜都看不到)。 历史数据仍保留,所以直接访问它的详情页还能看到过去的曲线。
is_freetop / history.profile免费开玩 / 买断制:「免费开玩」= Steam 商店给这款打的免费标记,下载不要钱(道具、季票另算)。 「买断制」= Steam 标了它需要购买才能玩。 数据来自 Steam 商店接口,本站每天与商店同步一次;刚收录、或商店暂时查不到的游戏落在「本站还没查到」里,不会被硬算成买断制。 所以选「要买(买断制)」时看到的款数会比总数少一截,缺的就是还没查到的。
genrestop / history.profile官方类型:Steam 商店页给这款游戏打的官方类型标签(动作、冒险、角色扮演、大型多人在线…),一共就十几个,一款可以有好几个。 筛"官方类型"时,一款只要有这个标签就会出现,所以在"动作"里出现过的游戏,在"角色扮演"里也可能出现,各类型款数相加会大于总数。 想要更细的分类(第一人称射击、开放世界、沙盒…)用旁边的"社区标签"筛。 注意:商店还没同步到类型的游戏不会被任何类型筛出来(榜单下方那行小字写明缺了多少款)。
tagstop / history.profile社区标签:Steam 商店页"热门用户自定义标签"的前几名,是玩家自己贴的,比官方类型细得多:第一人称射击、开放世界、沙盒、 PvE、生存 crafting… 游戏名字后面的小标签就是这个(排在官方类型后面,和官方类型重复的词不重复显示),鼠标停上去能看到它的全部标签。 同一款游戏可以有很多个标签,所以按标签筛出来的款数相加会大于总数。 注意:标签是本站每天从商店页抓的,少数游戏还没抓到(榜单下方那行小字写明缺多少款),选标签时它们不会出现。
reviewstop / history好评率:好评率 = 好评数 ÷ 评测总数 × 100%,数据来自 Steam 商店页的评测汇总(全部语言、不分平台)。 门槛:评测总数不足 1000 条的不参与"好评率最高"排名,不足 300 条的不参与"好评率最低"排名,都不进这两块榜——几十条评测的游戏,几个差评就能把百分比甩出去一大截,排出来没有意义。 差评率就是 100% 减好评率,所以"差评率最高"和"好评率最低"是同一件事的两种说法,格子里一律显示好评率。 本站每小时滚动刷新 40 款,全池约一天转完一圈,所以这里的数字最多比商店晚一天。
days[].maxhistory当日峰值:这一个自然日(北京时间 0 点到 24 点)里采到的最高同时在线人数。 和"24H 峰值"的区别:那是从现在往前数 24 小时的滚动窗口,这个是按天切开的整日最高值。
days[].avghistory当日均值:当日各轮采样在线人数的平均值,反映这一天的常态水位;峰值高但均值低,说明只有少数时段冲得高。
days[].lasthistory当日最后:这一天最后一轮采样的在线人数,代表它当天收工时的状态;和峰值的差,能看出当天晚高峰离收盘有多远。
days[].sampleshistory采样次数:这一天实际抓到数据的轮数(本站每小时一轮,满打满算 24 轮)。 不足 24 是关机、维护或网络中断造成的,均值口径按实际有数据的轮数算。
hourly[]history每小时线:本站每小时采一次在线人数,逐点连成的曲线,只保留最近 7 天。 更早的历史只能看每日线:每天存当日峰值、均值和采样次数。
spark / spark_dirtop最近若干天日峰值折成的 0~9 档位串('-' 表示那天没数据)和首尾对比出的涨跌,页面上那条小曲线就是它。只要数值就别用它,用 history 里的 days。
gltop / history这款有没有已放行的"蒸汽档案"(站内那篇长文)。true 时详情页有入口。
total_playerstop / tracked总在线:把本站当前跟踪的所有游戏(全部游戏榜)此刻的在线人数加起来。 只是本站跟踪的这批游戏的合计,不等于 Steam 全站人数;已停止跟踪的游戏不计入。
pool_size / tracked_size / all_sizetoppool_size=此刻实时榜有多少款(官方榜里本站能取到人数的);tracked_size=本站在逐小时跟踪的款数;all_size=库里收录过的全部条目数。三个数不一样是正常的。

这些数据我们没有

列出来是怕你(或你用的 AI)拿不到就自己补。下面这些本站一个字段都没有,问到也答不了:

本站立场

在线人数是一个时刻的快照,不是一款游戏的生死判决。同一时刻五千人和一小时后的五千人,不一定是同一批人;靠几千个固定玩家也能活很多年的小品类多的是。请不要拿单日读数写"这游戏凉了"。

使用与引用

这份说明由 web/lib/data-api.mjs 一处生成:本页和 /llms.txt 都从它渲染, 所以不会出现"给人看一套、给机器看一套"。有出入以本页为准,并欢迎告诉我们。

haha1.cn蒸汽榜 · 数据来自 Steam 公开接口 · 名词解释与免责