利用showapi提供的接口,根据地名查询快递
利用 Showapi 接口「根据地名 / 快递单号」查询快递物流(完整教程 + 代码)
Showapi(万维易源)提供了通用快递查询接口,支持根据快递单号自动识别快递公司、指定快递公司 + 单号精准查询两种核心方式,也可实现地名查快递网点 / 快递时效,全程通过GET/POST请求调用,步骤标准化、适配所有编程语言,以下是完整落地指南。
✅ 一、前置核心准备(必做)
- 账号与密钥获取
① 访问Showapi 官网,注册账号并完成实名认证;② 在「API 市场」搜索快递查询,选择推荐的「快递物流查询大全」接口(使用率最高、支持快递公司最多),点击免费开通;③ 进入控制台,复制 2 个核心参数(后续所有请求必传):
showapi_appid:应用唯一 ID
showapi_sign:接口密钥(签名验证用,切勿泄露) - 接口核心信息(快递查询主推)
Showapi 快递相关接口有多个,优先用「通用快递查询」 即可满足 99% 需求,其他拓展接口按需选择:
接口用途 接口地址 核心特点
✅通用快递查询(主推) https://route.showapi.com/64-19 支持单号自动识别快递公司、指定快递公司查询,返回完整物流轨迹
快递网点查询 https://route.showapi.com/64-47 根据省 / 市 / 区地名查询当地快递网点、联系方式、地址
快递时效查询 https://route.showapi.com/64-54 根据出发地 + 目的地地名,查询各快递公司的预估派送时效
快递公司编码查询 https://route.showapi.com/64-20 获取所有支持的快递公司编码(如顺丰 = sf、中通 = zt)
✅ 二、核心接口调用详解(重点)
▶️ 接口 1:通用快递物流查询(最常用)
✔️ 1. 请求参数(GET/POST 均可,推荐 GET)
这是根据快递单号查物流的核心接口,支持「自动识别快递公司」,参数分必填和可选,无冗余:
参数名 是否必填 取值 / 说明
showapi_appid ✅是 控制台获取的应用 ID
showapi_sign ✅是 控制台获取的接口密钥
num ✅是 快递单号(如SF1234567890、YT987654321)
com ❌否 快递公司编码(如顺丰sf、中通zt);
不传则自动识别,传则精准查询(推荐疑难单号传)
✅ 快递公司编码参考:顺丰sf、圆通yt、中通zt、申通sto、韵达yd、京东jd、邮政yzgn、极兔jt。
✔️ 2. 调用示例(3 种方式)
方式 1:浏览器 / Postman 直接调试(快速验证)
替换占位符,复制 URL 到浏览器即可返回结果:
url
https://route.showapi.com/64-19?showapi_appid=你的APPID&showapi_sign=你的密钥&num=你的快递单号
方式 2:curl 命令调用(服务器 / 终端调试)
bash
运行
curl "https://route.showapi.com/64-19?showapi_appid=123456&showapi_sign=abcdefg123&num=SF1234567890000"
方式 3:Python 代码调用(可直接运行)
适配 Python3.x,无需额外依赖(仅需requests库),含异常处理 + 结果解析,复制即用:
python
运行
import requests
def query_express(express_num, appid, sign, com=""):
"""
快递查询核心函数
:param express_num: 快递单号
:param appid: showapi_appid
:param sign: showapi_sign
:param com: 快递公司编码(可选,不传自动识别)
:return: 解析后的物流轨迹字典
"""
url = "https://route.showapi.com/64-19"
params = {
"showapi_appid": appid,
"showapi_sign": sign,
"num": express_num
}
# 若指定快递公司,追加参数
if com:
params["com"] = com
try:
res = requests.get(url, params=params, timeout=10)
res.raise_for_status() # 抛出HTTP请求错误
result = res.json()
# 接口请求成功(showapi_res_code=0为成功)
if result["showapi_res_code"] == 0:
return result["showapi_res_body"]
else:
return f"查询失败:{result['showapi_res_error']}"
except Exception as e:
return f"网络/请求异常:{str(e)}"
========== 使用示例 ==========
if name == "main":
# 替换成自己的appid和sign
MY_APPID = "你的showapi_appid"
MY_SIGN = "你的showapi_sign"
# 快递单号
EXPRESS_NUM = "SF1234567890000"
# 调用查询(不传com则自动识别快递公司)
express_data = query_express(EXPRESS_NUM, MY_APPID, MY_SIGN)
print("✅ 快递查询结果:")
print(express_data)
✔️ 3. 响应结果解析(JSON)
接口返回标准 JSON 格式,showapi_res_code=0代表请求成功,核心物流数据在showapi_res_body中,示例如下:
json
{
"showapi_res_code": 0,
"showapi_res_error": "",
"showapi_res_body": {
"com": "sf", // 快递公司编码
"comName": "顺丰速运",// 快递公司名称
"num": "SF123456789",// 快递单号
"status": "签收", // 物流状态:待揽收/运输中/派送中/签收/异常
"list": [ // 物流轨迹列表(倒序,最新的在最前)
{
"time": "2025-12-28 10:20:00",
"context": "【北京市】已签收,签收人:门卫"
},
{
"time": "2025-12-28 08:30:00",
"context": "【北京市】正在派送中"
},
{
"time": "2025-12-27 18:00:00",
"context": "【上海市】快件已发出,前往北京市"
}
]
}
}
▶️ 接口 2:根据地名查询快递网点(补充)
满足输入省 / 市 / 区地名,查当地快递网点的需求,比如查「杭州市西湖区」的顺丰 / 中通网点,参数 & 调用示例如下:
✔️ 1. 请求参数
参数名 是否必填 说明
showapi_appid ✅是 控制台 APPID
showapi_sign ✅是 控制台密钥
area ✅是 地名(如杭州市、杭州市西湖区、北京市朝阳区)
com ❌否 快递公司编码(不传则查所有快递网点)
✔️ 2. 调用 URL 示例
url
https://route.showapi.com/64-47?showapi_appid=你的APPID&showapi_sign=你的密钥&area=杭州市西湖区&com=sf
✅ 三、关键注意事项(避坑必备)
接口调用限制:免费版套餐有每日调用次数 / 频率限制(一般单日 100-500 次),超出会返回403/503错误,企业级需求可升级付费套餐;
快递单号识别:95% 的单号可自动识别快递公司,极少数疑难单号(如小众快递)需手动传com编码,可先调用「快递公司编码接口」获取完整编码表;
物流状态值:接口返回的status核心值:0=待揽收、1=运输中、2=派送中、3=签收、4=异常;
签名错误排查:若返回签名错误,检查 3 点:showapi_appid与showapi_sign是否匹配、参数是否拼接错误、是否有多余空格;
网络请求:接口支持HTTP/HTTPS,生产环境优先用 HTTPS,请求超时建议设置10s内;
地名精度:查快递网点时,地名越精准结果越准(如XX市XX区>XX市)。
✅ 四、扩展功能(按需实现)
物流轨迹格式化:将接口返回的list轨迹列表,按「时间正序」展示,适配前端展示;
异常物流告警:判断status=4(异常)时,触发短信 / 邮件告警;
多单号批量查询:循环调用核心查询函数,实现批量快递单号查询,结果汇总导出;
快递时效预估:调用64-54接口,传入「出发地 + 目的地」地名,返回各快递公司的预估派送时间(如「上海→北京,顺丰 1 天,中通 2 天」)。

浙公网安备 33010602011771号