India Fuel Pumps — Open Dataset
收藏资源简介:
一个开放的、机器可读的数据集,包含印度各地公共部门石油营销公司以及壳牌的每一个加油站:HPCL、IndianOil (IOCL)、BPCL、Jio-bp、Nayara 和 Shell。大约有103,000多个站点,每个站点都包含位置、联系方式、营业时间以及来源报告的每一种燃油产品和价格,完全按原样捕获——没有等级分类、没有过滤、没有假设。
An open, machine-readable dataset covering every gas station across India operated by public-sector oil marketing companies and Shell, including HPCL, IndianOil (IOCL), BPCL, Jio-bp, Nayara, and Shell. The dataset comprises more than 103,000 stations, with each entry providing the station's location, contact details, operating hours, plus all fuel products and their corresponding prices as reported by the original source. All data is captured exactly in its unmodified original form, with no tiered classification, no filtering, and no unwarranted assumptions introduced during data curation.
数据集概述
India Fuel Pumps 是一个开放、机器可读的数据集,收录了印度公共部门石油营销公司及壳牌(Shell)旗下的约 103,000 个加油站,涵盖印度石油(IOCL)、印度斯坦石油(HPCL)、巴拉特石油(BPCL)、Jio-bp、Nayara 和 Shell 六个品牌。每条记录包含加油站的位置、联系方式、营业时间,以及来源所报告的所有燃油产品和价格,且未做任何等级分类或过滤。
数据覆盖
| 品牌 | 加油站数量 | 数据来源 |
|---|---|---|
| HPCL | 约 23,950 | petrolpump.hpretail.in |
| IOCL (IndianOil) | 约 39,496 | locator.iocl.com |
| BPCL | 约 27,842 | api.cep.bpcl.in(与“BharatGas”应用同源) |
| Jio-bp | 约 2,294 | netmanager.ril.com(私有应用后端) |
| Nayara | 约 9,050 | nayaraenergy.com 加油站定位器 |
| Shell | 约 332 | shellretaillocator.geoapp.me(第三方定位组件) |
每条记录均包含 capturedAt 时间戳,标记数据抓取时间。Shell 另有一份独立的城市级价格表(22 个主要城市),因属于城市平均估算而非单站数据,因此未纳入本数据集。
记录结构(RawOutletRecord)
每条记录包含以下字段(原始保留,不做规范化处理):
- 品牌:
HPCL | IOCL | BPCL | JioBP | Nayara | Shell - 标识符:
outletId(来源方自有ID)、stationId(跨品牌去重键) - 来源信息:
sourceUrl、capturedAt - 位置:加油站名称(以实时页面为准)、地址、城市、邦、邮政编码、纬度、经度、地理哈希(geohash)
- 联系与营业:营业时间(文本)、联系电话、Google Maps 链接
- 产品列表:来源显示的所有燃油产品(如“XP100”“Speed 100”),以及每升价格(若无则不填)
关键设计原则:
- 实时页面上的加油站名称优先于静态列表。
- 城市和邦保持原始字符串,不做标准化或归并。
- 产品价格不做汇总、分类或丢弃,原样呈现。
- 数据集不包含任何燃料等级(如 E0)分类——等级判定由下游消费者自行完成。
数据格式
数据集采用 geohash 分片存储,便于地图客户端按需下载:
dataset/ index.json # 分片索引与元数据 shards/<geohash3>.<hash>.json # 每个约156公里单元内的加油站
- index.json 包含总加油站数、各品牌数量、分片列表(前缀、文件名、数量)及生成时间。
- 每个分片文件以内容哈希命名(SHA-256 前16位十六进制),若数据未变则文件名不变,便于 CDN 缓存。
- 全量数据约 103,000 条,解压后小于 50 MB,可直接完整加载。
使用方式
- 获取
dataset/index.json,了解分片列表。 - 并行下载与目标区域(边界框、城市或当前位置)相交的分片。
- 在内存中合并各分片的
RawOutletRecord[],自行进行后续分类、搜索或地图渲染。
数据可直接从仓库的 dataset/ 目录克隆或下载。
更新频率
- 每日 02:07 UTC 运行,超过 3 天未检查的加油站会被重新抓取,多数单元因已新鲜而被跳过。
- 每次运行生成 GitHub Release,包含新增/关闭加油站及价格变动的可读差异报告。
- 单品牌抓取失败不影响其他品牌,发布步骤会合并成功的品牌数据。
数据管道
由单个 GitHub Actions 工作流(.github/workflows/census.yml)编排:
- HPCL、IOCL、Jio-bp、Nayara、Shell 直接在 CI 中运行。
- BPCL 通过 Tailscale 出口节点(住宅 IP Raspberry Pi)运行,以规避对 GitHub Actions 数据中心 IP 的 403 限制。
- 管道具备部分失败容忍和断点续跑能力(通过工作日志恢复)。
源代码结构
src/ 目录包含各品牌的 Provider 实现、共享的可恢复工作池、及解析器。关键技术特点:
- 礼貌限速(约 2-3 请求/秒),请求头自带联系 URL。
- 抓取结果以
.jsonl.gz压缩存储(压缩约 7 倍)。 - 测试不使用网络,解析器基于真实浏览器捕获的 HTML/JSON 样本测试。
本地运行示例: bash npm install npm run census:hpcl # 运行 HPCL 全国普查 npm run census:iocl # 运行 IOCL 全国普查
... 其余品牌类似
数据来源与许可
- 数据来源于公开的官方石油公司加油站定位器(无需登录或访问受限数据)。
- BPCL 端点基于“BharatGas”Android 应用的静态字节码逆向;Jio-bp 端点为私有客户应用后端,但未使用任何登录凭据。
- 许可证:MIT——可自由用于商业或非商业目的,需保留版权和许可声明。
- 数据集为非官方数据,可能过时或存在错误,使用前建议通过电话核实。
贡献方式
- 若发现加油站信息错误、关闭或数据过时,可提交 Issue。
- 欢迎新增品牌作为新的
Provider实现。 - 计划中的众包可用性信号功能尚未构建。
相关项目
- E0 Finder:一个面向印度的乙醇-free(E0)汽油快速移动端地图,是该数据集的主要消费方,基于原始记录自行进行等级分类和置信度判断。仓库地址:https://gtxtreme.pages.dev/e0-finder(非官方,不隶属任何石油公司)。




