Show HN:在全球燃油危机中追踪 Costco 的加油站价格
文章摘要
作者 Jack(HN 上的 lafond)住在坦帕,家几乎正好在两家 Costco 中间。多年来他每次加油都要在脑子里算同一道题:这周哪一家更便宜?问题是 Costco 从不在任何地方集中公布油价,官网把价格埋在各个仓储店的独立页面里,而他家附近这两家的定价又很少一致。Costco 的汽油是出了名的引流亏本品,通常比周边加油站低 15 到 20 美分——这个差价足以让绕路划算,却不足以让两家 Costco 之间的选择变得显而易见。2026 年春天油价一路攀升,他开始好奇:Costco 的价格是不是也在以同样的速度涨?如果油价继续涨,Costco 还撑得住把汽油当亏本引流品吗?没有现成的历史数据能回答,于是他自己造了一个。
抓数据的部分作者自嘲是整个项目里最容易的一环,「我倒希望能像 Waffle House 那个项目一样讲点酷炫的逆向手法,可惜 Costco 几乎没给我任何阻力」。他先翻到一个叫 AjaxGetGasPricesService 的接口,输入是用下划线拼接的仓储店 ID 列表(他吐槽用下划线当数组分隔符是个有趣的选择)——有用,但缺地理位置信息。再往下挖找到了真正想要的 AjaxWarehouseBrowseLookupView:按经纬度查询附近仓储店,加上 populateWarehouseDetails 参数后,响应里塞满了几乎所有你想知道的信息——地址、营业时间、提供的服务、有没有美食广场(作者特意加了两个感叹号),当然还有油价。
唯一的麻烦是这个接口每次最多返回 50 家、按距离排序。要覆盖全国约 600 家 Costco,他的办法很朴素:在地图上铺一张 3 度间隔的经纬度网格(纬度 25 到 50,经度 -125 到 -65),逐点扫描,再按仓储店 ID 去重,另外手工补上安克雷奇、费尔班克斯、火奴鲁鲁和卡胡卢伊四个点覆盖阿拉斯加与夏威夷。用 httpx 异步并发(带信号量限流、失败自动重试),整轮扫描不到 60 秒就能拿到全美所有 Costco 加油站的当前价格、地址和坐标。
存储选了 TimescaleDB——这本质上是个时序问题:同样 600 家店反复采样、永远保留历史读数。它是 Postgres 的扩展,作者能沿用熟悉的查询语言和工具链,还免费、上手快。前端是一个 Next.js 应用配 Tailwind,部署到 Cloudflare Workers(他说为此跟 Cloudflare 搏斗了一个略微恼人的下午)。他还特意给每个追踪的加油站建了独立页面并允许搜索引擎收录,这样下次有人站在 Costco 停车场里纠结该开去哪一家时,可以直接搜出来,而不用像他一样去逆向一个 API。
数据结论:在追踪的 159 天里,Costco 一共做了 39,112 次单店调价,平均每天 246 次;降价 21,102 次对涨价 18,010 次,净多出约 3,092 次降价。月度均价从 5 月的 $4.58 跌到 6 月的 $4.06、7 月 $4.04,8 月又回升到 $4.15。图表上标注了几个关键节点:6 月 17 日美伊达成协议、7 月 2 日协议破裂、7 月 23 日油轮再遭袭击、8 月 13 日胡塞武装袭击油轮。最便宜的州是印第安纳($3.19)、得州、俄克拉荷马、路易斯安那、田纳西;最贵的是加州($5.27)、华盛顿、内华达、俄勒冈、爱达荷。他的结论是:即便强大如 Costco 也逃不过霍尔木兹海峡的摆布,一家把汽油当作零头的公司最终还是得跟着市场走——只是慢一点。
文章的结尾是个自嘲的反转:花了几个月打磨这套「省下几分钱」的系统之后,他把 CRV 换成了 Tesla Model Y,如今每月车贷的增量远超他一辈子追逐 15 美分差价能省下的钱——「就在我终于有了基础设施来回答『我该去哪家 Costco』的那一刻,我让这个问题对我个人永久性地失去了意义」。8 月 25 日的更新说,帖子上 HN 之后他又搞定了美国以外的追踪,加拿大、墨西哥、澳大利亚、日本、英国和台湾现在都支持了。
HN 评论精华
这条 Show HN 拿到 128 分。技术层面的讨论其实不多,评论区绝大部分注意力落在了三件事上:Costco 加油站的排队与定价机制、「全球燃油危机」这个标题是否夸张,以及各种替代数据源。
- 最热的一条是关于标题的争论。xp84 质疑「全球燃油危机」用词夸张:美国油价从长期稳定的 $3.20 涨到 $4.05,涨幅约 26%,「真正的燃油危机是现在的莫斯科——排队几英里,排到最前面还可能因为炼油厂被炸而拿不到油,或者至少是 1970 年代的石油危机。26% 的涨幅是重大困扰,不是危机」,他还猜测标题作者有政治立场,并追问 2022 年油价从 $2.80 涨到 $4.93(涨幅 76%)时怎么不叫危机。作者 lafond 亲自回复:「完全没有政治立场,只是一个想追踪油价的人」,措辞来自维基百科对 2026 年霍尔木兹海峡危机的普遍描述,而 2022 年他还没开始追踪油价。tantalor 也贴出维基条目说这确实被称为「全球性燃油危机」。sp4cec0wb0y 提醒「美国不等于全球」。gbear605 说他家附近从 2025 年初的每加仑 $1.85 涨到现在约 $4.30,涨了 250%,「不一定叫危机,但确实是重大冲击」。住在越南的 Saigonautica 提供了一手观察:胡志明市这几个月确实有短队(等 2 到 5 分钟),几家不太正规的加油站囤积居奇后关门,但基本还是照常营业;他的周油费从 5 万越南盾涨到 6 万(约 2 美元到 2.5 美元),倒是运费和进口生鲜的价格明显上涨,或者品质下降了。
- Costco 到底怎么定价,jopolous 提供了打工时的第一手答案:大学期间他在 Costco 工作,亲眼见过自家仓储店的油价是怎么定的——派个人开车去附近几家加油站抄价,然后把自家定得低约 10 美分。「就这样。定价就是这么定的。」他还补了一句 Costco 是很好的大学生打工去处,夏天在那里干活被尊重地对待。Aboutplants 推测总部给的是一个成本底价,各店在此之上有「比最近竞争对手低 10 美分以内」的灵活度。1970-01-01 和 0cf8612b2e1e 就「亏本引流」的说法交换了看法,后者一直以为 Costco 是靠更好的采购条款和长期合约压价,而不是真在亏钱。otherme123 算了笔账:一箱油 15 加仑,让 10 美分等于每次亏 1.5 美元,但换来的是一批已经开进你停车场、还刚刚产生「油这么贵得少跑冤枉路」念头的顾客——「既然都来了,顺便买点要用的吧」。
- 排队问题几乎是 Costco 加油讨论的固定节目。jerlam 开场就说「可惜没有 API 能查 Costco 加油站的实时排队时长,我不会为了省 5 美元多花一小时」,作者回应「要是他们真把这数据暴露出来,加到网站上会很好玩」。duzer65657 说在加拿大他从不去 Costco 加油,队伍长得吓人。nightpool 给出了反驳:他常去一家非常繁忙的 Costco,队伍看着很吓人但效率极高——一是 Costco 的加油管特别长,可以够到车的另一侧;二是中间留了一条道,前车加完前你也能进出,所以哪怕排 50 辆车平均也只等 5 分钟左右。walrus01 补充了同样的软管技巧,并说在西华盛顿州他根本不需要「追踪」价格,本地 Costco 永远是最便宜的,光省下的油钱就够会员费了。
- 替代数据源与方法学:culi 推荐 GasBuddy,能看全国和分区域的加油站均价,数据可以回溯 25 年以上(从 2000 年 6 月开始),只要会玩 query 参数。他同时提出一个重要的方法论警告:Costco 的价格很好,但不该用来算「全国均价」,因为你会不可避免地过度代表那些更容易建 Costco 的地区。art222 从业者角度支持作者的选择:他做车辆挂牌价格,「用户上报价格」和「源站实际显示价格」之间的差距基本就是他产品存在的理由,从仓储店官方数字抓取是对的做法,哪怕覆盖面更小。hackernud3s 贴了另一个带热力图的油价追踪站。
- 波兰的 neuralfog 分享了一个更硬核的同类项目:当地没有可靠的加油站泵价数据源,于是他改为预测趋势、给出「现在加还是再等等」的信号;模型输入包括布伦特原油、美元汇率、裂解价差、批发价(当地 Orlen 垄断反而方便)、谷歌地图众包数据,甚至从加油站直播画面里抓数字,对 1 到 7 天窗口能做到 80% 到 92% 的准确率。他还顺带指出:数据分析显示上次议会选举前政府显著压低了 Orlen 的裂解价差。
- phainopepla2 感慨夏威夷远在太平洋中间 3000 英里外,油价却比加州大部分地方还便宜。nomel 给出了详细解释:不只是税,加州用的是独有的 CARBOB 配方汽油,生产它的炼油厂已有 17% 关停,导致政策立场大幅转向支持石油以留住炼油厂,同时需要从亚洲海运进口 20%、从巴哈马进口 40%——「加州今年走向高油价去年就上过新闻,但没人记得,都去怪伊朗冲突了」。