公交线路站点查询API接口详解:免费获取全国公交路线数据
一、接口概述
接口盒子提供的公交线路站点查询API是一款免费的公共交通数据接口,用于查询全国公交线路的详细运营信息。该接口通过线路的唯一编号(UUID)可获取线路走向、途径站点、票价规则、运营时间等核心数据,适用于开发公交查询App、智慧交通系统、地图导航应用等场景。
核心特性:
- 权威数据:覆盖全国公交线路(含地铁、磁悬浮)
- 双请求支持:同时兼容GET/POST请求方式
- 数据层级可选:简略模式与详细坐标模式自由切换
- 免费调用:无日调用上限(需自备账号)
二、接口参数详解
请求地址
https://cn.apihz.cn/api/jiaotong/gongjiao2.php
请求方式
支持GET或POST
必要参数
参数名 | 必填 | 说明 |
id | 是 | 用户中心数字ID(需注册获取) |
key | 是 | 用户中心通讯秘钥(32位字符串) |
uuid | 是 | 全国唯一公交线路编号( 可从公交导航规划接口获取接口获取 ) |
可选参数
参数名 | 说明 |
type | 0=简略数据(默认),1=返回含详细坐标的数据(适用于地图绘制) |
三、返回数据结构
返回JSON格式数据,包含30+个公交运营关键字段:
字段名 | 说明 | 示例值 |
code | 状态码(200成功/400失败) | 200 |
msg | 操作结果消息 | "查询成功" |
station | 途径站点数组(含名称/UUID/经纬度) | [{...}] |
ticketcal | 计费模式(0单一/1按距离/2按站) | 1 |
ismanual | 售票方式(0人工/1无人) | 1 |
linetype | 线路类型(1公交/2地铁/3磁悬浮) | 1 |
totalprice | 全程票价(单位:分) | 200 |
length | 线路长度(米) | 38719 |
starttime | 始发车时间 | "05:30" |
endtime | 末班车时间 | "22:00" |
isbidirectional | 是否双向行驶(0单向/1双向) | 1 |
linename | 线路完整名称 | "648路(大北窑东-疃疃里三区)" |
company | 运营公司 | "北京公交集团第五分公司" |
完整字段参考:月票支持(ismonticket)、发车间隔(interval)、站点数(stationnum)等
四、调用示例
GET请求示例
bash
复制
https://cn.apihz.cn/api/jiaotong/gongjiao2.php? id=10000000& key=15he5h15ty854j5sr152hs2& uuid=23212& type=0
POST请求示例(PHP)
php
复制
<?php $api_url = "https://cn.apihz.cn/api/jiaotong/gongjiao2.php"; $post_data = [ 'id' => '10000000', // 替换为实际ID 'key' => 'your_key_here',// 替换为实际KEY 'uuid' => '23212', // 线路UUID 'type' => '0' // 简略模式 ]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $api_url); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); // 解析JSON响应 $result = json_decode($response, true); if($result['code'] == 200) { echo "线路名称: ".$result['linename']."\n"; echo "途径站点数: ".count($result['station']); } else { echo "查询失败: ".$result['msg']; } ?>
POST请求示例(Python)
python
运行
复制
import requests url = "https://cn.apihz.cn/api/jiaotong/gongjiao2.php" params = { "id": "10000000", # 替换为实际ID "key": "your_key_here",# 替换为实际KEY "uuid": "23212", # 线路UUID "type": "0" # 简略模式 } response = requests.post(url, data=params) data = response.json() if data['code'] == 200: print(f"线路: {data['linename']}") print(f"首班车: {data['starttime']} 末班车: {data['endtime']}") print("途径站点:") for station in data['station']: print(f"- {station['name']} ({station['uuid']})") else: print(f"错误: {data['msg']}")
五、返回数据示例
成功响应(200)
json
复制
{ "ticketcal": 1, "ismanual": 1, "linetype": 1, "totalprice": 0, "byuuid": 22133, "length": 38719, "ismonticket": 0, "endtime": "22:00", "increasedstep": 0, "starttime": "05:30", "startprice": 200, "increasedprice": 0, "stationnum": 39, "totaltime": 0, "station": [ {"name": "大北窑东", "uuid": "120045", "lonlat": "116.458358,39.906717"}, {"name": "八王坟东", "uuid": "127984", "lonlat": "116.47729,39.906558"}, ... // 其他37个站点 ], "isbidirectional": 1, "linename": "648路(大北窑东-疃疃里三区)", "interval": 600, "company": "北京公共交通控股(集团)有限公司第五客运分公司", "code": 200 }
失败响应(400)
json
复制
{"code":400,"msg":"查询失败,请重试。"}
六、使用注意事项
- 账号申请:
- 访问接口盒子用户中心注册获取专属ID/KEY
- 公共测试账号(id=88888888/key=88888888)有频次限制
- 线路UUID获取途径:
- 通过同平台的「公交站点查询接口」获取
- 使用「线路规划接口」返回结果中提取
- 数据模式选择建议:
- 图片代码
- 基础展示
- 地图绘制/导航
- 数据需求
- type=0
- type=1
- 错误排查:
- 400错误:检查UUID有效性或账号权限
- 空站点数据:确认线路非临时调整状态
七、典型应用场景
- 公交APP开发:实时展示线路详情页
- 智能站牌系统:生成电子路线图
- 行程规划工具:计算换乘方案与耗时
- 交通大数据分析:线网客流模拟与优化
官方文档参考:公交接口文档