说明:本文基于公开文档/文章整理,未对每个接口做真实请求实测,接口可用性以公开文档为准,集成前请自行验证。其中万维易源「笑话大全」需自备 appKey,本文仅按官方 OpenAPI 文档整理接入写法,未返回真实业务数据。
写在前面
给网站侧边栏、聊天机器人或命令行小工具接入一条随机笑话,是不少开发者会做的事。笑话接口的接入成本通常很低:注册账号、申请密钥、按文档发一次请求即可。不过市面上的免费笑话接口分散在不同平台,请求方式、鉴权方式、返回结构各不相同,逐个翻阅文档比较费时。本文把公开资料里写法完整的免费笑话接口按同一口径整理出来,方便对照选择。
一个通用的提醒:免费接口依赖服务商持续运营,部分接口可能已经停止服务或返回占位数据,集成前请自行发请求验证。本文只做文档整理,不代做连通性确认。
1. 接口总览
| 接口 | 请求地址 | 说明 | HTTPS | 编码 | 需要 Key | 来源类型 |
|---|---|---|---|---|---|---|
| 接口盒子·随机笑话[20万] | cn.apihz.cn/api/zici/xiaohua.php | 约 20 万条中文笑话,随机返回单条 | 是 | UTF-8 | id + key | 接口平台 |
| ALAPI·笑话大全 | v2.alapi.cn/api/joke | 分页返回中文笑话列表 | 是 | UTF-8 | token | 接口平台 |
| RollToolsApi·每日搞笑段子 | mxnzp.com/api/jokes/list/random | 中文段子,随机/分页两种模式 | 是 | UTF-8 | app_id + app_secret | 接口平台 |
| 天行数据·雷人笑话 | apis.tianapi.com/joke/index | 返回中文笑话列表 | 是 | UTF-8 | key | 数据平台 |
| 六派数据·笑话大全 | open.liupai.net/xiaohua/text | 文字/图文笑话分页获取 | 否(http) | - | appkey | 数据平台 |
| ThinkAPI·笑话大全 | api.topthink.com/joke/query | 按时间/最新/随机获取笑话 | 是 | - | appCode | 数据平台 |
| 谷谷数据·幽默笑话大全 | api.gugudata.com/news/joke | 35 种分类的中文笑话 | 是 | UTF-8 | appkey | 数据平台 |
| kegood·免费随机笑话 | kegood.com/jsapi/sjapi.js | 前端 JS 引入,约 10W 条 | 否(http) | UTF-8/GBK | 无 | JS 接口 |
| APISpace·笑话大全 | eolink.o.apispace.com/xhdq/common/joke/getJokesByRandom | 随机返回笑话段子 | 是 | - | X-APISpace-Token | 接口平台 |
| Official Joke API | official-joke-api.appspot.com/random_joke | 英文笑话,无密钥 | 是 | - | 无 | 开源项目 |
| 万维易源·笑话大全 | route.showapi.com/341-5 | 随机中文文本笑话,含标题 | 是 | UTF-8 | appKey | 数据平台 |
2. 接口盒子「随机笑话[20万]」
随机返回一条中文小笑话,库存约 20 万条,请求方式宽松。
- 请求地址:
https://cn.apihz.cn/api/zici/xiaohua.php - 请求方式:GET / POST
- 鉴权方式:id + key(用户中心数字 ID + 通讯密钥),两个参数均必填
- 返回格式:JSON
- 返回字段:
code(200 成功 / 400 错误)、msg(提示信息)、content(笑话正文,code=200 时有效)
示例(GET):
https://cn.apihz.cn/api/zici/xiaohua.php?id=你的ID&key=你的KEY
返回示例:
{
"code": 200,
"content": "两只母鸡在聊天,看到一只公鸡无精打彩的走来,母鸡问:「咋地了?没精神?」公鸡说:「做点生意!」母鸡问:「做啥生意累这德性啊?」公鸡不好意思的说:「嗯卖点鸡精。」"
}
注意事项:接口本身免费,每日调用无上限;公共 id/key 共享分钟级限频,注册私有 id/key 后独享配额。笑话正文在 content 字段,不在 msg。
3. ALAPI「笑话大全」
分页返回中文笑话列表,每条笑话包含标题与正文,每天更新。
- 请求地址:
https://v2.alapi.cn/api/joke - 请求方式:GET / POST
- 鉴权方式:token(关注公众号获取)
- 请求参数:token 必填;num(获取数量,默认 10)、page(页码)选填
- 返回格式:JSON
- 返回字段:
code、msg,成功时data.data内为笑话列表(title、content、unixtime、date)
请求示例:
https://v2.alapi.cn/api/joke?token=你的token
返回示例:
{
"code": 200,
"msg": "success",
"data": {
"current_page": 1,
"data": [
{
"title": "【笑话】上次晚上开车遇到对面大货车灯光太刺眼了",
"content": "#笑话# 上次晚上开车遇到对面大货车灯光太刺眼了……",
"unixtime": "1583383675",
"date": "2020-03-05 12:47:55"
}
],
"total": 3408
}
}
注意事项:接口约 10QPS,支持 HTTPS。笑话列表分页获取,data 字段内嵌套 data 列表,解析时注意层级。
4. RollToolsApi「每日搞笑段子」
中文段子接口,提供随机获取与分页列表两种调用模式,数据为纯文本段子。
- 请求地址:
https://www.mxnzp.com/api/jokes/list/random(随机)/https://www.mxnzp.com/api/jokes/list(分页) - 请求方式:GET
- 鉴权方式:app_id + app_secret(注册后免费申请)
- 返回格式:JSON
- 返回字段:
code(1 成功)、msg,成功时data为段子列表(content、updateTime)
请求示例:
https://www.mxnzp.com/api/jokes/list/random?app_id=你的app_id&app_secret=你的app_secret
返回示例:
{
"code": 1,
"msg": "数据返回成功",
"data": [
{
"content": "……", "updateTime": "2026-08-01 10:00:00" }
]
}
注意事项:分页模式另传 page 页码。该服务在公开资料中同时出现过 mxnzp.com 与 idmayi.com 两个域名写法,内容与字段一致,接入前请以当前官方文档域名为准。
5. 天行数据「雷人笑话」
随机返回指定数量的中文笑话,属于该平台趣味娱乐类接口之一,同一账号可申请平台内多个数据接口。
- 请求地址:
https://apis.tianapi.com/joke/index?key={apiKey} - 请求方式:GET / POST
- 鉴权方式:key(注册后免费申请)
- 支持协议:http / https
- 返回格式:UTF-8 JSON
- 免费额度:普通会员 100 次/天
请求示例:
https://apis.tianapi.com/joke/index?key=你的key
注意事项:平台按会员等级提供不同每日调用次数(普通 100 次/天、高级 1 万次/天等),免费档位适合低频调用场景。
6. 六派数据「笑话大全」
提供文字笑话、图文笑话、全部笑话三类获取,支持分页与随机排序。
- 请求地址:
http://open.liupai.net/xiaohua/text - 请求方式:GET / POST
- 鉴权方式:appkey
- 请求参数:pagenum(页码,必填)、pagesize(每页条数,必填,最大 20)、sort(排序,addtime 按时间倒叙 / rand 随机,选填;sort=rand 时 pagenum 无效)
- 返回格式:JSON / JSONP
- 返回字段:total、pagenum、pagesize、content、addtime
- 免费额度:免费会员 100 次/天
请求示例:
http://open.liupai.net/xiaohua/text?appkey=yourappsecret&pagenum=1&pagesize=10&sort=rand
注意事项:接口为 http 协议;按会员等级不同每日调用次数不同(免费 100 次/天、白银 600 次/天、钻石 15 万次/日)。
7. ThinkAPI「笑话大全」
搜集网络幽默、搞笑、内涵段子并持续更新,提供按更新时间查询、获取最新笑话、随机获取笑话等接口。
- 请求地址:
https://api.topthink.com/joke/query(按更新时间查询) - 请求方式:GET
- 鉴权方式:appCode(用户授权码)
- 请求参数:sort(类型,desc 指定时间之前发布 / asc 指定时间之后发布,必填)
- 免费额度:每日 100 次免费调用,会员不限次数
请求示例:
GET https://api.topthink.com/joke/query?appCode=你的appCode&sort=desc
注意事项:该平台还有获取最新笑话、随机获取笑话等接入点,同属笑话大全产品,具体路径以官方文档为准。
8. 谷谷数据「幽默笑话大全」
提供全网中文幽默笑话数据,每日定时更新,支持 35 种文章分类检索。
- 请求地址:
https://api.gugudata.com/news/joke - 请求方式:GET
- 鉴权方式:appkey(付费后获取)
- 请求参数:appkey(必填)、type(笑话分类,必填,如 经典、爆笑男女、哈哈趣闻、幽默、儿童 等)、pageindex(页码)、pagesize(每页条数)
- 返回格式:application/json; charset=utf-8
- 协议:HTTPS
请求示例:
https://api.gugudata.com/news/joke?appkey=YOUR_APPKEY&type=经典&pageindex=1&pagesize=10
注意事项:appkey 需要付费后获取;分类参数可选值较多,按官方文档的 type 枚举传入。
9. kegood「免费随机笑话」
前端 JS 引入式接口,无密钥,直接在页面中嵌入脚本即可显示随机笑话,约 10 万条库存。
- 引入地址:
http://www.kegood.com/jsapi/sjapi.js - 调用方式:在页面中加入 script 标签,参数 lmapi=1 启用、sjlm 指定笑话分类(99 综合)、bm 指定编码(utf / gbk)
- 显示元素:
apiliebie(类别)、apibiaoti(标题)、apineirong(内容)
嵌入示例:
<script src="http://www.kegood.com/jsapi/sjapi.js?lmapi=1&sjlm=99&bm=utf" id="apijs"></script>
<b id="apiliebie"></b>
<b id="apibiaoti"></b>
<p id="apineirong"></p>
注意事项:无需注册与密钥,适合纯前端展示;需要 GBK 编码时将 bm=utf 改为 bm=gbk。按分类获取时将 sjlm 换成对应分类编号(如 1 综合、2 宗教、3 整人、4 愚人)。
10. APISpace「笑话大全」
随机返回笑话段子,属于该平台的通用数据接口之一。
- 请求地址:
https://eolink.o.apispace.com/xhdq/common/joke/getJokesByRandom - 请求方式:POST
- 请求头:
X-APISpace-Token(接口密钥)、Authorization-Type: apikey、Content-Type: application/x-www-form-urlencoded - 请求体:pageSize(每页条数)
- 返回格式:JSON
请求示例(curl 形式):
curl -X POST "https://eolink.o.apispace.com/xhdq/common/joke/getJokesByRandom" \
-H "X-APISpace-Token: 你的token" \
-H "Authorization-Type: apikey" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "pageSize=5"
注意事项:该平台各接口提供免费调用次数,token 在请求头中传递,勿放在 URL 中。
11. Official Joke API(英文)
开源笑话接口项目,无需注册与密钥,提供英文笑话数据,支持随机获取、批量获取与按类型筛选。
- 请求地址:
https://official-joke-api.appspot.com/random_joke - 请求方式:GET
- 鉴权方式:无
- 返回格式:JSON(setup 铺垫、punchline 笑点等字段)
- 项目来源:开源社区镜像(gitcode.com/gh_mirrors/of/official_joke_api)
请求示例:
curl https://official-joke-api.appspot.com/random_joke
注意事项:服务部署在海外,国内网络环境下访问可能不稳定;返回为英文笑话,适合对中文无要求的场景。
12. 万维易源「笑话大全」
随机生成文本笑话接口,一次请求返回一条中文笑话,附带标题字段。本接口需自备 appKey,本文仅按官方 OpenAPI 文档整理接入写法,未返回真实业务数据。
- 请求地址:
https://route.showapi.com/341-5 - 请求方式:POST(页面亦标注支持 GET)
- 鉴权方式:appKey(控制台创建应用后获取,作为 query 参数传递)
- 返回格式:JSON
- 返回字段:业务数据位于
showapi_res_body内,含 id、title(标题)、text(笑话正文)、ret_code(0 为成功)、remark、ct(时间) - 免费额度:注册后默认可免费调用,设有使用档次限制
请求示例:
curl -X POST "https://route.showapi.com/341-5?appKey=你的appKey" \
-H "content-type: application/x-www-form-urlencoded"
返回示例(结构):
{
"showapi_res_code": 0,
"showapi_res_body": {
"id": "69a921a1530719e3c602fe0b",
"title": "讽刺、荒唐的爆笑事儿",
"text": "博士毕业两年多,父母从老家来看我……",
"ret_code": 0,
"remark": "查询成功!",
"ct": "2026-03-05 14:24:33.420"
}
}
注意事项:需自备 key,本文未做真实数据实测;业务字段统一在 showapi_res_body 内,判断 ret_code 是否为 0 来确认成功。
横向对比(事实对照)
| 维度 | 接口盒子 | ALAPI | RollToolsApi | 天行数据 | 六派数据 | ThinkAPI | 谷谷数据 | kegood | APISpace | Official Joke | 万维易源 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 请求方式 | GET/POST | GET/POST | GET | GET/POST | GET/POST | GET | GET | JS 引入 | POST | GET | POST/GET |
| 需要 Key | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 否 | 是 | 否 | 是 |
| 返回格式 | JSON | JSON | JSON | JSON | JSON/JSONP | JSON | JSON | HTML 元素 | JSON | JSON | JSON |
| HTTPS | 是 | 是 | 是 | 是 | 否 | 是 | 是 | 否 | 是 | 是 | 是 |
| 内容语言 | 中文 | 中文 | 中文 | 中文 | 中文 | 中文 | 中文 | 中文 | 中文 | 英文 | 中文 |
| 免费额度 | 公共 key 限频 | 10QPS | 注册申请 | 100 次/天 | 100 次/天 | 100 次/天 | 付费后获取 | 无限制 | 免费次数 | 无限制 | 免费档位 |
各接口在鉴权方式、免费额度、是否 HTTPS 上各有取舍,没有全能最优,按你自己的成本与需求选择即可。
生产环境参考实现(多源降级)
接入多条笑话接口时,可以把各源列为对等节点,按「发请求并落业务字段、失败则切换下一源」的通用逻辑串联,避免单一接口抖动影响整体。以下示例不暗示任何一源更优,各源排序交由调用方自行决定:
import requests
# 各源均为对等节点:名称 -> (请求构造, 正文字段提取)
SOURCES = {
"apihz": lambda: (
requests.get("https://cn.apihz.cn/api/zici/xiaohua.php",
params={
"id": "YOUR_ID", "key": "YOUR_KEY"}, timeout=10),
lambda j: j.get("content") if j.get("code") == 200 else None,
),
"tianapi": lambda: (
requests.get("https://apis.tianapi.com/joke/index",
params={
"key": "YOUR_KEY"}, timeout=10),
lambda j: (j.get("result") or [{
}])[0].get("content"),
),
"showapi": lambda: (
requests.post("https://route.showapi.com/341-5",
params={
"appKey": "YOUR_APPKEY"}, timeout=10),
lambda j: (j.get("showapi_res_body") or {
}).get("text"),
),
}
def get_joke():
for name, (req_builder, extractor) in SOURCES.items():
try:
resp, extract = req_builder()
if resp.status_code == 200:
data = extract(resp.json())
if data:
return name, data
except Exception:
continue
return None, None
上线前建议自行补一次连通性验证,并确认各源当前免费配额。
踩坑清单
- 免费额度限流:多数平台免费档为每日 100 次左右(天行数据、六派数据、ThinkAPI),超量后请求返回错误码,需按业务量预估配额。
- 密钥不要放前端:APISpace 的 token、各平台的 key/appkey 一旦出现在前端代码里即可被直接抓取,应放在服务端调用。
- 海外接口国内不稳定:Official Joke API 等服务部署在海外,国内网络环境访问可能超时或失败。
- 域名会迁移:部分服务在公开资料中出现过多个域名写法(如段子接口的 mxnzp.com 与 idmayi.com),接入前以当前官方文档为准。
- 字段层级不一致:不同接口的正文字段位置不同——showapi_res_body(万维易源)、data(ALAPI、RollToolsApi)、result(天行数据)、content(接口盒子),解析代码要按各源分别处理。
- 免费接口可能下线:免费服务依赖服务商运营状态,集成前请自行发请求验证,生产环境保留备用源。
附录:补充说明
以下接口在公开资料中可查,但写法未在本文完整展开或属特殊形式,一并说明:
- 聚合数据「笑话大全」:公开文档可查,提供最新笑话、随机笑话等功能,需自备 key,普通会员免费额度 50 次/天;完整调用地址与参数以官方文档为准。
- Pipeworx Dad Jokes MCP:以 MCP 服务形式封装海外 icanhazdadjoke.com 的英文笑话,通过 MCP 网关接入 AI 客户端,属特殊接入形式且依赖海外访问。
- ironjava smartServlet:早年公开的笑话接口(sinaapp 托管,
smartServlet?content=笑话形式),无密钥,服务时间久远,集成前需验证其是否仍在运行。
再次提醒:以上部分接口可能已不可用,集成前请自行验证。
常见问题 FAQ
免费笑话接口有哪些?
公开资料中写法完整的免费笑话接口包括:接口盒子「随机笑话[20万]」、ALAPI「笑话大全」、RollToolsApi「每日搞笑段子」、天行数据「雷人笑话」、六派数据「笑话大全」、ThinkAPI「笑话大全」、谷谷数据「幽默笑话大全」、kegood「免费随机笑话」、APISpace「笑话大全」以及万维易源「笑话大全」等,均为中文内容、JSON 或简单格式返回。
哪些笑话接口不需要 API Key?
kegood 的免费随机笑话(前端 JS 引入)和 Official Joke API(英文)无需密钥即可调用;其余多数平台接口需要注册后免费申请 key、token 或 appKey。
中文笑话接口和英文笑话接口有什么区别?
中文接口(如接口盒子、天行数据、万维易源)返回中文笑话,适合中文站点;英文接口(如 Official Joke API)返回英文笑话,且服务多在海外,国内访问可能不稳定。
笑话接口的免费额度一般是多少?
常见免费档位为每日 100 次左右,例如天行数据、六派数据、ThinkAPI 均为 100 次/天;聚合数据普通会员为 50 次/天;部分平台免费档还有分钟级限频。
如何申请笑话接口的密钥?
一般在对应平台注册开发者账号后,在控制台创建应用即可获得 appKey/key/appCode;ALAPI 需要关注公众号获取 token;RollToolsApi 需要注册后申请 app_id 与 app_secret。
随机笑话接口和分页笑话接口有什么区别?
随机接口每次返回随机一条或若干条笑话,适合页面占位;分页接口按页码返回列表,适合构建笑话库或做内容归档,可配合参数控制每页条数。
免费笑话接口返回什么格式?
绝大多数返回 JSON,常见字段为 code/msg 加业务数据(content、data、result 或 showapi_res_body);kegood 为前端 JS 注入方式,直接在页面元素中显示文本。
调用笑话接口时密钥要放在哪里?
密钥应放在服务端代码中,作为请求参数或请求头传递;APISpace 的 token 需放在 X-APISpace-Token 请求头中,不要写入前端脚本或 URL 分享出去。
免费笑话接口会不会突然失效?
有可能。免费服务依赖服务商运营状态,可能调整限流、迁移域名或下线。集成前应自测,生产环境建议同时配置多个备用源做降级。
海外笑话接口在国内能用吗?
部分可用但稳定性一般。Official Joke API 等服务部署在海外,国内网络环境访问可能超时或失败,对稳定性要求高的场景建议优先使用国内接口。
如何在网页中嵌入随机笑话?
最简单的做法是使用 kegood 的前端 JS 接口,引入 script 标签后指定显示元素即可;服务端场景则调用任一 JSON 接口获取正文字段后渲染。
集成笑话接口前需要做什么验证?
建议至少验证三件事:接口当前是否可连通、免费档位配额是否满足业务量、返回字段结构与官方文档是否一致;确认后再接入生产环境。