说明本文基于公开文档与文章整理未对每个接口做真实请求实测接口可用性以公开文档为准集成前请自行验证。写在前面电商、生鲜、跨境订单里经常出现一个诉求发货前想知道从 A 地寄到 B 地大概几天到发货后又想**这个单号预计哪天能签收**。这类需求对应的就是「物流时效查询 / 预估送达时间」接口。先说两点通用提醒市面同类接口数量不少但不少免费接口可能已停止服务、或只返回占位/演示数据集成前请自行发一次请求验证「预估送达时间」本质是基于历史数据的算法预测不是确定性承诺返回的往往是预计 X 小时可达 / 预计 X 月 X 日可达这类带置信度的估计业务上建议把它当参考值而非死承诺本文未做真实请求实测所有参数、返回示例均来自公开文档字段与写法以各家官方文档为准。1. 接口总览接口请求方式说明需要 Key来源类型万维易源ShowAPI物流时效查询POST / GET传起止地址 快递编码返回预计用时小时需自备 appKey第三方平台本文按官方文档整理发货前时效预估按地址POST传始发/目的省市区返回预计时效与送达时间需自备 key第三方平台本文按公开文档整理发货后时效预测按单号POST传快递单号 目的地预测到达时间与线路需自备 key第三方平台本文按公开文档整理百递云智能时效预估POST在物流查询基础上返回预计送达时间 准确率 probability 字段需自备 key第三方平台本文按公开文档整理2. 万维易源ShowAPI物流时效查询定位传「发货地 目的地 快递公司编码」返回预计运输用时小时。属于发货前按地址预估时长这一类返回的是单一数值型时长字段适合做时效档位判断如是否次日达。接入点需自备 appKey本文按官方文档整理接入写法不返回真实业务数据。请求参数参数名类型必填说明from_addressString是发货地省市区地址如云南省昆明市西山区to_addressString是目的地省市区地址如广东省深圳市福田区comString是快递编码如shunfeng请求示例写法示意POST 易源物流时效查询接入点?appKeyYOUR_APPKEY Content-Type: application/x-www-form-urlencoded from_address云南省昆明市西山区to_address广东省深圳市福田区comshunfeng返回示例结构示意{ showapi_res_code: 0, showapi_res_body: { ret_code: 0, pre_cost_hour: 25 } }showapi_res_body.pre_cost_hour为预计用时小时ret_code 0表示查询成功。注意事项快递公司编码com用统一编码如顺丰对应shunfeng传地址时用省市区全称避免深圳福田这类省略写法该接口返回的是时长而非具体送达日期需要某天可达要在本地按时长换算需自备 appKey付费规格本文未做真实请求。3. 发货前时效预估按地址定位未下单前根据始发地与目的地预估某家快递的运输时长用于下单前给用户预计 X 天达。比上一节多返回了预计送达日期、预计送达时段、预估行驶线路。接入点需自备 key本文按公开文档整理不返回真实业务数据。请求参数参数名类型必填说明shipperCodeString是快递公司编码如 STO 申通sendProvince / sendCity / sendAreaString是始发省 / 市 / 区县sendAddressString否始发详细地址receiveProvince / receiveCity / receiveAreaString是目的省 / 市 / 区县receiveAddressString否目的详细地址catchTimeString否揽收时间不传默认取当前时间快递公司编码示例STO申通、YTO圆通、YD韵达、ZTO中通、SF顺丰、JD京东、EMS邮政、DBL德邦、JTSD极兔、CNSD菜鸟速递。返回示例结构示意{ code: 200, msg: 成功, data: { Hour: 24h, DeliveryDate: 2024-11-14, DeliveryTime: 11月14日下午可达, PredictPath: 浙江杭州转运中心-江苏南京转运中心 } }注意事项Hour是预计时效小时级DeliveryTime是某天某时段可达PredictPath是预估走的线路顺丰等部分公司对发货前预估支持有限按文档为准。4. 发货后时效预测按单号定位已发货根据快递单号 目的地预测这个单预计哪天送达并可结合物流轨迹接口查询当前位置。是发货后查询这一类。请求参数在发货前预估参数基础上增加参数名类型必填说明logisticCodeString是快递单号senderPhone / receivePhoneString否寄/收件人后四位手机尾号顺丰时需二者至少传一个返回示例结构示意{ code: 200, data: { LogisticCode: 78854085582018, Hour: 24h, DeliveryDate: 2024-11-14, DeliveryTime: 11月14日下午可达, PredictPath: 浙江杭州转运中心-江苏南京转运中心, LatestStation: xx转运中心 } }注意事项顺丰查详细时效/轨迹常需手机尾号验证LatestStation等最新轨迹字段依赖该单是否已有物流回传刚下单未揽收时可能为空。5. 百递云智能时效预估定位在物流查询接口基础上叠加智能时效预估模型返回预计送达时间并新增probability字段实时返回预测准确率如 90%让用户知道这个估计有多可信。接入方式调用物流查询接口时在请求参数里把智能时效预估开关resultv2字段取值 8打开即可返回结果会新增probability历史接入方案无需改造。返回新增字段{ probability: 90 }注意事项probability是预测置信度百分比不是送达保证底层依赖历史物流数据越临近目的地的单预测越准需自备 key本文未做真实请求。横向对比事实对照维度易源(ShowAPI)发货前预估发货后预测百递云智能预估是否需 key需 appKey需 key需 key需 key是否按单号否按地址否按地址是是查物流返回粒度预计用时(小时)时效日期线路时效日期线路最新轨迹送达时间准确率有置信度字段无无无有(proprobability)各有取舍没有全能最优按你自己的成本、精度与是否要置信度的需求来选。生产环境参考实现多源降级把不同源列为对等节点发请求并落业务字段、失败就切下一源各源排序与优先级交由调用方决定。基地址与 key 用占位常量。import requests, time # 各源接入点与 key 都在这配置BASE 用占位常量不要写死真实网关地址 BASE_EY 你的接口网关地址 # 易源(ShowAPI)物流时效接入点 BASE_PRE 你的接口网关地址 # 发货前预估接入点 BASE_POST 你的接口网关地址 # 发货后预测接入点 API_KEY YOUR_APPKEY # 自备 key def call_ey(from_address, to_address, com): r requests.post(BASE_EY, params{appKey: API_KEY}, data{from_address: from_address, to_address: to_address, com: com}, timeout5) body r.json()[showapi_res_body] assert body.get(ret_code) 0, 易源返回异常 return {pre_cost_hour: body.get(pre_cost_hour)} def call_pre(shipper, sp, sc, sa, rp, rc, ra): r requests.post(BASE_PRE, params{appKey: API_KEY}, data{shipperCode: shipper, sendProvince: sp, sendCity: sc, sendArea: sa, receiveProvince: rp, receiveCity: rc, receiveArea: ra}, timeout5) d r.json()[data] assert d, 发货前预估无数据 return {hour: d.get(Hour), delivery_date: d.get(DeliveryDate), delivery_time: d.get(DeliveryTime), path: d.get(PredictPath)} def estimate_transit(from_address, to_address, com, shipper): # 多源降级依次尝试取第一个成功 for fn in (lambda: call_ey(from_address, to_address, com), lambda: call_pre(shipper, *from_address.split(), *to_address.split())): try: return fn() except Exception: time.sleep(0.2) continue return {pre_cost_hour: None, delivery_date: None}踩坑清单预估 ≠ 承诺所有预计可达 / 预计用时都是算法估计大促双11 等揽收延迟会显著影响准确性别拿它做死 SLA。顺丰要手机尾号发货后预测顺丰单时senderPhone/receivePhone至少传一个否则查不到详细时效。编码别写错com易源与shipperCode按地址类是两套编码别混用顺丰一个是shunfeng、一个是SF。地址要全称起止地址用省市区全称省略写法容易匹配失败。刚下单没轨迹发货后预测依赖物流回传未揽收的单LatestStation等字段可能为空要有兜底。占位数据部分免费源只回演示数据集成前务必真发一次请求核对字段值。附录补充说明网上流传的同类接口还有不少快递100、快递鸟、顺丰开放平台、京东物流开放平台等本文未逐一实测部分需自备 key 或接入写法不完整此处不展开。各接口字段、返回示例均来自公开文档集成前请自行发请求验证并关注是否停服 / 是否收费。常见问题 FAQ问物流时效查询接口和快递单号查询接口有什么区别答时效查询预估还要多久 / 哪天到单号查询返回现在到哪了前者是预测后者是实时轨迹常配合使用。问没发货前能查预计送达时间吗答可以用发货前预估类接口传始发地与目的地 快递编码即可不需要单号。问返回的预计用时是小时还是天答看接口易源返回小时pre_cost_hour按地址类返回时效 具体日期以各家文档字段为准。问顺丰单为什么要传手机尾号答顺丰等公司对详细时效/轨迹有隐私验证senderPhone或receivePhone至少传一个才能查到。问预估送达时间准不准答它是基于历史数据的算法预测非承诺百递云类还返回probability置信度可据此判断可信区间。问为什么大促时预估不准答双11 等场景揽收延迟、爆仓实际发货时间晚于下单时间按当前时间的预估会失真建议结合真实揽收时间catchTime。问需要 appKey / key 吗答本文整理的主要是第三方平台接口需自备 key本文未做真实请求字段以官方文档为准。问com和shipperCode编码一样吗答不一样是两套编码顺丰在易源是shunfeng在按地址类是SF别混用。问地址该写省还是省市区答写省市区全称省略写法如深圳福田容易匹配失败。问发货后预测为什么最新轨迹是空的答刚下单未揽收或该单暂无物流回传LatestStation等字段会为空需做兜底。问能不能只按时长做次日达判断答能取预计用时小时数与 24 小时比较即可但注意它是预测值建议留余量。问本文里的接口都实测过吗答没有。本文基于公开文档与文章整理未对每个接口做真实请求实测集成前请自行验证。