
适用场景全网热搜聚合API适用于需要实时掌握多平台舆论热点的场景。例如舆情监控系统自动采集微博、知乎、B站等平台的热搜标题与热度值辅助分析舆论走向。内容运营工具运营人员每天通过API获取各平台Top话题据此策划选题或制作短视频脚本。金融/市场情报通过热搜关键词感知社会情绪辅助投资或产品决策。个人开发练习学习API调用、数据解析与缓存策略的完美示例。接口能力边界特性说明支持平台weibo微博热搜、zhihu知乎热榜、bilibiliB站日榜、tieba百度贴吧热议请求方式POST请求地址https://v1.apizero.cn/api/hot-searchQPS限制3次/秒超出会返回429状态码每平台条数限制最大50条参数limit控制超时可调通过timeout参数指定单个平台请求超时秒鉴权方式HTTP HeaderAuthorization值填写API Key鉴权与请求头调用该API必须在请求头中携带Authorization字段值为你的API密钥。推荐使用HTTPS传输以避免密钥泄露。示例Header:Authorization: your-api-key-here Content-Type: application/json注意部分老版本的curl示例使用X-API-Key头但当前文档要求使用Authorization建议以官方文档为准https://apizero.cn/aidocs/hot-search。请求参数详解请求体为JSON对象字段如下参数名必填类型默认值说明platform否stringall目标平台支持all全部、weibo、zhihu、bilibili、tieba多平台用逗号分隔例如weibo,zhihulimit否number10每个平台返回的热搜条数取值范围1~50timeout否number15请求每一个平台时的超时秒数防止某个平台响应慢导致整体超时示例请求体{ platform: weibo,zhihu, limit: 15, timeout: 10 }curl 调试示例以下curl命令演示了直接调用API获取全部平台各10条热搜curl -sS -X POST \ -H Authorization: YOUR_API_KEY \ -H Content-Type: application/json \ -d {platform:all,limit:10,timeout:15} \ https://v1.apizero.cn/api/hot-search将YOUR_API_KEY替换为你的真实密钥即可。如果只想取B站和贴吧将platform改为bilibili,tieba。响应示例截取部分{ code: 0, msg: 成功, request_id: req_abc123, data: { generated_at: 2026-05-08T13:00:0008:00, requested_platforms: [weibo,zhihu,bilibili,tieba], limit_per_platform: 10, total_items: 40, platforms: { weibo: { name: 微博热搜, status: success, count: 10, items: [ {rank: 1, title: 热搜标题示例, hot: 5234567} ] }, zhihu: { name: 知乎热榜, status: success, count: 10, items: [ {rank: 1, title: 知乎热榜标题, hot: 987654} ] } }, failed_platforms: {} } }返回数据结构解读顶层字段code整型0表示成功非0表示出错。msg描述信息。request_id请求的唯一标识便于排查问题。data核心数据对象。data对象generated_at数据生成时间戳ISO 8601格式含时区。requested_platforms实际被请求的平台列表数组。limit_per_platform每个平台返回的条数。total_items所有平台返回的总条数。platforms键为平台slug值为该平台的数据对象。failed_platforms返回失败的平台及其错误信息正常时空对象。每个平台的数据对象name平台中文名称如“微博热搜”。status该平台请求状态success或failed。count实际返回的条数。items热搜条目数组每个条目包含rank排行榜位置数字1开始。title热搜标题字符串。hot热度值字符串可能为数字或“爆”等文本。注意不同平台的热度值单位不同微博为阅读量/讨论量数值知乎为热度数值B站为播放量贴吧为回复数请根据实际场景处理。常见错误码及处理状态码错误场景排查方向401Authorization缺失或无效检查API Key是否正确是否在Header中正确传递400请求体JSON格式错误或参数非法检查limit是否超过50platform值是否合法429请求频率超过QPS限制3次/秒加入限流或等待后重试500服务端内部错误重试若持续失败联系技术支持504某个平台请求超时增大timeout参数或排除有问题的平台示例错误响应体{ code: 401, msg: 授权失败请检查Authorization, request_id: req_err_001 }工程化封装建议1. Python SDK 封装import requests import time from typing import Optional class HotSearchClient: def __init__(self, api_key: str, base_url: str https://v1.apizero.cn/api/hot-search): self.headers { Authorization: api_key, Content-Type: application/json } self.url base_url def get_hot(self, platform: str all, limit: int 10, timeout: int 15, max_retries: int 3): payload { platform: platform, limit: limit, timeout: timeout } for attempt in range(max_retries): try: resp requests.post( self.url, jsonpayload, headersself.headers, timeout30 # 全局超时大于平台超时 ) resp.raise_for_status() data resp.json() if data.get(code) 0: return data[data] else: raise Exception(fAPI error: {data.get(msg)}) except (requests.exceptions.RequestException, KeyError) as e: if attempt max_retries - 1: raise time.sleep(2 ** attempt) # 指数退避 # 使用示例 client HotSearchClient(api_keysk-xxx) result client.get_hot(platformweibo, limit20) for item in result[platforms][weibo][items]: print(f#{item[rank]} {item[title]} 热度:{item[hot]})2. Java (OkHttp) 封装import okhttp3.*; import org.json.JSONObject; import java.io.IOException; public class HotSearchClient { private final OkHttpClient client; private final String apiKey; private static final String URL https://v1.apizero.cn/api/hot-search; public HotSearchClient(String apiKey) { this.apiKey apiKey; this.client new OkHttpClient.Builder() .connectTimeout(30, java.util.concurrent.TimeUnit.SECONDS) .readTimeout(30, java.util.concurrent.TimeUnit.SECONDS) .build(); } public JSONObject getHot(String platform, int limit, int timeout) throws IOException { JSONObject payload new JSONObject(); payload.put(platform, platform); payload.put(limit, limit); payload.put(timeout, timeout); RequestBody body RequestBody.create( MediaType.parse(application/json; charsetutf-8), payload.toString() ); Request request new Request.Builder() .url(URL) .addHeader(Authorization, apiKey) .post(body) .build(); try (Response response client.newCall(request).execute()) { if (!response.isSuccessful()) { throw new IOException(Unexpected code response); } String responseBody response.body().string(); return new JSONObject(responseBody); } } }3. 错误重试与限频处理限频保护在客户端维护一个请求计数使用Token Bucket或简单休眠time.sleep(0.34)来保证每秒不超过3次。指数退避遇到429或5xx错误时等待1s、2s、4s后重试最多重试3次。熔断机制如果连续5次请求失败临时切断该API调用并降级返回缓存数据。4. 数据缓存策略热搜数据变化较快通常5~15分钟更新一次不建议缓存太久。推荐的内存缓存实现import time from functools import lru_cache class TimedCache: def __init__(self, ttl_seconds300): self.cache {} self.ttl ttl_seconds def get(self, key): if key in self.cache: data, timestamp self.cache[key] if time.time() - timestamp self.ttl: return data return None def set(self, key, data): self.cache[key] (data, time.time())使用缓存时机当请求失败且缓存有效时返回缓存数据正常请求成功后更新缓存。5. 异步与连接池对于高并发场景如爬虫推荐使用aiohttp做异步调用并复用TCP连接池。Python示例import aiohttp import asyncio class AsyncHotSearch: def __init__(self, api_key, sessionNone): self.headers {Authorization: api_key, Content-Type: application/json} self.url https://v1.apizero.cn/api/hot-search self.session session async def fetch(self, platformall, limit10): payload {platform: platform, limit: limit} if self.session is None: async with aiohttp.ClientSession() as session: async with session.post(self.url, jsonpayload, headersself.headers) as resp: return await resp.json() else: async with self.session.post(self.url, jsonpayload, headersself.headers) as resp: return await resp.json()工程注意事项总结API Key安全不要硬编码在代码中使用环境变量或配置中心。限流适配在调用前计算剩余配额避免被限频。超时隔离单个平台超时应独立处理避免拖垮整体请求。降级方案当API完全不可用时准备静态数据或历史快照。日志记录记录request_id和请求参数便于追踪问题。参考文档全网热搜聚合API官方文档https://apizero.cn/aidocs/hot-search原始Markdown文档https://apizero.cn/aidocs/hot-search/raw.md本文档基于API事实卡编写所有参数和示例均以官方文档为准。