技术博客
节假日查询:5 分钟接入,从注册到拿到全年放假安排

节假日查询:5 分钟接入,从注册到拿到全年放假安排

作者: 万维易源
2026-08-27
节假日查询快速接入Python示例免费接口
# 节假日查询:5 分钟接入,从注册到拿到全年放假安排 > 接口 894(接入点 894-4 假日列表) · 免费 · POST/GET · 返回 JSON · 适用人群:新注册用户、初级开发者 · 阅读时间:约 6 分钟 ## TL;DR - 节假日查询是**免费接口**,注册后拿 AppKey 即可调用,无需付费开通。 - 用 894-4 接入点按年份查询,一条请求就能拿到**全年放假 + 调休上班**清单。 - 三种语言(Python / Node.js / cURL)最小可运行示例,替换 `YOUR_APPKEY` 即可跑。 ## Why:这跟我有什么关系 做日历、排班、请假、考勤、证券休市提醒的应用,第一件事就是要知道"哪天放假、哪天要补班"。节假日查询把国务院每年发布的放假安排封装成 API,你不用自己维护一份容易过期的 Excel,直接调接口拿结构化数据。 - **对个人开发者**:免费、无需商务洽谈,注册即用。 - **对产品/团队**:数据是官方自营、每年随国务院文件更新,省去人工维护成本。 ## What:接口速览 | 项 | 说明 | |----|------| | 接口名 / apiCode | 节假日查询 / 894 | | 本次用到的接入点 | **894-4 假日列表**(按年查全年节假日) | | 接口地址 | `https://route.showapi.com/894-4?appKey=YOUR_APPKEY` | | 请求方式 | POST 或 GET | | 鉴权 | query 参数 `appKey` | | 计费 | 免费服务(注册后默认可免费调用,有使用档位限制) | | 更新频率 | 每年更新数据,一般在国务院发布文件后一周内更新 | | 集成能力 | MCP、`OpenAPI 3.0`(YAML/JSON)均已提供 | **请求参数(894-4)** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | year | String | 否 | 需要查询的年份,默认查询当年的节假日列表 | ## How:三步跑通第一次调用 ### 步骤 1:获取 AppKey 登录 ShowAPI 控制台 →「我的应用」创建应用,拿到 `appKey`。 ### 步骤 2:发请求(以查询 2026 年为例) **Python(requests)** ```python import requests url = "https://route.showapi.com/894-4" params = {"appKey": "YOUR_APPKEY", "year": "2026"} try: r = requests.post(url, params=params, timeout=10) r.raise_for_status() body = r.json() except requests.RequestException as e: print("请求失败:", e) raise # 关键:894-4 的 ret_code 是字符串 "0",统一转字符串判断,兼容数字型接入点 ret = str(body["showapi_res_body"]["ret_code"]) if ret != "0": print("接口返回失败:", body.get("showapi_res_error")) else: data = body["showapi_res_body"]["data"] for item in data: print(item["holiday"], item["begin"], "~", item["end"]) ``` **Node.js(fetch)** ```javascript const url = "https://route.showapi.com/894-4?appKey=YOUR_APPKEY&year=2026"; try { const res = await fetch(url, { method: "POST", timeout: 10000 }); const body = await res.json(); const ret = String(body.showapi_res_body.ret_code); if (ret !== "0") { console.error("接口返回失败:", body.showapi_res_error); } else { for (const item of body.showapi_res_body.data) { console.log(item.holiday, item.begin, "~", item.end); } } } catch (e) { console.error("请求失败:", e); } ``` **cURL** ```bash curl -X POST "https://route.showapi.com/894-4?appKey=YOUR_APPKEY" \ -H "content-type: application/x-www-form-urlencoded" \ -d "year=2026" ``` ### 步骤 3:解析并用起来 返回里的 `data` 是全年节假日数组,每条含 `begin`/`end`(起止日期)、`holiday`(名称)、`holiday_remark`(描述)、`inverse_days`(调修日,仅 2021 年后有值)。把这些画成日历就是你的放假安排。 ## 返回示例与解析 ```json { "showapi_res_code": 0, "showapi_res_error": "", "showapi_res_id": "ce135f6739294c63be0c021b76b6fbff", "showapi_res_body": { "ret_code": "0", "data": [ { "holiday": "劳动节", "holiday_remark": "5月1日(周四)至5日(周一)放假调休,共5天。4月27日(周日)上班。", "inverse_days": ["20250427"], "end": "20250505", "begin": "20250501" } ] } } ``` | 字段 | 类型 | 说明 | |------|------|------| | showapi_res_body.ret_code | String | "0" 表示成功(注意:这里是字符串) | | showapi_res_body.data | Object[] | 整年节假日列表 | | data[].begin / end | String | 节假日起止日期,如 `20250501` | | data[].holiday | String | 节假日名称,如「劳动节」 | | data[].holiday_remark | String | 节假日描述(含调休说明) | | data[].inverse_days | String[] | 调修日列表,仅 2021 年之后的数据有值 | > 完整字段与三接入点差异见 [节假日查询返回字段全解](https://www.showapi.com/guides/holiday-query-response-codes-894)。 ## 进阶 / 边界 - **ret_code 类型坑**:894-4 的 `ret_code` 是字符串 `"0"`,而 894-6/894-7 是数字 `0`。示例代码统一用 `str(...)` 判断,避免踩坑。 - **不传 year**:默认返回当年数据,适合「展示今年日历」场景。 - **免费但有档位限制**:注册后默认可免费调用,但设有使用档次限制防止滥用,具体档位以官方说明为准,不要在代码里硬编码额度。 ## FAQ **Q1:接口要钱吗?** A:节假日查询是免费服务,注册后默认可免费调用,仅设有使用档位限制(具体以官方档位说明为准)。 **Q2:year 不传会怎样?** A:默认查询当年的节假日列表。 **Q3:为什么我查不到 2027 年的数据?** A:次年数据通常在当年 10–11 月随国务院文件更新,未更新前查不到属正常。详见 [节假日查询:为什么只能查 2018 年起?](https://www.showapi.com/guides/holiday-query-data-range-894)。 **Q4:ret_code 返回 "0" 但 data 是空数组?** A:可能是该年份暂无节假日数据,或参数格式异常。先确认 `showapi_res_error` 是否为空,再核对 year 是否为合法年份字符串。 **Q5:可以用 GET 吗?** A:可以,接口支持 POST/GET,鉴权都走 `appKey` query 参数。 ## 相关能力 / 下一步阅读 - [节假日查询:某天到底放不放假?894-6 单日判定接入指南](https://www.showapi.com/guides/holiday-query-day-check-894) - [节假日查询:一键生成全年放假日历,894-4 假日列表实战](https://www.showapi.com/guides/holiday-query-year-list-894) - [节假日查询返回字段全解:ret_code 与 type(1/2/3) 及三接入点结构一文读懂](https://www.showapi.com/guides/holiday-query-response-codes-894) - **本系列共 12 篇**:查看[节假日查询指南总目录](https://www.showapi.com/guides/holiday-query-guides-894)